CouchDB-তে একটি ডকুমেন্ট পড়া বা ফেচ করা একটি মৌলিক অপারেশন, যা HTTP API ব্যবহার করে খুব সহজেই করা যায়। CouchDB-তে একটি ডকুমেন্ট _id (অনন্য চিহ্ন) এর মাধ্যমে অ্যাক্সেস করা হয় এবং এটি GET HTTP রিকুয়েস্টের মাধ্যমে রিড করা হয়। নিচে বিস্তারিতভাবে ডকুমেন্ট রিড/ফেচ করার পদ্ধতি এবং প্রক্রিয়া আলোচনা করা হলো।
1. ডকুমেন্ট রিড/ফেচ করার প্রক্রিয়া
a. CouchDB RESTful API ব্যবহার করে ডকুমেন্ট রিড করা
CouchDB এর সাথে যোগাযোগ করার জন্য HTTP API ব্যবহার করা হয়। একটি ডকুমেন্ট পড়তে GET রিকুয়েস্ট পাঠানো হয়। এই রিকুয়েস্টে ডকুমেন্টের _id এবং _rev (যদি প্রয়োজন হয়) পাঠানো হয়।
b. ডকুমেন্ট রিডের সাধারণ সিঙ্ক্রোনাস রিকুয়েস্ট
ডকুমেন্ট রিড করার জন্য নিচের মতো একটি GET রিকুয়েস্ট পাঠানো হয়:
GET /db_name/document_id
এখানে:
- db_name: ডেটাবেসের নাম, যেখানে ডকুমেন্টটি সংরক্ষিত আছে।
- document_id: ডকুমেন্টটির _id (অন্যতম চিহ্নিতকরণ), যা ডকুমেন্টকে অনন্যভাবে চিহ্নিত করে।
c. কনসোল/HTTP রিকুয়েস্ট এক্সাম্পল
curl -X GET http://127.0.0.1:5984/mydatabase/mydoc123
এখানে:
- 127.0.0.1:5984: CouchDB সার্ভারের URL এবং পোর্ট নম্বর।
- mydatabase: ডেটাবেসের নাম।
- mydoc123: ডকুমেন্টের _id।
d. রেসপন্স
ডকুমেন্ট রিড করার পর, সার্ভার থেকে একটি JSON রেসপন্স আসবে, যা ডকুমেন্টের ডেটা এবং অতিরিক্ত তথ্য ধারণ করে। যেমন:
{
"_id": "mydoc123",
"_rev": "1-2345abcd6789efgh",
"name": "John Doe",
"email": "johndoe@example.com",
"age": 30
}
এখানে:
- _id: ডকুমেন্টের অনন্য চিহ্ন।
- _rev: ডকুমেন্টের সংস্করণ (revision)।
- name, email, age: ডকুমেন্টের মধ্যে থাকা অন্যান্য ফিল্ড।
2. ডকুমেন্ট রিড/ফেচ করার অতিরিক্ত ফিচারসমূহ
a. ডকুমেন্ট ফিল্টারিং এবং কুয়েরি
কিছু ক্ষেত্রে, আপনি View ব্যবহার করে ডকুমেন্ট ফিল্টার করতে পারেন, যাতে নির্দিষ্ট শর্তে ডেটা ফেচ করা যায়। যেমন:
GET /db_name/_design/myview/_view/myfilter?key="John Doe"
এখানে:
- _design/myview/_view/myfilter: একটি প্রিফিক্স যা কাস্টম তৈরি করা View-এর মাধ্যমে ডেটা কুয়েরি করবে।
- key: নির্দিষ্ট মান বা শর্ত যা ফিল্টার করবে।
b. কনফ্লিক্ট রিজল্যুশন (Conflict Resolution)
যখন একটি ডকুমেন্টের একাধিক সংস্করণ (revision) থাকে, তখন _rev ফিল্ডের মাধ্যমে নির্দিষ্ট সংস্করণটি রিড করা হয়। যদি কোন কনফ্লিক্ট ঘটে, তবে CouchDB _rev ফিল্ডের সাহায্যে সর্বশেষ সংস্করণ নির্বাচন করে।
c. ডকুমেন্ট রিড করতে include_docs অপশন ব্যবহার
আপনি _changes API এর মাধ্যমে include_docs=true সেট করে সংশ্লিষ্ট ডকুমেন্টগুলো ফেচ করতে পারেন:
GET /mydatabase/_changes?include_docs=true
এটি সমস্ত পরিবর্তিত ডকুমেন্টের সাথে তাদের ডেটাও ফিরিয়ে দেবে।
3. রিড অপারেশন এর উন্নত ব্যবহার
a. Partial Fetch (ডেটার একটি অংশ পড়া)
কিছু পরিস্থিতিতে, আপনি শুধু ডকুমেন্টের নির্দিষ্ট ফিল্ড ফেচ করতে চাইলে, আপনি HTTP HEAD রিকুয়েস্ট ব্যবহার করতে পারেন। উদাহরণ:
HEAD /db_name/document_id
এটি ডকুমেন্টের মেটাডেটা প্রদান করবে, কিন্তু ডকুমেন্টের পুরো কনটেন্ট নয়।
b. Conditional Fetch (শর্তাধীন ফেচ)
CouchDB HTTP API-তে If-None-Match বা If-Match হেডার ব্যবহার করে শর্তযুক্ত রিড করা সম্ভব। উদাহরণস্বরূপ:
GET /db_name/document_id HTTP/1.1
If-None-Match: "etag_value"
এটি শুধুমাত্র তখনই ডকুমেন্ট রিটার্ন করবে যদি etag_value মেলে না।
4. CouchDB তে ডকুমেন্ট রিড করার উপকারিতা
- নমনীয়তা: CouchDB তে ডকুমেন্ট রিডের জন্য স্কিমা নির্ভরশীলতা নেই, ফলে যেকোনো ধরণের ডেটা স্ট্রাকচার সহজেই রিড করা যায়।
- ডিস্ট্রিবিউটেড আর্কিটেকচার: CouchDB এর রেপ্লিকেশন ও সিঙ্ক্রোনাইজেশন ফিচারের মাধ্যমে, ডকুমেন্টের রিড প্রক্রিয়া বিভিন্ন সার্ভারে সমন্বয় করা যায়।
- রিয়েল-টাইম অ্যাক্সেস: CouchDB রিয়েল-টাইম ডেটা অ্যাক্সেসের জন্য উপযুক্ত, বিশেষ করে যখন ডেটার পরিবর্তন এবং আপডেট দ্রুত হওয়া প্রয়োজন।
উপসংহার
CouchDB তে ডকুমেন্ট রিড/ফেচ করা একটি সহজ এবং কার্যকর প্রক্রিয়া, যা HTTP API এর মাধ্যমে দ্রুত এবং দক্ষভাবে ডেটা অ্যাক্সেস করতে সহায়ক। ডকুমেন্টের _id ব্যবহার করে দ্রুত রিড অপারেশন সম্ভব, এবং এর মধ্যে থাকা MapReduce Views এবং অন্যান্য কুয়েরি পদ্ধতিগুলি ডেটা অ্যাক্সেস আরও শক্তিশালী করে তোলে।
Read more