CouchDB একটি ওপেন সোর্স NoSQL ডাটাবেস যা ডকুমেন্ট-ভিত্তিক (Document-Oriented) ডেটা মডেল ব্যবহার করে এবং এটি JSON ফরম্যাটে ডেটা সংরক্ষণ করে। CouchDB-এর মৌলিক ধারণাগুলো বেশ কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য নিয়ে গঠিত, যা ডেটা সংরক্ষণ, ম্যানেজমেন্ট, রেপ্লিকেশন এবং সিঙ্ক্রোনাইজেশনের ক্ষেত্রে সাহায্য করে।
1. ডকুমেন্ট-ভিত্তিক মডেল (Document-Oriented Model)
CouchDB ডেটা ডকুমেন্ট আকারে সংরক্ষণ করে, যা JSON (JavaScript Object Notation) ফরম্যাটে থাকে। প্রতিটি ডকুমেন্ট একটি key-value pair ধারণ করে, যেখানে key ডেটার নাম এবং value সেই ডেটার মান।
- ডকুমেন্টের কাঠামো:
- প্রতিটি ডকুমেন্টের একটি _id থাকে, যা ডকুমেন্টের অনন্য পরিচয়।
- _rev (রিভিশন নম্বর) থাকে, যা ডকুমেন্টের সংস্করণ এবং কনফ্লিক্ট ম্যানেজমেন্টে সাহায্য করে।
- ডকুমেন্টের মধ্যে key-value পেয়ার এবং নেস্টেড ডেটা স্ট্রাকচার থাকতে পারে, যেমন arrays এবং nested objects।
উদাহরণ:
{
"_id": "user123",
"_rev": "1-abc123",
"name": "John Doe",
"email": "johndoe@example.com",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Cityville"
}
}
2. স্কিমা-লেস ডেটা স্টোরেজ (Schema-less Storage)
CouchDB একটি স্কিমা-লেস ডাটাবেস, যা মানে হল যে ডেটার কাঠামো বা ফরম্যাট আগেই নির্ধারণ করতে হয় না। প্রতিটি ডকুমেন্ট আলাদা হতে পারে এবং একে অপরের থেকে ভিন্ন ডেটা ধারণ করতে পারে। এর ফলে ডেটার কাঠামো সহজেই পরিবর্তন করা যায় এবং নতুন ফিল্ড বা স্ট্রাকচার যোগ করা সম্ভব।
- স্কিমা-লেস হওয়ার ফলে ডেভেলপাররা ব্যাপক নমনীয়তা পান, কারণ ডেটার গঠন একক ডকুমেন্টের মধ্যে পরিবর্তনশীল হতে পারে।
3. MVCC (Multi-Version Concurrency Control)
CouchDB MVCC (Multi-Version Concurrency Control) ব্যবহার করে, যা একাধিক ব্যবহারকারী একই ডকুমেন্ট সম্পাদনা করার সময় কনফ্লিক্ট প্রতিরোধ করে। CouchDB প্রতিটি ডকুমেন্টের রিভিশন ট্র্যাক করে এবং একাধিক সংস্করণ ধারণ করে, যা কনফ্লিক্ট ম্যানেজমেন্টের জন্য অত্যন্ত কার্যকর।
- যখন একাধিক ব্যবহারকারী একটি ডকুমেন্ট আপডেট করেন, CouchDB তাদের মধ্যে কনফ্লিক্ট সমাধান করার জন্য _rev (রিভিশন) ব্যবহার করে।
- CouchDB একটি কনফ্লিক্ট সমাধান প্রক্রিয়া প্রদান করে, যা একটি ডকুমেন্টের বিভিন্ন সংস্করণগুলিকে স্বয়ংক্রিয়ভাবে ম্যানেজ করে।
4. রেপ্লিকেশন (Replication)
CouchDB একটি শক্তিশালী মাল্টি-মাস্টার রেপ্লিকেশন সিস্টেম সমর্থন করে, যা একাধিক সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজ করতে সক্ষম। রেপ্লিকেশন CouchDB এর একটি প্রধান বৈশিষ্ট্য এবং এটি খুবই কার্যকর যখন ডেটা ডিস্ট্রিবিউটেড সিস্টেমে সিঙ্ক্রোনাইজ করতে হয়।
- Continuous Replication: ডেটা সিঙ্ক্রোনাইজ করার জন্য রেপ্লিকেশন একটি সার্ভার থেকে অন্য সার্ভারে চলমান থাকে।
- One-Time Replication: একবার রেপ্লিকেশন চালানো এবং তারপর সিঙ্ক্রোনাইজেশন শেষ।
CouchDB এর রেপ্লিকেশন সিস্টেম eventual consistency অনুসরণ করে, অর্থাৎ কিছু সময় পর সমস্ত সার্ভারে ডেটা সিঙ্ক্রোনাইজ হয়ে যায়।
5. MapReduce Views
CouchDB কুয়েরি করার জন্য MapReduce প্যাটার্ন ব্যবহার করে। Map function ডেটার থেকে key-value pairs তৈরি করে, এবং Reduce function সেই key-value পেয়ারগুলো প্রক্রিয়া করে এবং সংক্ষেপিত ফলাফল প্রদান করে।
- Views তৈরি করা হয় Map এবং Reduce ফাংশন ব্যবহার করে।
- Temporary Views এবং Permanent Views সমর্থন করে, যা ডেটাকে দ্রুত অ্যাক্সেস করতে সহায়ক।
6. RESTful API
CouchDB RESTful API ব্যবহার করে ডেটা পরিচালনা করা যায়। CouchDB এর API HTTP প্রোটোকল ব্যবহার করে এবং এটি CRUD (Create, Read, Update, Delete) অপারেশন সম্পাদন করতে সাহায্য করে।
- CouchDB API ক্লায়েন্ট অ্যাপ্লিকেশনগুলোকে ডেটাবেস এবং ডকুমেন্ট অ্যাক্সেস করতে এবং পরিচালনা করতে সহায়ক।
7. Security and Access Control
CouchDB ব্যবহারকারীদের Role-based Access Control (RBAC) এবং Authentication সিস্টেম প্রদান করে, যা ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা নিশ্চিত করে।
- User Management: ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণ এবং রোল সেটিং করা যায়।
- SSL/TLS Encryption: ডেটা ট্রান্সমিশন নিরাপদ করতে SSL/TLS এনক্রিপশন সমর্থন করে।
8. CouchDB এর কাজের পদ্ধতি
CouchDB একটি ডিস্ট্রিবিউটেড ডাটাবেস যা সার্ভার এবং ক্লায়েন্টের মধ্যে RESTful API ব্যবহার করে যোগাযোগ করে। এর মূল কাজের পদ্ধতি হল:
- ডকুমেন্ট তৈরি এবং সম্পাদনা: ডেটা JSON ফরম্যাটে ডকুমেন্ট আকারে তৈরি এবং পরিচালনা করা হয়।
- কুয়েরি এবং রিড: ডেটা MapReduce ফাংশন ব্যবহার করে কুয়েরি করা হয় এবং ভিউ তৈরি করা হয়।
- রেপ্লিকেশন এবং সিঙ্ক্রোনাইজেশন: ডেটা একাধিক সার্ভারে সিঙ্ক্রোনাইজ করা হয় এবং একাধিক নোডে ডেটা রেপ্লিকেট করা হয়।
- কনফ্লিক্ট ম্যানেজমেন্ট: CouchDB MVCC এবং _rev ফিল্ড ব্যবহার করে কনফ্লিক্ট ম্যানেজমেন্ট পরিচালনা করে।
CouchDB এর মৌলিক ধারণার উপকারিতা
- নমনীয়তা (Flexibility): স্কিমা-লেস ডেটা স্টোরেজের কারণে ডেটার কাঠামো সহজেই পরিবর্তনযোগ্য।
- স্কেলেবিলিটি (Scalability): CouchDB এর ডিস্ট্রিবিউটেড আর্কিটেকচার এবং রেপ্লিকেশন সুবিধা বড় আকারের সিস্টেমের জন্য কার্যকর।
- কনফ্লিক্ট ম্যানেজমেন্ট: MVCC কনফ্লিক্ট প্রতিরোধ করতে সহায়ক এবং ডেটার আপডেট সঠিকভাবে পরিচালিত হয়।
CouchDB একটি শক্তিশালী, ডিস্ট্রিবিউটেড, এবং স্কেলেবল ডাটাবেস সিস্টেম যা JSON ডকুমেন্ট ভিত্তিক স্টোরেজ এবং MapReduce কুয়েরি পদ্ধতি ব্যবহার করে ডেটা অ্যাক্সেস ও বিশ্লেষণ সহজ করে তোলে।
CouchDB একটি Document-Oriented NoSQL Database যা ডেটা JSON ফরম্যাটে ডকুমেন্ট আকারে সংরক্ষণ করে। এটি একটি ডিস্ট্রিবিউটেড এবং স্কেলেবল ডাটাবেস, যা ডেটাকে সহজে সঞ্চয়, বিশ্লেষণ এবং পরিচালনা করতে সহায়ক। এখানে আমরা CouchDB Database, Document, এবং JSON এর সম্পর্ক এবং তাদের কাজ করার পদ্ধতি নিয়ে বিস্তারিত আলোচনা করব।
1. CouchDB Database
CouchDB Database হল সেই পরিবেশ যেখানে Documents সংরক্ষণ করা হয়। একটি CouchDB ডাটাবেস একটি অসংখ্য ডকুমেন্ট ধারণ করতে পারে, এবং প্রতিটি ডকুমেন্টের মধ্যে থাকা ডেটা JSON ফরম্যাটে সংরক্ষিত হয়।
- ডাটাবেস নাম: CouchDB তে প্রতিটি ডাটাবেসের একটি নির্দিষ্ট নাম থাকে এবং এক ডাটাবেসে একাধিক ডকুমেন্ট সংরক্ষণ করা যায়। CouchDB ডাটাবেস নাম সাধারণত alphanumeric characters দিয়ে গঠিত হয়।
- ডাটাবেসে ডেটা সংরক্ষণ: CouchDB ডেটার স্কিমা নির্ধারণের জন্য কোন নির্দিষ্ট কাঠামো ব্যবহার করে না, ফলে বিভিন্ন ডকুমেন্ট একই ডাটাবেসে একে অপরের থেকে ভিন্ন কাঠামো ধারণ করতে পারে।
- ডাটাবেসের ব্যবস্থাপনা: CouchDB একটি ওয়েব ভিত্তিক ইন্টারফেস (Futon বা Fauxton) প্রদান করে, যার মাধ্যমে ডাটাবেস তৈরি, পরিচালনা এবং কনফিগার করা যায়।
2. Document in CouchDB
Document হল CouchDB তে ডেটা সংরক্ষণের মৌলিক একক। প্রতিটি ডকুমেন্টের নিজস্ব একটি _id (অন্যতম পরিচিতি) এবং _rev (রিভিশন নম্বর) থাকে। এটি JSON ফরম্যাটে সংরক্ষিত থাকে, যেখানে ডকুমেন্টের মধ্যে থাকা ডেটা একটি key-value pair হিসেবে থাকে। ডকুমেন্টের মধ্যে থাকা key-value পেয়ারগুলো যে কোন ধরনের তথ্য ধারণ করতে পারে যেমন নাম, ঠিকানা, ইমেইল, বা অন্যান্য স্ট্রাকচার্ড বা আনস্ট্রাকচার্ড ডেটা।
ডকুমেন্টের গঠন:
- _id: ডকুমেন্টের একটি ইউনিক আইডেন্টিফায়ার, যা CouchDB তে ডকুমেন্টের মূল চিহ্ন হিসেবে কাজ করে।
_idএকটি অনন্য চিহ্ন এবং এটি ডকুমেন্টটি চিহ্নিত করতে ব্যবহৃত হয়। - _rev: ডকুমেন্টের রিভিশন নম্বর, যা Multi-Version Concurrency Control (MVCC) প্রক্রিয়াতে ডকুমেন্টের সংস্করণ ট্র্যাক করতে ব্যবহৃত হয়।
- key-value pairs: ডকুমেন্টে key-value ফরম্যাটে ডেটা থাকে, যেখানে key হলো ডেটার নাম এবং value হলো ডেটার মান।
উদাহরণ:
{
"_id": "12345",
"_rev": "1-2345",
"name": "John Doe",
"email": "john.doe@example.com",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Springfield",
"zip": "12345"
}
}
উপরে দেখানো JSON ডকুমেন্টে:
- _id হলো "12345"
- _rev হলো "1-2345"
- ডকুমেন্টের অন্যান্য key-value পেয়ারগুলি name, email, age, এবং address যা মানুষের তথ্য এবং অ্যাড্রেস তথ্য ধারণ করছে।
3. JSON in CouchDB
JSON (JavaScript Object Notation) হলো একটি হালকা, পাঠযোগ্য ডেটা বিনিময় ফরম্যাট যা সি, সি++, পাইটন, জাভা, জাভাস্ক্রিপ্ট সহ অধিকাংশ প্রোগ্রামিং ভাষায় সমর্থিত। CouchDB ডেটাকে JSON ফরম্যাটে সংরক্ষণ করে, যা ডকুমেন্টগুলোকে একটি নির্দিষ্ট কাঠামোতে সহজে সংরক্ষণ, আদান-প্রদান এবং বিশ্লেষণ করতে সহায়ক।
JSON ফরম্যাটের গঠন:
- Keys: JSON ডেটাতে string ধরনের key থাকে।
- Values: JSON ডেটার value যে কোন ধরনের হতে পারে: string, number, object, array, boolean, বা null।
JSON এর উদাহরণ:
{
"name": "Alice",
"age": 25,
"isStudent": true,
"address": {
"city": "New York",
"zipCode": "10001"
},
"hobbies": ["reading", "travelling", "coding"]
}
এই JSON ডেটাতে:
- name, age, isStudent হল key এবং তাদের মানগুলো হল value।
- address একটি nested object যা JSON ফরম্যাটে আরও key-value পেয়ার ধারণ করে।
- hobbies একটি array, যা একাধিক মান ধারণ করে।
4. CouchDB এবং JSON এর সম্পর্ক
- CouchDB ডকুমেন্টগুলো JSON ফরম্যাটে সংরক্ষণ করে, ফলে ডেটার স্ট্রাকচার সহজে পরিবর্তনযোগ্য এবং স্কিমা-লেস। এটি CouchDB কে একটি অত্যন্ত নমনীয় এবং ফ্লেক্সিবল ডাটাবেস তৈরি করে, যেখানে ডেটা বিভিন্ন কাঠামোতে থাকতে পারে, যেমন অ্যারে, অবজেক্ট বা বিভিন্ন ডেটা টাইপের মিশ্রণ।
- CouchDB তে JSON ডেটার ব্যবহার: JSON ফরম্যাটের কারণে, ডেটা সাধারণত মানুষের পক্ষে পড়া এবং লেখার জন্য সহজ, এবং এটি অন্যান্য সিস্টেম এবং অ্যাপ্লিকেশনগুলির সাথে ইন্টিগ্রেট করতে সক্ষম।
উপসংহার
CouchDB একটি শক্তিশালী, Document-Oriented NoSQL Database যা ডেটাকে JSON ফরম্যাটে Document আকারে সংরক্ষণ করে। এই ডেটা স্টোরেজ পদ্ধতি CouchDB কে একটি নমনীয়, স্কেলেবেল এবং দ্রুত ডেটা অ্যাক্সেসের জন্য উপযুক্ত ডাটাবেস সিস্টেম হিসেবে তৈরি করে। JSON ফরম্যাটে ডেটা সংরক্ষণ করার কারণে CouchDB বিভিন্ন ধরনের ডেটা স্ট্রাকচার এবং অ্যাপ্লিকেশনগুলির সাথে সহজে কাজ করতে পারে।
CouchDB একটি RESTful API প্রদান করে, যা HTTP প্রোটোকলের মাধ্যমে ডেটাবেসের সাথে যোগাযোগ এবং ডেটা ম্যানিপুলেশন করতে সক্ষম। REST API ব্যবহার করে আপনি CRUD (Create, Read, Update, Delete) অপারেশনগুলি সম্পাদন করতে পারবেন, এবং CouchDB এর বিভিন্ন ফিচার যেমন ডকুমেন্ট ম্যানেজমেন্ট, কুয়েরি, রেপ্লিকেশন এবং আরও অনেক কিছু পরিচালনা করা যাবে।
CouchDB এর REST API একটি JSON ভিত্তিক API, যা HTTP রিকুয়েস্ট (GET, PUT, POST, DELETE) ব্যবহার করে যোগাযোগ করে। CouchDB এ প্রতিটি ডেটাবেস এবং ডকুমেন্টের সাথে যোগাযোগ HTTP রিকুয়েস্টের মাধ্যমে ঘটে।
CouchDB REST API এর মূল উপাদান
- Database Operations (ডেটাবেস অপারেশন)
Create a Database
নতুন একটি ডেটাবেস তৈরি করতে PUT রিকুয়েস্ট পাঠাতে হবে।PUT /{db_name}উদাহরণ:
PUT /mydatabaseList Databases
সকল ডেটাবেসের তালিকা পেতে GET রিকুয়েস্ট পাঠাতে হবে।GET /_all_dbsএটি সকল ডেটাবেসের নামের একটি অ্যারে প্রদান করবে।
Delete a Database
একটি ডেটাবেস মুছে ফেলতে DELETE রিকুয়েস্ট পাঠাতে হবে।DELETE /{db_name}উদাহরণ:
DELETE /mydatabase
- Document Operations (ডকুমেন্ট অপারেশন)
Create a Document
একটি নতুন ডকুমেন্ট তৈরি করতে POST রিকুয়েস্ট পাঠাতে হবে, এবং ডেটা JSON ফরম্যাটে পাঠাতে হবে।POST /{db_name}উদাহরণ:
POST /mydatabase { "name": "John Doe", "age": 30 }Read a Document
একটি নির্দিষ্ট ডকুমেন্ট পড়তে GET রিকুয়েস্ট পাঠাতে হবে, যেখানে ডকুমেন্টের _id প্রদান করতে হবে।GET /{db_name}/{doc_id}উদাহরণ:
GET /mydatabase/12345Update a Document
একটি ডকুমেন্ট আপডেট করতে PUT রিকুয়েস্ট পাঠাতে হবে এবং ডকুমেন্টের _id এবং _rev প্রদান করতে হবে।PUT /{db_name}/{doc_id}উদাহরণ:
PUT /mydatabase/12345 { "_rev": "1-abc", "name": "Jane Doe", "age": 32 }Delete a Document
একটি ডকুমেন্ট মুছে ফেলতে DELETE রিকুয়েস্ট পাঠাতে হবে এবং _rev প্রদান করতে হবে।DELETE /{db_name}/{doc_id}?rev={rev_id}উদাহরণ:
DELETE /mydatabase/12345?rev=1-abc
- View and Query Operations (ভিউ এবং কুয়েরি অপারেশন)
List Views
একটি ডেটাবেসের সমস্ত ভিউ দেখতে GET রিকুয়েস্ট পাঠাতে হবে।GET /{db_name}/_design/{design_doc}/_view/{view_name}উদাহরণ:
GET /mydatabase/_design/design_doc/_view/view_nameQuery Views
কাস্টম কুয়েরি তৈরি করতে, আপনি MapReduce এর মাধ্যমে views তৈরি এবং কুয়েরি করতে পারেন।GET /{db_name}/_design/{design_doc}/_view/{view_name}?key={key_value}উদাহরণ:
GET /mydatabase/_design/design_doc/_view/view_name?key="John Doe"
- Replication Operations (রেপ্লিকেশন অপারেশন)
Start Replication
CouchDB রেপ্লিকেশন শুরু করতে POST রিকুয়েস্ট পাঠাতে হবে।POST /_replicateউদাহরণ:
POST /_replicate { "source": "source_db", "target": "target_db" }
- Changes Feed (চেঞ্জেস ফিড)
Track Changes in a Database
CouchDB একটি _changes এন্ডপয়েন্ট প্রদান করে, যা ডেটাবেসে হওয়া পরিবর্তনগুলোর একটি ফিড প্রদান করে।GET /{db_name}/_changesউদাহরণ:
GET /mydatabase/_changes
CouchDB REST API উদাহরণ
1. ডেটাবেস তৈরি
PUT /mydatabase
2. ডকুমেন্ট তৈরি
POST /mydatabase
{
"name": "Alice",
"age": 25
}
3. ডকুমেন্ট পড়া
GET /mydatabase/1a2b3c4d
4. ডকুমেন্ট আপডেট
PUT /mydatabase/1a2b3c4d
{
"_rev": "1-xyz",
"name": "Alice",
"age": 26
}
5. ডকুমেন্ট মুছে ফেলা
DELETE /mydatabase/1a2b3c4d?rev=1-xyz
CouchDB REST API এর সুবিধা
- সিম্পল এবং ফ্লেক্সিবল: CouchDB-এর REST API সহজে ব্যবহারযোগ্য এবং JSON ফরম্যাটে ডেটার সাথে কাজ করা সহজ করে তোলে।
- HTTP ভিত্তিক: HTTP প্রোটোকল ব্যবহার করে, যেকোনো প্ল্যাটফর্ম বা প্রোগ্রামিং ভাষা থেকে সহজেই অ্যাক্সেস করা সম্ভব।
- ডিস্ট্রিবিউটেড রেপ্লিকেশন: CouchDB রেপ্লিকেশন সমর্থন করে, যা ডেটাকে একাধিক সার্ভারে সিঙ্ক্রোনাইজ করে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।
- কাস্টম কুয়েরি সমর্থন: View এবং MapReduce ফাংশনের মাধ্যমে কাস্টম কুয়েরি তৈরি এবং চালানো যায়, যা ডেটাকে আরও কার্যকরভাবে বিশ্লেষণ করতে সাহায্য করে।
CouchDB REST API একটি শক্তিশালী ও নমনীয় সমাধান প্রদান করে, যা ডেটাবেস ম্যানেজমেন্ট, ডেটা রেপ্লিকেশন, এবং কুয়েরি অপারেশন সহজে করতে সক্ষম।
CouchDB একটি RESTful API প্রদান করে, যার মাধ্যমে HTTP প্রোটোকল ব্যবহার করে ডেটাবেস এবং ডকুমেন্ট তৈরি করা যায়। এই API-র মাধ্যমে আপনি HTTP রিকুয়েস্ট পাঠিয়ে ডেটাবেস পরিচালনা করতে পারেন, যেমন নতুন ডেটাবেস তৈরি, ডকুমেন্ট তৈরি, আপডেট এবং ডিলিট করা।
1. ডেটাবেস তৈরি করা
CouchDB API ব্যবহার করে নতুন ডেটাবেস তৈরি করা খুবই সহজ। একটি HTTP PUT রিকুয়েস্ট পাঠিয়ে নতুন ডেটাবেস তৈরি করা হয়।
এটা কিভাবে করবেন:
- URL:
http://<server_ip>:<port>/<db_name> - HTTP Method:
PUT - প্রতিক্রিয়া (Response): যদি সফল হয়, তাহলে 201 HTTP স্ট্যাটাস কোড পাওয়া যাবে।
উদাহরণ:
ধরা যাক আপনি একটি নতুন ডেটাবেস তৈরি করতে চান যার নাম mydatabase।
curl -X PUT http://127.0.0.1:5984/mydatabase
এটি আপনার CouchDB সার্ভারে নতুন ডেটাবেস mydatabase তৈরি করবে। যদি সফল হয়, আপনি এই ধরনের একটি প্রতিক্রিয়া পাবেন:
{
"ok": true
}
2. ডকুমেন্ট তৈরি করা
CouchDB ডকুমেন্ট তৈরি করার জন্য POST রিকুয়েস্ট ব্যবহার করা হয়। একটি ডকুমেন্ট JSON ফরম্যাটে তৈরি এবং ডেটাবেসে ইনসার্ট করা হয়।
এটা কিভাবে করবেন:
- URL:
http://<server_ip>:<port>/<db_name> - HTTP Method:
POST - ডেটা: ডকুমেন্টের জন্য JSON ডেটা।
- প্রতিক্রিয়া (Response): নতুন ডকুমেন্টের _id এবং _rev সহ প্রতিক্রিয়া।
উদাহরণ:
ধরা যাক আপনি mydatabase ডেটাবেসে একটি নতুন ডকুমেন্ট তৈরি করতে চান, এবং ডকুমেন্টের মধ্যে একটি নাম এবং বয়স থাকবে।
curl -X POST http://127.0.0.1:5984/mydatabase -H "Content-Type: application/json" -d '{
"name": "John Doe",
"age": 30
}'
এটি একটি নতুন ডকুমেন্ট তৈরি করবে, এবং আপনি এই ধরনের প্রতিক্রিয়া পাবেন:
{
"id": "some_unique_id",
"rev": "1-xxxxxxx"
}
এখানে id ডকুমেন্টের ইউনিক আইডি এবং rev ডকুমেন্টের সংস্করণ।
3. ডকুমেন্টে ডেটা আপডেট করা
CouchDB ডকুমেন্ট আপডেট করতে, প্রথমে সংশ্লিষ্ট ডকুমেন্টের _id এবং _rev প্রয়োজন হয়। এই তথ্য ব্যবহার করে আপনি PUT রিকুয়েস্ট পাঠিয়ে ডকুমেন্টের ডেটা আপডেট করতে পারেন।
এটা কিভাবে করবেন:
- URL:
http://<server_ip>:<port>/<db_name>/<doc_id> - HTTP Method:
PUT - ডেটা: আপডেট হওয়া JSON ডেটা।
- প্রতিক্রিয়া (Response): আপডেট করা ডকুমেন্টের _rev সহ প্রতিক্রিয়া।
উদাহরণ:
ধরা যাক আপনার mydatabase ডেটাবেসে একটি ডকুমেন্ট রয়েছে যার _id some_unique_id এবং _rev 1-xxxxxxx। আপনি ডকুমেন্টের নাম এবং বয়স আপডেট করতে চান।
curl -X PUT http://127.0.0.1:5984/mydatabase/some_unique_id -H "Content-Type: application/json" -d '{
"name": "John Doe",
"age": 31,
"_rev": "1-xxxxxxx"
}'
এটি ডকুমেন্টের age আপডেট করবে এবং নতুন _rev প্রদান করবে।
4. ডকুমেন্ট মুছে ফেলা
CouchDB ডকুমেন্ট মুছে ফেলতে হলে, প্রথমে সংশ্লিষ্ট ডকুমেন্টের _id এবং _rev এর প্রয়োজন হয়। এরপর DELETE রিকুয়েস্ট পাঠিয়ে ডকুমেন্ট মুছে ফেলা হয়।
এটা কিভাবে করবেন:
- URL:
http://<server_ip>:<port>/<db_name>/<doc_id> - HTTP Method:
DELETE - প্রতিক্রিয়া (Response): মুছে ফেলা ডকুমেন্টের _rev সহ প্রতিক্রিয়া।
উদাহরণ:
ধরা যাক আপনি mydatabase ডেটাবেসের একটি ডকুমেন্ট মুছে ফেলতে চান, যার _id some_unique_id এবং _rev 2-yyyyyy।
curl -X DELETE http://127.0.0.1:5984/mydatabase/some_unique_id?rev=2-yyyyyy
এটি ডকুমেন্টটি মুছে ফেলবে এবং সফল হলে নিচের মতো একটি প্রতিক্রিয়া পাবেন:
{
"ok": true
}
সারসংক্ষেপ
CouchDB এর HTTP API একটি শক্তিশালী উপায় যা ডেটাবেস এবং ডকুমেন্টের পরিচালনা, যেমন তৈরি, আপডেট, ডিলিট ইত্যাদি কার্যক্রমকে সহজ করে। HTTP রিকুয়েস্টের মাধ্যমে, আপনি CouchDB এর সাথে যোগাযোগ করতে পারেন এবং JSON ডেটার মাধ্যমে ডেটাবেসের তথ্য পরিচালনা করতে পারেন। RESTful API ব্যবহারের মাধ্যমে এটি ডেভেলপারদের জন্য একটি অত্যন্ত নমনীয় এবং স্কেলেবল সমাধান প্রদান করে।
CouchDB এর RESTful API ব্যবহার করে বিভিন্ন ডেটাবেস এবং ডকুমেন্টের উপর কার্যকরী কাজ করা যায়। এই API গুলো ডেটাবেস এবং ডকুমেন্টের অবস্থা দেখতে এবং তাদের মধ্যে পরিবর্তন ট্র্যাক করতে সাহায্য করে। নিচে _all_dbs, _all_docs, এবং _changes API গুলোর বিস্তারিত আলোচনা করা হলো।
1. _all_dbs API
_all_dbs API ব্যবহার করে CouchDB সার্ভারে উপলব্ধ সকল ডেটাবেসের তালিকা পাওয়া যায়। এটি খুবই কার্যকরী যখন আপনি সার্ভারে কতগুলি ডেটাবেস আছে তা দেখতে চান।
ব্যবহার
- এন্ডপয়েন্ট:
GET /_all_dbs - ফাংশন: সমস্ত উপলব্ধ ডেটাবেসের নামের একটি তালিকা ফেরত দেয়।
উদাহরণ:
GET /_all_dbs
প্রত্যাবর্তিত ফলাফল:
[
"db1",
"db2",
"db3"
]
বৈশিষ্ট্য:
- এই API শুধুমাত্র ডেটাবেসের নাম ফিরিয়ে দেয়, ডেটাবেসের বিষয়বস্তু বা তাদের মধ্যে কোন ডেটা নেই।
- সার্ভারের মধ্যে সমস্ত ডেটাবেসের তালিকা পেতে এটি ব্যবহৃত হয়।
2. _all_docs API
_all_docs API ব্যবহার করে একটি নির্দিষ্ট ডেটাবেসের সকল ডকুমেন্টের তালিকা পাওয়া যায়। এটি একটি ডেটাবেসে সংরক্ষিত সমস্ত ডকুমেন্টের _id, _rev, এবং অন্যান্য মেটাডেটা প্রদান করে।
ব্যবহার
- এন্ডপয়েন্ট:
GET /{database}/_all_docs - ফাংশন: একটি ডেটাবেসের সব ডকুমেন্টের তালিকা ফেরত দেয়।
উদাহরণ:
GET /mydb/_all_docs
প্রত্যাবর্তিত ফলাফল:
{
"rows": [
{
"id": "doc1",
"key": "doc1",
"value": {
"rev": "1-967a00dff5e02add41819138abb7f4f8"
}
},
{
"id": "doc2",
"key": "doc2",
"value": {
"rev": "2-9c97b3c930f3548f522dcd90f93a4d28"
}
}
]
}
বৈশিষ্ট্য:
- ডকুমেন্টের metadata (যেমন
idএবংrev) প্রদান করা হয়। limitএবংskipপ্যারামিটার ব্যবহার করে আপনি রেকর্ডের পরিসীমা নির্ধারণ করতে পারেন।- আপনি
include_docs=trueপ্যারামিটার ব্যবহার করে ডকুমেন্টের পূর্ণ তথ্য (অথবা কন্টেন্ট) দেখতে পারেন।
উদাহরণ (সঙ্গে ডকুমেন্ট):
GET /mydb/_all_docs?include_docs=true
প্রত্যাবর্তিত ফলাফল:
{
"rows": [
{
"id": "doc1",
"key": "doc1",
"doc": {
"_id": "doc1",
"_rev": "1-967a00dff5e02add41819138abb7f4f8",
"name": "John",
"age": 30
}
},
{
"id": "doc2",
"key": "doc2",
"doc": {
"_id": "doc2",
"_rev": "2-9c97b3c930f3548f522dcd90f93a4d28",
"name": "Jane",
"age": 25
}
}
]
}
3. _changes API
_changes API CouchDB ডাটাবেসে সমস্ত পরিবর্তনের (insert, update, delete) একটি তালিকা প্রদান করে। এটি changes feed হিসেবে পরিচিত এবং এটি খুবই উপকারী যখন আপনি একটি ডেটাবেসের উপর ট্র্যাকিং করতে চান যে কখন এবং কী ধরনের পরিবর্তন হয়েছে।
ব্যবহার
- এন্ডপয়েন্ট:
GET /{database}/_changes - ফাংশন: ডেটাবেসে সমস্ত পরিবর্তন ট্র্যাক করে।
উদাহরণ:
GET /mydb/_changes
প্রত্যাবর্তিত ফলাফল:
{
"results": [
{
"seq": "1-g1o7h4",
"id": "doc1",
"changes": [
{
"rev": "1-967a00dff5e02add41819138abb7f4f8"
}
]
},
{
"seq": "2-g1o7h5",
"id": "doc2",
"changes": [
{
"rev": "2-9c97b3c930f3548f522dcd90f93a4d28"
}
]
}
]
}
বৈশিষ্ট্য:
seq: পরিবর্তনের সিকোয়েন্স নম্বর।id: সংশ্লিষ্ট ডকুমেন্টের ID।changes: পরিবর্তনের রিভিশন।sinceপ্যারামিটার ব্যবহার করে পূর্বের নির্দিষ্ট স্থান থেকে পরিবর্তন দেখতে পারেন।feedপ্যারামিটার (longpoll, continuous, normal) ব্যবহার করে আপনি একাধিক পরিবর্তন দেখতে পারেন।
উদাহরণ (continuous feed):
GET /mydb/_changes?feed=continuous
এই কনফিগারেশন ডেটাবেসের উপর লাইভ পরিবর্তন ট্র্যাক করতে সক্ষম।
সারাংশ
_all_dbsAPI: সমস্ত ডেটাবেসের নামের একটি তালিকা প্রদান করে।_all_docsAPI: নির্দিষ্ট ডেটাবেসের সমস্ত ডকুমেন্টের তালিকা এবং মেটাডেটা প্রদান করে।_changesAPI: ডেটাবেসের পরিবর্তনের ইতিহাস বা পরিবর্তন সিকোয়েন্স ট্র্যাক করতে সাহায্য করে।
এই API গুলো CouchDB এর সাথে ইন্টিগ্রেশন এবং ডেটাবেস পরিচালনার জন্য অত্যন্ত কার্যকরী, বিশেষত যখন আপনি ডেটাবেসের উপর নিরীক্ষণ করতে চান বা পরিবর্তন ট্র্যাক করতে চান।
Read more