Serialization এবং Deserialization Techniques

Computer Programming - ক্লোজার (Clojure) Input/Output (I/O in Clojure) |
263
263

Serialization এবং Deserialization Techniques in Clojure

Serialization এবং Deserialization হল দুটি গুরুত্বপূর্ণ কনসেপ্ট যা ডেটা স্টোরেজ, নেটওয়ার্কিং এবং অন্যান্য সিস্টেমে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়।

  • Serialization হল একটি প্রক্রিয়া যা একটি অবজেক্ট বা ডেটা কাঠামোকে একটি স্ট্রিং বা বাইনারি ফর্ম্যাটে রূপান্তরিত করে, যাতে তা ফাইল বা নেটওয়ার্কে সংরক্ষণ বা পাঠানো যায়।
  • Deserialization হল সেই একই অবজেক্ট বা ডেটা কাঠামোকে আবার আগের আকারে রূপান্তরিত করা।

Clojure-এ Serialization এবং Deserialization

Clojure প্রোগ্রামিং ভাষায় serialization এবং deserialization করার জন্য সাধারণত EDN (Extensible Data Notation), JSON, XML, এবং Java Serialization ব্যবহৃত হয়। Clojure-এর মধ্যে মেটাডেটা স্টোরেজের জন্য EDN প্রায়শই ব্যবহৃত হয়, কারণ এটি একটি নির্ভরযোগ্য, পাঠযোগ্য, এবং সহজে বিশ্লেষণযোগ্য ডেটা ফরম্যাট।

Clojure-এ serialization এবং deserialization করার জন্য বেশ কিছু লাইব্রেরি পাওয়া যায়, যেমন clojure.edn, cheshire, এবং java.io


১. EDN (Extensible Data Notation)

EDN একটি Clojure-native ফরম্যাট যা ক্লোজারের ডেটা স্ট্রাকচারকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে ব্যবহৃত হয়। এটি একটি পাঠযোগ্য এবং human-friendly ফরম্যাট যা ক্লোজারের জন্য ডিজাইন করা হয়েছে।

EDN Serialization

Clojure এর clojure.edn লাইব্রেরি দিয়ে EDN ডেটাকে সিরিয়ালাইজ করা যায়।

(require '[clojure.edn :as edn])

(def my-map {:name "Alice" :age 30 :city "New York"})

; EDN সিরিয়ালাইজেশন
(def serialized (pr-str my-map))  ; pr-str is used to serialize to EDN format
(println serialized)

এখানে, pr-str ফাংশনটি my-map কে EDN ফরম্যাটে রূপান্তরিত করে একটি স্ট্রিং আউটপুট দেয়।

EDN Deserialization

EDN ডেটা ডেসিরিয়ালাইজ করার জন্য read-string ব্যবহার করা হয়।

; EDN ডেসিরিয়ালাইজেশন
(def deserialized (edn/read-string serialized))
(println deserialized)  ; আউটপুট: {:name "Alice", :age 30, :city "New York"}

এখানে, read-string ফাংশনটি সিরিয়ালাইজড EDN স্ট্রিংটিকে আবার Clojure ডেটা কাঠামো (যেমন, ম্যাপ) তে রূপান্তরিত করে।


২. JSON Serialization এবং Deserialization

JSON হল একটি জনপ্রিয় ডেটা ফরম্যাট যা ক্লোজার সহ বিভিন্ন প্রোগ্রামিং ভাষায় সমর্থিত। Clojure-এ JSON সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য cheshire লাইব্রেরি ব্যবহার করা হয়।

JSON Serialization

(require '[cheshire.core :as cheshire])

(def my-map {:name "Alice" :age 30 :city "New York"})

; JSON সিরিয়ালাইজেশন
(def serialized-json (cheshire/generate-string my-map))
(println serialized-json)  ; আউটপুট: "{\"name\":\"Alice\",\"age\":30,\"city\":\"New York\"}"

এখানে, cheshire/generate-string ফাংশনটি my-map কে JSON ফরম্যাটে রূপান্তরিত করে।

JSON Deserialization

; JSON ডেসিরিয়ালাইজেশন
(def deserialized-json (cheshire/parse-string serialized-json true))
(println deserialized-json)  ; আউটপুট: {:name "Alice", :age 30, :city "New York"}

এখানে, cheshire/parse-string ফাংশনটি JSON স্ট্রিংটিকে আবার Clojure ডেটা কাঠামো (যেমন, ম্যাপ) তে রূপান্তরিত করে।


৩. Java Serialization

যেহেতু ক্লোজার JVM-ভিত্তিক, তাই Clojure Java Serialization API ব্যবহার করতে পারে। Java Serialization এর মাধ্যমে অবজেক্টগুলি বাইনারি ফরম্যাটে রূপান্তরিত হয় এবং পুনরায় পুনঃপ্রাপ্ত (deserialize) করা যায়।

Java Serialization

(import '(java.io ByteArrayOutputStream ObjectOutputStream))

(def my-object {:name "Alice" :age 30})

; Java Serialization
(def baos (ByteArrayOutputStream.))
(def oos (ObjectOutputStream. baos))

(.writeObject oos my-object)
(.flush oos)
(def serialized-java (bytes baos))

এখানে, Java এর ObjectOutputStream ব্যবহার করে my-object অবজেক্টটি বাইনারি ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।

Java Deserialization

(import '(java.io ByteArrayInputStream ObjectInputStream))

; Java Deserialization
(def bais (ByteArrayInputStream. serialized-java))
(def ois (ObjectInputStream. bais))

(def deserialized-java (.readObject ois))
(println deserialized-java)  ; আউটপুট: {:name "Alice", :age 30}

এখানে, ObjectInputStream ব্যবহার করে বাইনারি ডেটা থেকে অবজেক্ট পুনরুদ্ধার করা হয়েছে।


৪. Primitives and Binary Data Serialization

ক্লোজার প্রিমিটিভ ডেটা (যেমন, ইন্টিজার, ডাবল, বুলিয়ান) এবং বাইনারি ডেটা (যেমন, ইমেজ বা ফাইল) সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করার জন্য Java I/O লাইব্রেরি ব্যবহার করা যেতে পারে।

উদাহরণ: বাইনারি ডেটার সিরিয়ালাইজেশন

(import '(java.io ByteArrayOutputStream ObjectOutputStream))

(def my-data "Hello, Clojure!")

; বাইনারি সিরিয়ালাইজেশন
(def baos (ByteArrayOutputStream.))
(def oos (ObjectOutputStream. baos))
(.writeObject oos my-data)
(.flush oos)
(def serialized-data (baos.toByteArray))

এখানে, একটি সাধারণ স্ট্রিং "Hello, Clojure!" বাইনারি ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।


সারসংক্ষেপ

Serialization এবং Deserialization হল ডেটা রূপান্তর ও স্থানান্তর পদ্ধতি, যা ডেটাকে সেভ বা ট্রান্সফার করতে সাহায্য করে। Clojure-এ বিভিন্ন ধরনের সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রযুক্তি রয়েছে, যেমন:

ফরম্যাটসিরিয়ালাইজেশন ফাংশনডেসিরিয়ালাইজেশন ফাংশন
EDNpr-strclojure.edn/read-string
JSONcheshire/generate-stringcheshire/parse-string
JavaObjectOutputStream.writeObjectObjectInputStream.readObject

এগুলি Clojure ডেটা কাঠামোকে বিভিন্ন ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয় এবং ক্লোজার প্রোগ্রামিংয়ে ডেটা ট্রান্সফার ও স্টোরেজের জন্য অপরিহার্য টুল।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion