> For the complete documentation index, see [llms.txt](https://mominur.gitbook.io/mominur-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mominur.gitbook.io/mominur-notes/random-topics/data-serialization.md).

# Data Serialization

**Data Serialization** হলো এমন একটি প্রক্রিয়া যেখানে কোনো প্রোগ্রামের **object** বা **data structure**-কে এমন একটি **transferable format** (যেমন JSON, XML, Binary ইত্যাদি) এ রূপান্তর করা হয় যাতে সেটি সহজে **store**, **transmit** এবং পরবর্তীতে **reconstruct (deserialize)** করা যায়।

***

### কেন Data Serialization প্রয়োজন?

1. **Data Storage** → কোনো প্রোগ্রামের **object** ফাইল আকারে সংরক্ষণ করার জন্য। যেমন: Machine Learning মডেল save করা।
2. **Communication** → একটি প্রোগ্রাম থেকে অন্য প্রোগ্রামে বা এক সিস্টেম থেকে অন্য সিস্টেমে **network** এর মাধ্যমে ডেটা পাঠানোর জন্য।
3. **Caching** → দ্রুত ডেটা access করার জন্য **cache system** (যেমন Redis, Memcached)-এ ডেটা রাখার ক্ষেত্রে।
4. **Interoperability** → বিভিন্ন প্রোগ্রামিং ভাষা বা প্ল্যাটফর্মের মধ্যে ডেটা বিনিময়ের জন্য।

***

### Data Serialization এর সাধারণ Format

#### 1. **Text-based Format (Human-readable)**

* সহজে পড়া যায় কিন্তু তুলনামূলকভাবে বড় হয়।
* উদাহরণ: **JSON, XML, YAML, CSV**

#### 2. **Binary Format (Compact & Efficient)**

* দ্রুত process হয়, space কম লাগে, কিন্তু মানুষ সরাসরি পড়তে পারে না।
* উদাহরণ: **Protocol Buffers (Protobuf), Avro, Thrift, Pickle (Python)**

***

### কাজের ধাপ

1. **Serialization** → Object/Data → Transferable Format এ রূপান্তর
2. **Transmission/Storage** → Serialized Data ফাইল বা নেটওয়ার্কে পাঠানো
3. **Deserialization** → Transferable Format → Original Object এ রূপান্তর

***

### Python এ একটি উদাহরণ (JSON Serialization)

{% code lineNumbers="true" %}

```python
import json

# Original object (dictionary)
person = {"name": "Alice", "age": 25, "city": "New York"}

# Serialization (Python object → JSON string)
serialized_data = json.dumps(person)
print(serialized_data)  
# Output: {"name": "Alice", "age": 25, "city": "New York"}

# Deserialization (JSON string → Python object)
deserialized_data = json.loads(serialized_data)
print(deserialized_data["name"])  # Alice
```

{% endcode %}

***

* **Serialization** = Object → Transferable Format
* **Deserialization** = Transferable Format → Object
* এটি **data portability, communication, storage এবং efficiency**-এর জন্য অত্যন্ত গুরুত্বপূর্ণ।
