TinyDB স্বয়ংক্রিয়ভাবে ইনডেক্সিং ব্যবহার করে ডেটা ম্যানেজমেন্টকে দ্রুত এবং কার্যকর করতে। এটি ডেটা অনুসন্ধান ও রিট্রাইভাল প্রক্রিয়াকে ত্বরান্বিত করে। যদিও সরাসরি ব্যবহারকারীর জন্য ম্যানুয়াল ইনডেক্সিং করতে হয় না, তবে TinyDB এর বিল্ট-ইন ইনডেক্সিং সিস্টেমের কার্যকারিতা এবং কাস্টম ইনডেক্সিং সম্পর্কিত বিষয়গুলো জানা গুরুত্বপূর্ণ।
TinyDB তে ইনডেক্স কীভাবে কাজ করে?
TinyDB-র প্রতিটি টেবিলে ইনডেক্স সাপোর্ট রয়েছে। ডেটা যোগ বা আপডেট করার সময় TinyDB স্বয়ংক্রিয়ভাবে ইনডেক্স তৈরি করে। এটি Query অপারেশনগুলো দ্রুত করার জন্য ব্যবহৃত হয়। যখন কোনো শর্তযুক্ত অনুসন্ধান (search বা get) চালানো হয়, তখন TinyDB এই ইনডেক্স ব্যবহার করে ডেটা রিট্রাইভাল আরও কার্যকর করে।
ডিফল্ট ইনডেক্সিং
TinyDB প্রতিটি ফিল্ডের জন্য ডিফল্ট ইনডেক্স তৈরি করে। উদাহরণস্বরূপ, আপনি যদি একটি টেবিলে ডেটা যোগ করেন এবং কোনো নির্দিষ্ট ফিল্ডে অনুসন্ধান করেন, TinyDB সেই ফিল্ডের জন্য ইনডেক্স ব্যবহার করবে।
from tinydb import TinyDB, Query
# TinyDB ডাটাবেস তৈরি
db = TinyDB('db.json')
# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
db.insert({'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'})
# Query তৈরি
User = Query()
# 'name' ইনডেক্স ব্যবহার করে ডেটা Fetch করা
result = db.search(User.name == 'Rahim')
print(result)
# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]
ইনডেক্স কাস্টমাইজেশন
TinyDB সরাসরি ম্যানুয়াল ইনডেক্সিং সমর্থন করে না, তবে আপনি বিশেষভাবে অপ্টিমাইজড ডেটা স্টোরেজের জন্য storage বা middleware ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি Caching Middleware ব্যবহার করে ডেটা দ্রুত অ্যাক্সেস করতে পারেন।
উদাহরণ: ইনডেক্সিং সহ Caching Middleware
from tinydb import TinyDB, Query
from tinydb.middlewares import CachingMiddleware
from tinydb.storages import JSONStorage
# Middleware সহ ডাটাবেস তৈরি
db = TinyDB('db.json', storage=CachingMiddleware(JSONStorage))
# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
# Query ব্যবহার করে ডেটা Fetch করা
User = Query()
result = db.search(User.city == 'Dhaka')
print(result)
# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]
ইনডেক্স অপ্টিমাইজেশনের জন্য Storage কাস্টমাইজেশন
আপনি Custom Storage বা Middleware ব্যবহার করে ইনডেক্স ম্যানেজমেন্ট আরও কার্যকর করতে পারেন। এর মাধ্যমে বড় ডেটাবেসে ডেটা রিট্রাইভাল সময় কমিয়ে আনা সম্ভব।
উদাহরণ: Memory Storage ব্যবহার
from tinydb import TinyDB, Query
from tinydb.storages import MemoryStorage
# ইন-মেমোরি স্টোরেজ ব্যবহার করে ডাটাবেস তৈরি
db = TinyDB(storage=MemoryStorage)
# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
# Query ব্যবহার করে ডেটা Fetch করা
User = Query()
result = db.search(User.age > 25)
print(result)
# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]
ইনডেক্স ব্যবহারের সুবিধা
- দ্রুত অনুসন্ধান: ইনডেক্সিং অপারেশনগুলো দ্রুত করে তোলে।
- অপ্টিমাইজড ডেটা রিট্রাইভাল: বড় ডেটাসেটে ডেটা ফিল্টারিং কার্যকর।
- কম মেমরি ব্যবহার: ইনডেক্স ব্যবহার করে ডেটাবেসে কম্পিউটেশনাল সময় এবং মেমরি খরচ কমে।
- স্বয়ংক্রিয় আপডেট: ইনডেক্সিং স্বয়ংক্রিয়ভাবে আপডেট হয় যখন নতুন ডেটা যোগ বা মুছে ফেলা হয়।
সারাংশ
TinyDB তে ইনডেক্সিং স্বয়ংক্রিয় এবং ব্যবহারকারীর হস্তক্ষেপ ছাড়াই কার্যকর। এটি JSON ফাইল ভিত্তিক ডেটাবেসে দ্রুত এবং সহজ অনুসন্ধান প্রক্রিয়া নিশ্চিত করে। বড় ডেটাবেসের জন্য Caching Middleware এবং Custom Storage ব্যবহার করলে আরও ভালো পারফরম্যান্স পাওয়া যায়।
Read more