برنامه‌نویسی

Apache CouchDB چیست؟


۱۰ مرداد ۱۳۹۹
Apache CouchDB چیست؟

دیتابیس Apache CouchDB توسط بنیاد نرم‌افزاری Apache توسعه داده شده و اولین بار در سال 2005 منتشر شده و با زبان Erlang نوشته شده است. یک دیتابیس متن‌باز که از فرمت‌ها و پروتکل‌های مختلفی برای ذخیره، انتقال و پردازش داده‌های خود استفاده می‌کند.

از JSON برای ذخیره داده‌ها، از زبان JavaScript به عنوان زبان کوئری با روش پردازش MapReduce و از HTTP برای API استفاده می‌کند. داکیومنت‌ها، واحدهای اصلی این دیتابیس هستند و metadataها را شامل می‌شوند. فیلدهای داکیومنت، به‌صورت منحصربه‌فرد نامگذاری شده‌اند و مقادیری با نوع‌های مختلف را شامل می‌شوند، هیچ محدودیتی برای اندازه متن یا تعداد عناصر وجود ندارد.

تاریخچه دیتابیس CouchDB

CouchDB با زبان Erlang نوشته شده است. این پروژه توسط Damien Katz در سال 2005 آغاز و در سال 2008 به پروژه شرکت Apache تبدیل شد. نسخه فعلی CouchDB 3.1 است.

معماری دیتابیس CouchDB

معماری couchdb

معماری CouchDB در زیر شرح داده شده است:

  1. CouchDB Engine: بر اساس B-tree است. داده‌ها توسط کلید‌ها یا محدوده‌های کلید که به‌طور مستقیم map می‌شوند تا در اختیار عملیات‌ B-Tree قرار بگیرند.
  2. HTTP Request: برای ایجاد شاخص‌ها و استخراج داده‌ها از داکیومنت‌ها استفاده می‌شود. با زبان جاوااسکریپت نوشته شده است که اجازه ساخت Adhoc views را می‌دهد که با MapReduce ایجاد شده‌ند.
  3. Document: حجم زیادی از داده‌ها را ذخیره می‌کند.
  4. دیتابیس Replica: این قسمت برای replicating (replicate در دیتابیس‌ها به این معنی است که از یک دیتابیس مرکزی داده‌ها در دیتابیس‌های جزئی‌تر کپی شوند) داده‌ها در یک دیتابیس لوکال، یا ریموت و طراحی همزمان داکیومنت‌ها مورد استفاده قرار می‌گیرد.

ویژگی‌های دیتابیس CouchDB

ویژگی‌های دیتابیس CouchDB موارد زیر را شامل می‌شود:

  1. Replication: این دیتابیس ساده‌ترین شکل replication را ارائه می‌دهد، هیچ دیتابیسی دیگری در این مورد به این اندازه ساده نیست.
  2. Document Storage: این یک دیتابیس NoSQL است که از document storage پیروی می‌کند و در آن هر فیلد به‌طور اختصاصی نامگذاری می‌شود و مقادیری از انواع داده‌های مختلف مانند متن، اعداد، Boolean، لیست‌ها و … در آن قرار می‌گیرند.
  3. خصوصیات ACID: طراحی فایل CouchDB از تمام خصوصیات ACID پیروی می‌کند.
  4. امنیت: همچنین امنیت در سطح دیتابیس را ارائه می‌کند و مجوزها به readers و admins تقسیم می‌شود، که خوانندگان می‌توانند عملیات خواندن و نوشتن در دیتابیس را انجام دهند.
  5. Map/Reduce: دلیل اصلی محبوبیت CouchDB استفاده از سیستم پردازشی Map/Reduce است.
  6. احرازهویت: CouchDB در حفظ احرازهویت از طریق سشن و کوکی مانند یک برنامه تحت وب، به ما کمک می‌کند.
  7. ساخته شده برای کارهای آفلاین: CouchDB می‌تواند در دستگاهای مختلف مانند گوشی‌های هوشمند که قابلیت رفتن به حالت آفلاین را دارند، replicate شود و هنگامی که گوشی به حالت آنلاین برگشت، همگام‌سازی داده‌ها را برای شما انجام دهد.
  8. Eventual Consistency: دیتابیس CouchDB، مواردی مانند در دسترس بودن و Partition tolerance را که از eventual consistency نشات می‌گیرند را ضمانت می‌کند.
  9. HTTP API: همه موارد دارای یک URI (Unique Resource Identifier) منحصربه‌فرد هستند که از طریق HTTP نمایش داده می‌شوند. از متد‌های HTTP مانند POST, GET, PUT و Delete برای چهار عملیات CRUD (Create, Read, Update, Delete) استفاده می‌کند.

مزیت‌های دیتابیس CouchDB

مزایای دیتابیس CouchDB موارد زیر را شامل می‌شود:

  1. از HTTP API برای ارتباط آسان‌تر استفاده می‌شود.
  2. این دیتابیس می‌تواند هر نوع داده‌ای را ذخیره کند.
  3. ReduceMap امکان بهینه‌سازی ترکیب داده‌ها را فراهم می‌کند.
  4. ساختار CouchDB بسیار ساده است.
  5. indexing و بازیابی سریعی دارد.

معایب دیتابیس CouchDB

معایب دیتابیس CouchDB موارد زیر را شامل می‌شود:

  1. CouchDB فضای زیادی برای overhead اشغال می‌کند، که یکی از مهم‌ترین معایب این دیتابیس در مقایسه با سایر دیتابیس‌ها به شما می‌رود.
  2. اجرای کوئری‌های Arbitrary، بسیار هزینه‌بر است.
  3. CouchDB در مقایسه با بقیه دیتابیس‌ها، overhead بیش‌تری ایجاد می‌کند.
  4. ممکن است Temporary viewها در مجموعه داده‌های عظیم بسیار کند باشند.
  5. از transactionها پشتیبانی نمی‌کند.
  6. ممکن است Replication در دیتابیس‌های بزرگ با شکست روبرو شود.

منبع: https://www.geeksforgeeks.org/introduction-to-apache-couchdb