CouchDB-তে Views তৈরি করা একটি গুরুত্বপূর্ণ ফিচার যা ডেটা কুয়েরি করার জন্য MapReduce প্যাটার্ন ব্যবহার করে। View-গুলো CouchDB এর ডেটাবেসে স্টোর করা ডেটা বিশ্লেষণ, ফিল্টার এবং কাস্টম কুয়েরি করার জন্য ব্যবহৃত হয়। View তৈরি করার জন্য Map এবং Reduce ফাংশন ব্যবহার করা হয়, যা আপনাকে ডেটা প্রসেসিংয়ের জন্য কাস্টম কুয়েরি তৈরি করতে সহায়তা করে।
CouchDB-তে View তৈরি করার জন্য প্রথমে আপনাকে একটি ডেটাবেসে প্রবেশ করতে হবে যেখানে আপনি View তৈরি করবেন।
curl -X GET http://127.0.0.1:5984/my_database
CouchDB তে View তৈরি করার জন্য আপনাকে Design Document তৈরি করতে হবে। Design Document হচ্ছে এমন একটি ডকুমেন্ট যা views এবং অন্যান্য কার্যাবলী সংরক্ষণ করে। নিচে একটি উদাহরণ দেয়া হলো কিভাবে একটি view তৈরি করা যায়।
PUT
রিকুয়েস্ট ব্যবহার করুন।curl -X PUT http://127.0.0.1:5984/my_database/_design/my_design_doc -d '{
"views": {
"by_name": {
"map": "function(doc) { emit(doc.name, doc); }"
}
}
}'
এখানে by_name
হচ্ছে View-এর নাম, যা ডকুমেন্টগুলির name ফিল্ডের ভিত্তিতে ডেটা এমিট করবে। Map ফাংশনে emit()
ফাংশন ব্যবহার করে একটি key-value পেয়ার তৈরি করা হচ্ছে, যেখানে doc.name
হল key এবং doc
হল value।
Design Document তৈরি হওয়ার পর, আপনি View কুয়েরি করতে পারেন। GET
রিকুয়েস্টের মাধ্যমে View এর ডেটা অ্যাক্সেস করা হয়:
curl -X GET http://127.0.0.1:5984/my_database/_design/my_design_doc/_view/by_name
এই কুয়েরিটি name ফিল্ডের ভিত্তিতে সমস্ত ডকুমেন্ট ফেরত দেবে, যা by_name
ভিউ অনুযায়ী সাজানো থাকবে।
আপনি যদি Reduce function ব্যবহার করতে চান, তখন Map ফাংশনের পর Reduce
ফাংশন যোগ করতে হবে। নিচে একটি উদাহরণ দেখানো হলো:
curl -X PUT http://127.0.0.1:5984/my_database/_design/my_design_doc -d '{
"views": {
"count_by_name": {
"map": "function(doc) { emit(doc.name, 1); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}
}
}'
এখানে:
doc.name
কে key হিসেবে এবং 1
কে value হিসেবে emit করা হচ্ছে।এখন, আপনি Reduce ফাংশন সহ View কুয়েরি করতে পারবেন:
curl -X GET http://127.0.0.1:5984/my_database/_design/my_design_doc/_view/count_by_name?reduce=true
এটি কেবল একক সংখ্যা প্রদান করবে যা দেখাবে প্রতিটি নামের মোট occurrences কত ছিল।
Temporary Views হলো অস্থায়ী Views, যা একক সেশন বা অ্যাপ্লিকেশনের জন্য তৈরি করা হয়। এটি সার্ভারে ডিজাইন ডকুমেন্ট সংরক্ষণ না করে শুধুমাত্র একটি Map এবং Reduce ফাংশন ব্যবহার করে কুয়েরি তৈরি করা যায়।
curl -X GET http://127.0.0.1:5984/my_database/_temp_view -d '{
"map": "function(doc) { emit(doc.name, 1); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}'
এই কুয়েরিটি একটি temporary view তৈরি করবে এবং name অনুযায়ী কনটেন্টের সংখ্যা প্রদান করবে।
MapReduce ফাংশন ব্যবহার করে আপনি জটিল কুয়েরি তৈরি করতে পারেন, যেমন ডকুমেন্টগুলির মধ্যে সম্পর্ক বের করা বা কিছু অ্যাগ্রিগেটেড ডেটা হিসাব করা।
ধরা যাক, আমাদের একটি ডেটাবেসে বিভিন্ন প্রোডাক্টের তথ্য সংরক্ষিত আছে, এবং আমরা মোট বিক্রির পরিমাণ বের করতে চাই।
curl -X PUT http://127.0.0.1:5984/my_database/_design/sales -d '{
"views": {
"total_sales": {
"map": "function(doc) { emit(doc.product_id, doc.sales); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}
}
}'
curl -X GET http://127.0.0.1:5984/my_database/_design/sales/_view/total_sales?reduce=true
এটি প্রতিটি প্রোডাক্টের জন্য মোট বিক্রির পরিমাণ দেবে।
CouchDB তে Views তৈরি করা খুবই শক্তিশালী এবং নমনীয়। MapReduce ফাংশন ব্যবহার করে আপনি কাস্টম কুয়েরি তৈরি করতে পারেন যা আপনার ডেটা বিশ্লেষণ ও কার্যকরভাবে পরিচালনা করার জন্য উপকারী। Permanent Views এবং Temporary Views তৈরির মাধ্যমে CouchDB তে জটিল কুয়েরি সহজেই সম্পন্ন করা সম্ভব।
common.read_more