Serialization এবং Custom Storage দুটি গুরুত্বপূর্ণ ফিচার যা TinyDB-তে ডেটা স্টোরেজ এবং ডেটার গঠনকে আরও কার্যকরভাবে পরিচালনা করতে সাহায্য করে। Serialization ডেটাকে একটি নির্দিষ্ট ফর্ম্যাটে রূপান্তরিত করার প্রক্রিয়া এবং Custom Storage ব্যবহারকারীকে তাদের নিজস্ব স্টোরেজ মেকানিজমের মাধ্যমে ডেটা সংরক্ষণ করার সুযোগ দেয়।
Serialization
Serialization হচ্ছে ডেটাকে এমন একটি ফরম্যাটে রূপান্তরিত করার প্রক্রিয়া, যা পরে পুনরায় সহজে ডি-সিরিয়ালাইজ (অথবা পড়া) করা যায়। TinyDB এ, Serialization এর মাধ্যমে ডেটা স্টোর করার আগে তার অবস্থা সঠিক ফর্ম্যাটে রূপান্তরিত করা হয়, যেমন JSON ফাইলের জন্য।
TinyDB ডিফল্টভাবে JSON ফাইল ব্যবহার করে ডেটা সংরক্ষণ করে। এটি json মডিউল ব্যবহার করে ডেটার serialization এবং deserialization (পুনঃপ্রস্তুতকরণ) সম্পাদন করে।
TinyDB-তে Serialization কিভাবে কাজ করে?
TinyDB ডিফল্টভাবে ডেটাকে JSON ফরম্যাটে সেভ করে এবং Python object হিসাবে পুনরায় লোড করে। Serialization পদ্ধতি ব্যবহারকারীর জন্য কাস্টম ফরম্যাটে ডেটা সংরক্ষণের সুযোগও দেয়।
Custom Storage
TinyDB ব্যবহারকারীদের কাস্টম স্টোরেজ ব্যাকএন্ড ব্যবহার করার সুযোগ দেয়, যাতে তারা তাদের নিজের মনের মতো স্টোরেজ সিস্টেম তৈরি করতে পারেন। আপনি ডিফল্ট JSON ফাইল ব্যবহার না করে কাস্টম স্টোরেজ সিস্টেম তৈরি করতে পারেন, যেমন একটি SQLite ডাটাবেস বা কোনো অন্য ফাইল সিস্টেমে ডেটা সংরক্ষণ।
Custom Storage Setup
TinyDB-তে কাস্টম স্টোরেজ সেটআপ করতে Storage ক্লাস এবং JSONStorage মডিউল ব্যবহার করা যায়, অথবা আপনি নিজে একটি কাস্টম স্টোরেজ তৈরি করতে পারেন।
১. Custom Serialization
TinyDB এর TinyDB ক্লাসের storage প্যারামিটার দ্বারা আপনি কাস্টম স্টোরেজ ব্যবহারের জন্য TinyDB কনফিগার করতে পারেন। এখানে একটি উদাহরণ দেয়া হলো যেখানে একটি কাস্টম serializer ব্যবহার করা হয়েছে।
from tinydb import TinyDB, Query
import json
# কাস্টম serializer তৈরি
def custom_serializer(obj):
if isinstance(obj, set):
return list(obj)
raise TypeError(f"Type {type(obj)} not serializable")
# কাস্টম serializer ব্যবহার করে ডেটাবেস তৈরি
db = TinyDB('db.json', storage=JSONStorage, indent=4, separators=(',', ': '), serializer=custom_serializer)
# ডেটা ইনসার্ট
db.insert({'name': 'Aziz', 'skills': {'Python', 'Django'}})
# ডেটা দেখতে
print(db.all())
এই উদাহরণে, custom_serializer() ফাংশনটি সেট ডেটা টাইপকে list-এ রূপান্তরিত করছে কারণ JSON ফরম্যাট সেটকে সমর্থন করে না।
২. Custom Storage (Custom Backends)
TinyDB একটি কাস্টম স্টোরেজ মেকানিজমও সমর্থন করে, যার মাধ্যমে আপনি ডেটা অন্য কোনো ফরম্যাটে বা নিজস্ব স্টোরেজ সিস্টেমে সংরক্ষণ করতে পারেন। এতে আপনি নিজের স্টোরেজ ক্লাস তৈরি করতে পারেন যা ডেটা রিড এবং রাইট করার জন্য পছন্দসই স্টোরেজ ব্যাকএন্ড ব্যবহার করে।
কাস্টম স্টোরেজ ক্লাস তৈরি
from tinydb import TinyDB, Query
from tinydb.storages import Storage
import os
class CustomStorage(Storage):
def __init__(self, path):
self.path = path
def read(self):
"""Custom read logic"""
if os.path.exists(self.path):
with open(self.path, 'r') as file:
return json.load(file)
return []
def write(self, data):
"""Custom write logic"""
with open(self.path, 'w') as file:
json.dump(data, file)
# কাস্টম স্টোরেজ ব্যাকএন্ড ব্যবহার
db = TinyDB('custom_db.json', storage=CustomStorage)
# ডেটা ইনসার্ট
db.insert({'name': 'Rahim', 'age': 30})
# ডেটা দেখতে
print(db.all())
এখানে CustomStorage ক্লাসটি একটি কাস্টম স্টোরেজ ব্যাকএন্ড তৈরি করেছে, যা JSON ফাইলের মাধ্যমে ডেটা সংরক্ষণ এবং রিড করার কাজ করছে।
সারাংশ
- Serialization: TinyDB ডিফল্টভাবে JSON ফরম্যাটে ডেটা সংরক্ষণ করে। আপনি কাস্টম সেরিয়ালাইজার তৈরি করে ডেটার গঠন পরিবর্তন করতে পারেন।
- Custom Storage: TinyDB ব্যবহারকারীদের কাস্টম স্টোরেজ ব্যবহারের সুযোগ দেয়, যেখানে আপনি আপনার নিজস্ব স্টোরেজ ক্লাস তৈরি করে নির্দিষ্ট ফরম্যাটে ডেটা সংরক্ষণ এবং রিড করতে পারেন।
এই ফিচারগুলোর মাধ্যমে, TinyDB আরও নমনীয় এবং শক্তিশালী হয়ে ওঠে, যা ব্যবহারকারীদের তাদের প্রয়োজনে কাস্টম স্টোরেজ এবং ডেটা ফরম্যাট সংরক্ষণ করতে সাহায্য করে।
TinyDB ডেটা সংরক্ষণের জন্য JSON ফাইল ব্যবহার করে, তবে কখনো কখনো ডেটা সঠিকভাবে সংরক্ষণ করা বা পুনরুদ্ধার করার জন্য Custom Serialization প্রয়োজন হতে পারে। এটি বিশেষত যখন আপনি কোনো কাস্টম অবজেক্ট বা ডেটা ফর্ম্যাট ব্যবহার করতে চান, তখন কাজে আসে।
TinyDB-তে Custom Data Serialization করতে আমরা TinyDB এর JSONStorage ক্লাসের custom serializer এবং deserializer ব্যবহার করতে পারি।
Custom Data Serialization কিভাবে কাজ করে
TinyDB-এর Custom Serialization ব্যবহার করতে হলে আপনাকে দুটি কাজ করতে হবে:
- Custom Serializer: আপনার ডেটার কাস্টম ফরম্যাটে রূপান্তর করা।
- Custom Deserializer: সেভ করা ডেটাকে পুনরুদ্ধার করার সময় সেই কাস্টম ফরম্যাট থেকে ফিরে আসা।
উদাহরণ: কাস্টম Serializer এবং Deserializer
ধরা যাক, আমাদের একটি কাস্টম ডেটা টাইপ Person আছে এবং আমরা চাই যে এটি TinyDB-তে JSON ফাইলে সংরক্ষণ করার আগে কিছু কাস্টম ফরম্যাটে রূপান্তরিত হোক এবং পড়ার সময় আবার সেই কাস্টম ফরম্যাট থেকে মূল অবজেক্টে ফিরিয়ে আনা হোক।
১. Custom Serializer তৈরি করা
প্রথমে, Person ক্লাসটি তৈরি করুন এবং তার জন্য একটি কাস্টম serializer তৈরি করুন:
from tinydb import TinyDB, Query
import json
# কাস্টম অবজেক্ট: Person
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person({self.name}, {self.age})"
# Custom serializer
def person_serializer(obj):
if isinstance(obj, Person):
return {'__type__': 'Person', 'name': obj.name, 'age': obj.age}
raise TypeError(f"Type {type(obj)} not serializable")
# Custom deserializer
def person_deserializer(obj):
if '__type__' in obj and obj['__type__'] == 'Person':
return Person(obj['name'], obj['age'])
return obj
person_serializerফাংশনটিPersonঅবজেক্টকে একটি dictionary তে রূপান্তরিত করবে যাতেnameএবংageফিল্ড থাকবে, এবং__type__নামক একটি স্পেশাল কিও থাকবে যা জানাবে এটি একটি Person অবজেক্ট।person_deserializerফাংশনটি JSON ডেটা থেকে Person অবজেক্ট পুনরুদ্ধার করবে।
২. TinyDB-তে Custom Serialization ব্যবহার করা
এখন, TinyDB-এ এই কাস্টম serializer এবং deserializer ব্যবহার করতে:
# TinyDB এ Custom Serializer এবং Deserializer ব্যবহার করা
db = TinyDB('database.json', storage=TinyDB.storage.JSONStorage)
# JSONStorage তে কাস্টম serializer এবং deserializer যোগ করা
db.serializer = person_serializer
db.deserializer = person_deserializer
# Person অবজেক্ট তৈরি করা
person1 = Person("Rahim", 30)
person2 = Person("Karim", 25)
# টেবিল তৈরি
people_table = db.table('people')
# Person অবজেক্ট ডাটাবেসে ইনসার্ট করা
people_table.insert(person1)
people_table.insert(person2)
# ডেটা রিট্রাইভ করা
retrieved_person = people_table.all()
print("Retrieved Data:", retrieved_person)
কাস্টম Serialization এর সুবিধা
- অবজেক্ট সংরক্ষণ: আপনি যদি কাস্টম অবজেক্ট বা ডেটা স্ট্রাকচার ব্যবহার করেন তবে তা সরাসরি JSON এ সংরক্ষণ করতে পারেন।
- সুবিধাজনক: ডেটা পুনরুদ্ধারের সময় আপনি সহজেই কাস্টম ডেটা স্ট্রাকচার পেতে পারেন, যা আরও সহজে ব্যবহারযোগ্য এবং টেবিলের মধ্যে সঠিকভাবে মাপা যাবে।
- ইনফরমেশন রিটেনশন: JSON ফাইলে সঠিকভাবে অবজেক্ট স্টোর করা হলে, তা পুনরুদ্ধার এবং ব্যবহার করা সহজ হবে।
সারাংশ
TinyDB তে Custom Data Serialization ব্যবহার করার মাধ্যমে আপনি কাস্টম অবজেক্ট বা ডেটা স্ট্রাকচারকে JSON ফাইলের মাধ্যমে সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন। এই পদ্ধতি আপনাকে ডেটার কাস্টম ফরম্যাটে পরিচালনা করতে সহায়ক হয়, যা ডেটাবেস ব্যবস্থাপনাকে আরও সহজ এবং লচিল করে তোলে।
Serialization হল একটি প্রক্রিয়া যেখানে একটি Python অবজেক্টকে JSON (JavaScript Object Notation) ফরম্যাটে রূপান্তর করা হয়, যাতে এটি স্টোর বা ট্রান্সমিট করা যায়। TinyDB ডেটাবেসে ডেটা JSON ফরম্যাটে সংরক্ষিত থাকে, তবে সাধারণ Python অবজেক্টগুলো JSON ফরম্যাটে serialize করা যেতে পারে।
Python-এ ডেটা JSON ফরম্যাটে serialize করার জন্য json লাইব্রেরি ব্যবহার করা হয়।
JSON Serialization: Python অবজেক্ট থেকে JSON ফরম্যাটে রূপান্তর
Python অবজেক্ট যেমন ডিকশনারি, লিস্ট ইত্যাদিকে JSON ফরম্যাটে রূপান্তর করতে json.dumps() ফাংশন ব্যবহার করা হয়। এখানে dumps() এর পূর্ণরূপ dump string অর্থাৎ এটি Python অবজেক্টকে JSON স্ট্রিং হিসেবে রূপান্তর করে।
উদাহরণ: Python অবজেক্ট থেকে JSON ফরম্যাটে রূপান্তর
import json
# Python অবজেক্ট (ডিকশনারি)
data = {
'name': 'Rahim',
'age': 30,
'city': 'Dhaka'
}
# JSON স্ট্রিংয়ে serialize করা
json_data = json.dumps(data)
# ফলাফল প্রিন্ট করা
print(json_data)
আউটপুট:
{"name": "Rahim", "age": 30, "city": "Dhaka"}
JSON ফাইল এ Serialize করা
JSON ডেটাকে ফাইলেও সংরক্ষণ করা যায়। এতে json.dump() ব্যবহার করা হয়, যা JSON ডেটা সরাসরি ফাইলে লেখে।
উদাহরণ: Python অবজেক্টকে JSON ফাইল এ Serialize করা
import json
# Python অবজেক্ট
data = {
'name': 'Rahim',
'age': 30,
'city': 'Dhaka'
}
# ফাইলে JSON ডেটা লেখা
with open('data.json', 'w') as f:
json.dump(data, f)
print("Data written to 'data.json' successfully!")
ফাইলটি data.json নামক JSON ফাইল হিসেবে সেভ হবে, যেখানে ডেটা JSON ফরম্যাটে থাকবে।
JSON ডেটা Read করা (Deserialize)
JSON ডেটা পড়ে (deserialize) Python অবজেক্টে রূপান্তর করতে json.loads() (JSON string থেকে Python object) এবং json.load() (ফাইল থেকে JSON object) ব্যবহার করা হয়।
উদাহরণ: JSON string থেকে Python অবজেক্টে Deserialize করা
import json
# JSON string
json_data = '{"name": "Rahim", "age": 30, "city": "Dhaka"}'
# JSON string থেকে Python অবজেক্টে রূপান্তর করা
data = json.loads(json_data)
print(data)
আউটপুট:
{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}
উদাহরণ: JSON ফাইল থেকে Python অবজেক্টে Deserialize করা
import json
# ফাইল থেকে JSON ডেটা পড়া
with open('data.json', 'r') as f:
data = json.load(f)
print(data)
Serialization এ কিছু গুরুত্বপূর্ণ দিক
- JSON এর সীমানা: JSON শুধু string, number, array, object, true/false, এবং null ধরনের ডেটা সংরক্ষণ করতে পারে।
- Custom Objects: যদি আপনার custom Python objects থাকে, তাহলে সেগুলো serialize করার জন্য
defaultপ্যারামিটার ব্যবহার করতে হয়। যেমন,json.dumps(object, default=str)ব্যবহার করা যেতে পারে।
সারাংশ
JSON Serialization হল Python অবজেক্টকে JSON ফরম্যাটে রূপান্তর করার প্রক্রিয়া, যা স্টোর এবং ট্রান্সমিট করার জন্য উপযোগী। json.dumps() এবং json.dump() ফাংশন দিয়ে Python অবজেক্টকে JSON স্ট্রিং এবং ফাইল ফরম্যাটে রূপান্তর করা হয়। JSON ডেটা json.loads() এবং json.load() ফাংশন দিয়ে পুনরায় Python অবজেক্টে রূপান্তরিত করা যায়।
TinyDB তে Custom Storage Class তৈরি করে, আপনি ডেটা সংরক্ষণের জন্য নিজের পছন্দসই পদ্ধতি বা ফাইল ফর্ম্যাট ব্যবহার করতে পারেন। সাধারণত, TinyDB JSON ফাইল ব্যবহার করে ডেটা সংরক্ষণ করে, তবে আপনার যদি কাস্টম স্টোরেজ সলিউশন দরকার হয় (যেমন SQLite, CSV, বা অন্য কোনো ফাইল ফরম্যাট), তাহলে আপনি একটি Custom Storage Class তৈরি করতে পারেন।
এখানে একটি Custom Storage Class তৈরির উদাহরণ দেওয়া হয়েছে, যা আপনার TinyDB ডাটাবেসকে অন্য ফাইল বা স্টোরেজ সিস্টেমে সংরক্ষণ করতে সক্ষম করবে।
Custom Storage Class তৈরি করার পদ্ধতি
১. Storage Interface তৈরি করা
TinyDB এর স্টোরেজ মডিউল কাস্টমাইজ করার জন্য, প্রথমে আপনাকে Storage ক্লাসের একটি কাস্টম ইমপ্লিমেন্টেশন তৈরি করতে হবে।
from tinydb.storages import Storage
import json
class CustomStorage(Storage):
def __init__(self, filename):
self.filename = filename
self._data = self._load_data()
def _load_data(self):
try:
with open(self.filename, 'r') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return {}
def write(self, data):
with open(self.filename, 'w') as f:
json.dump(data, f, indent=4)
def read(self):
return self._data
এই CustomStorage ক্লাসে:
__init__মেথডে ফাইলের নাম পাস করা হয় এবং ডেটা লোড করার জন্য_load_data()ফাংশন ব্যবহৃত হয়।read()মেথডে ডেটা রিড করা হয়।write()মেথডে ডেটা ফাইলে সংরক্ষণ করা হয়।
এখন আপনি CustomStorage ক্লাস ব্যবহার করে আপনার ডেটাবেস স্টোরেজ কাস্টমাইজ করতে পারবেন।
২. TinyDB এ Custom Storage ব্যবহার করা
TinyDB তে আপনার CustomStorage ক্লাস ব্যবহার করার জন্য, TinyDB এর storage প্যারামিটারটি কাস্টম স্টোরেজ ক্লাসের মাধ্যমে ইনস্ট্যান্সিয়েট করা হবে।
from tinydb import TinyDB
# CustomStorage ক্লাস ব্যবহার করে TinyDB ইনস্ট্যান্স তৈরি
db = TinyDB(storage=CustomStorage, filename='custom_db.json')
# ডেটা ইনসার্ট করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
# সব ডেটা দেখতে
print(db.all())
এখানে, TinyDB ডাটাবেসে CustomStorage ব্যবহৃত হচ্ছে এবং custom_db.json ফাইলটি ডেটা সংরক্ষণের জন্য ব্যবহার করা হচ্ছে।
৩. Custom Storage ব্যবহারকারী কাস্টম ফাইল ফরম্যাট (যেমন CSV, SQLite)
আপনি চাইলে JSON-এর পরিবর্তে CSV বা SQLite ফরম্যাটও ব্যবহার করতে পারেন। তার জন্য শুধু আপনার CustomStorage ক্লাসে ফাইল রিড/রাইট ফাংশনগুলো কাস্টমাইজ করতে হবে।
CSV স্টোরেজের উদাহরণ:
import csv
from tinydb.storages import Storage
class CSVStorage(Storage):
def __init__(self, filename):
self.filename = filename
self._data = self._load_data()
def _load_data(self):
try:
with open(self.filename, newline='', mode='r') as f:
reader = csv.DictReader(f)
return list(reader)
except (FileNotFoundError, csv.Error):
return []
def write(self, data):
fieldnames = data[0].keys() if data else []
with open(self.filename, mode='w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
def read(self):
return self._data
এখানে CSVStorage ক্লাসে ডেটা CSV ফাইলে রিড/রাইট করা হচ্ছে।
সারাংশ
- Custom Storage Class তৈরি করতে, আপনি
TinyDBএর স্টোরেজ মডিউল কাস্টমাইজ করতে পারেন। - Custom Storage ক্লাসের মধ্যে, ডেটা রিড/রাইট করার জন্য আপনার কাঙ্খিত পদ্ধতি (যেমন JSON, CSV, SQLite) ব্যবহার করতে পারবেন।
- এটি TinyDB-কে আপনার নির্দিষ্ট স্টোরেজ ব্যবস্থায় সংহত করতে সক্ষম করে, যেমন নিজের ডিজাইন করা ডেটাবেস বা অন্য কোন ফাইল ফরম্যাটে ডেটা সংরক্ষণ।
এই কাস্টম স্টোরেজ ক্লাসের মাধ্যমে আপনি TinyDB এর কার্যক্ষমতা আরও প্রসারিত এবং কাস্টমাইজড করে নিতে পারবেন।
Data Persistence হলো এমন একটি প্রক্রিয়া যার মাধ্যমে ডেটা একটি স্টোরেজে (ফাইল, ডাটাবেস, বা অন্য কোন স্থানে) সংরক্ষণ করা হয়, যাতে সিস্টেম পুনরায় চালু হওয়ার পরেও ডেটা স্থায়ীভাবে মেনে রাখা যায়। TinyDB একটি JSON ফাইল ব্যবহার করে ডেটা সংরক্ষণ করে এবং এটি নিজেই ডেটা পersist করে, কারণ এটি স্টোরেজ হিসেবে ফাইল সিস্টেমে কাজ করে।
Data Persistence in TinyDB
TinyDB একটি Persistent storage প্রদান করে, যা ডেটা ফাইল (সাধারণত JSON) তে সংরক্ষণ করে এবং সিস্টেম রিস্টার্ট হওয়ার পরেও সেই ডেটা ফিরে আসে। যখন TinyDB ব্যবহার করা হয়, তখন সিস্টেম বন্ধ হলেও ডেটা ফিরে পাওয়া যায়।
TinyDB-তে ডেটা পpersist করার প্রক্রিয়া
- JSON ফাইল হিসাবে ডেটা সংরক্ষণ: TinyDB স্বয়ংক্রিয়ভাবে ডেটা JSON ফাইলে সংরক্ষণ করে। ডেটা ফাইলটি TinyDB('database.json') নামে তৈরি হয়, এবং ডেটা সেখানে সংরক্ষিত হয়।
from tinydb import TinyDB
# ডাটাবেস তৈরি
db = TinyDB('database.json')
# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
print("ডেটা সফলভাবে সংরক্ষিত হয়েছে।")
এই ডেটা ফাইল database.json এ সংরক্ষিত হবে এবং সিস্টেম রিস্টার্ট হওয়ার পরেও সেই ডেটা থাকবে।
- ডেটার স্থায়ীত্ব (Persistence): TinyDB ফাইল ফরম্যাটে ডেটা সংরক্ষণ করে, অর্থাৎ যখনই ডেটা আপডেট বা যোগ করা হয়, তা ডাটাবেস ফাইলে অবিলম্বে সংরক্ষিত হয়। ডেটার যে কোন পরিবর্তন সরাসরি JSON ফাইলে রিফ্লেক্ট হয়।
Custom Storage Techniques
TinyDB ব্যবহারকারীকে custom storage (অন্য কোনো ফাইল বা ফর্ম্যাটে ডেটা সংরক্ষণ) সিস্টেম তৈরির সুযোগ দেয়। এটি প্রয়োজন অনুসারে বিভিন্ন কাস্টমাইজড স্টোরেজ সলিউশন তৈরি করতে সাহায্য করে।
১. কাস্টম ফাইল স্টোরেজ
TinyDB আপনাকে কাস্টম ফাইল ব্যবহারের সুযোগ দেয়, যেমন, আপনি নিজের পছন্দমত ফাইল নাম বা লোকেশন নির্ধারণ করতে পারেন। ডাটাবেসের জন্য অন্য কোনো ফাইল পাথ ব্যবহার করতে:
# Custom file storage
db = TinyDB('/path/to/custom_storage/database.json')
# ডেটা যোগ করা
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
print("কাস্টম স্টোরেজে ডেটা সংরক্ষিত হয়েছে।")
২. কাস্টম স্টোরেজ ইঞ্জিন
TinyDB এ custom storage engine তৈরি করা যায় যা ডেটা সংরক্ষণের জন্য কোনো বিশেষ ফাইল ফরম্যাট বা টেকনিক ব্যবহার করে। এটি ফাইল ফরম্যাট পরিবর্তন বা সিস্টেম কনফিগারেশনে পরিবর্তন করতে সাহায্য করে।
from tinydb.storages import Storage
import json
class MyCustomStorage(Storage):
def __init__(self, path):
self.path = path
def read(self):
with open(self.path, 'r') as file:
return json.load(file)
def write(self, data):
with open(self.path, 'w') as file:
json.dump(data, file)
# Custom storage ব্যবহার করা
db = TinyDB('custom_database.json', storage=MyCustomStorage)
db.insert({'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'})
print("কাস্টম স্টোরেজ ইঞ্জিন ব্যবহার করা হয়েছে।")
এখানে, MyCustomStorage ক্লাসের মাধ্যমে JSON ফাইলের পরিবর্তে ডেটা কাস্টম ফাইল পাথ বা অন্য কোন কাস্টম ডেটা স্টোরেজ ইঞ্জিনে সংরক্ষণ করা হয়েছে।
৩. কাস্টম ইনডেক্সিং
TinyDB-তে আপনি custom indexing কৌশলও তৈরি করতে পারেন, যা ডেটা দ্রুত অনুসন্ধানের জন্য ব্যবহার করা হয়। ইনডেক্সিং কাস্টমাইজ করে আপনি নিজের মতো দ্রুত অনুসন্ধান ব্যবস্থা তৈরি করতে পারেন।
from tinydb import TinyDB, Query
# Custom Indexing
db = TinyDB('custom_indexed_db.json')
# ডেটা যোগ করা
db.insert({'name': 'John', 'age': 40, 'city': 'New York'})
db.insert({'name': 'Jane', 'age': 35, 'city': 'Los Angeles'})
# Query ব্যবহার করে ইনডেক্সিং
User = Query()
result = db.search(User.name == 'John')
print(result)
সারাংশ
TinyDB স্বয়ংক্রিয়ভাবে ডেটা JSON ফাইল-এ সংরক্ষণ করে, যা ডেটা পpersist করার জন্য খুবই কার্যকর। তবে এটি ব্যবহারকারীকে custom storage techniques এবং custom storage engines তৈরি করার সুযোগ দেয়, যার মাধ্যমে আপনি নিজের পছন্দমতো ফাইল ফরম্যাট এবং স্টোরেজ ব্যবস্থা তৈরি করতে পারেন। এটি বিশেষভাবে ছোট প্রকল্প এবং প্রোটোটাইপের জন্য কার্যকর, যেখানে ডেটা পpersist করার এবং কাস্টম স্টোরেজ ব্যবস্থা তৈরির সুবিধা প্রয়োজন।
Read more