TinyDB ছোট এবং হালকা ডাটাবেস হওয়ার কারণে পারফরম্যান্স একটি গুরুত্বপূর্ণ বিষয়, বিশেষত যখন বড় ডেটাসেট নিয়ে কাজ করতে হয়। TinyDB-তে Query Performance Optimization এর জন্য বেশ কিছু কৌশল রয়েছে, যা ডেটা অনুসন্ধান এবং প্রসেসিংকে দ্রুততর করতে সাহায্য করে।
১. ইনডেক্স (Index) ব্যবহার
TinyDB-তে ইনডেক্সিং ডেটা অনুসন্ধানের গতি বৃদ্ধি করতে সাহায্য করে। ইনডেক্সিংয়ের মাধ্যমে ডেটা সরাসরি নির্দিষ্ট অবস্থানে খুঁজে পাওয়া যায়, যা linear search এড়িয়ে যায়।
ইনডেক্স কনফিগার করা:
from tinydb import TinyDB, Query
db = TinyDB('db.json', storage=TinyDB.default_storage, ensure_ascii=False)
db.table('_default').all() # Default Table
TinyDB ইতিমধ্যে ইনডেক্সের মতো ডেটা পরিচালনা করে, কিন্তু যখন ডেটাসেট বড় হয়, তখন টেবিলের সঠিক বিভাজন নিশ্চিত করা জরুরি।
২. Table বিভাজন করা
যদি আপনার ডেটাবেসে বিভিন্ন ধরনের ডেটা থাকে, তবে একাধিক টেবিল ব্যবহার করুন।
উদাহরণ:
users_table = db.table('users')
products_table = db.table('products')
# পৃথক টেবিলে ডেটা যোগ
users_table.insert({'name': 'Rahim', 'age': 30})
products_table.insert({'product': 'Laptop', 'price': 50000})
এটি পৃথক টেবিলে অনুসন্ধানের সময় অপ্রয়োজনীয় ডেটা স্ক্যান এড়িয়ে যায়।
৩. Query Optimization
নির্দিষ্ট Query ব্যবহার করুন
একটি সুনির্দিষ্ট Query Object ব্যবহার করা পারফরম্যান্স উন্নত করে।
উদাহরণ:
User = Query()
# সাধারণ Query
result = db.search(User.name == 'Rahim')
# উন্নত Query
result = db.get(User.name == 'Rahim') # শুধুমাত্র একটি রেকর্ডের জন্য
get() ফাংশন search() এর তুলনায় দ্রুত কাজ করে কারণ এটি প্রথম মিল পাওয়া ডেটা রিটার্ন করেই থেমে যায়।
৪. শর্ত অপ্টিমাইজ করুন
জটিল শর্ত তৈরি করার সময় লজিক্যাল অপারেটরগুলির ব্যবহার কমিয়ে আনুন। AND এবং OR এর ব্যবহার পদ্ধতিগতভাবে সাজান।
উদাহরণ:
# অপ্রয়োজনীয় শর্ত
result = db.search((User.name == 'Rahim') & (User.age > 20) & (User.city == 'Dhaka'))
# অপ্টিমাইজড শর্ত
result = db.search((User.name == 'Rahim') & (User.city == 'Dhaka'))
শর্ত যত কম এবং নির্দিষ্ট হবে, তত দ্রুত TinyDB ফলাফল প্রদান করতে পারবে।
৫. ডেটা লোড এড়িয়ে চলুন
ডেটাবেস থেকে সমস্ত ডেটা লোড করা এড়িয়ে চলুন, কারণ এটি মেমোরি ব্যবহার বাড়ায় এবং প্রসেসিং ধীর করে।
উদাহরণ:
# অপ্রয়োজনীয়
all_data = db.all()
# প্রয়োজন অনুসারে
filtered_data = db.search(User.age > 25)
৬. JSON ফাইলের আকার নিয়ন্ত্রণ করা
TinyDB JSON ফাইলের উপর নির্ভর করে। বড় JSON ফাইল ম্যানেজ করতে সমস্যা হলে, ডেটা আকার নিয়ন্ত্রণ করুন:
- অপ্রয়োজনীয় ফিল্ড বাদ দিন।
- কম ডেটা সংরক্ষণ করুন।
৭. ব্যাচ অপারেশন ব্যবহার করা
একটি সময়ে একাধিক ডেটা পড়া বা লেখার জন্য batch operations ব্যবহার করুন।
উদাহরণ:
db.insert_multiple([
{'name': 'Rahim', 'age': 30},
{'name': 'Karim', 'age': 25}
])
৮. ডেটা ক্যাশিং (Data Caching)
ডেটা বারবার পড়ার পরিবর্তে ডেটা ক্যাশ করুন যদি তা স্থায়ীভাবে অপরিবর্তিত থাকে। এটি TinyDB এর বাইরের পদ্ধতি হলেও পারফরম্যান্স বাড়াতে কার্যকর।
৯. read-only operations
যদি ডেটা শুধুমাত্র পড়তে হয় এবং আপডেটের প্রয়োজন না থাকে, তবে read-only মুডে ডেটাবেস ব্যবহার করুন।
১০. আলাদা ফাইল ব্যবহারের কৌশল
বড় ডেটাবেসের পরিবর্তে ডেটা ভাগ করে আলাদা JSON ফাইলে সংরক্ষণ করুন।
উদাহরণ:
TinyDB('user_data.json')
TinyDB('product_data.json')
সারাংশ
TinyDB-তে Query Performance Optimization এর মাধ্যমে বড় ডেটাসেট এবং জটিল অনুসন্ধানও দ্রুত কার্যকর করা সম্ভব। সঠিক শর্ত, ইনডেক্সিং, টেবিল বিভাজন, এবং JSON ফাইল ম্যানেজমেন্ট এই অপ্টিমাইজেশনের মূল কৌশল। এগুলোর সঠিক প্রয়োগ ডেটা ম্যানেজমেন্টকে আরো দক্ষ করে তোলে।
Read more