CouchDB پروژه پايگاه داده جديد آپاچی
پايگاههاي داده مبتني بر سند، از جديدترين سيستمهاي مديريت پايگاههاي داده به شمار ميآيند. (مثل لوسنت از همین آپاچی)
اين نوع از پايگاه داده، بر خلاف ديتابيسهاي رابطهاي، دادهها را در جداول ذخيره نميكنند و در نتيجه، هيچ اندازه ثابتي براي دادهها در نظر نميگيرند. اما، از طرف ديگر، هر ركورد بهعنوان سندي با ويژگيهاي خاص ذخيره ميشود. در اين سند، هر تعداد فيلد با هر طولي ميتواند ذخيره شود. براي مثال، سند زير را در نظر بگيريد:
FirstName=”Bob”, Address=”5 Oak St.”, m Hobby=”Sailing”.
اين سند ميتواند يك ركورد ديتابيس باشد. از طرف ديگر، سند زير هم ميتواند ركورد ديگري از همان ديتابيس باشد:
FirstName="Jonathan", Address="15 Wanamassa Point Road", Children=("Michael,10", "Jennifer,8", "Samantha,5", "Elena,2").
حتما به اين نكته توجه كردهايد كه بين اين 2سند ممكن است فيلد يكسان وجود داشته باشد و ممكن است هر كدام براي خود ويژگيهاي خاصي داشته باشند. نكته جالب ديگر در مورد پايگاههاي داده مبتني بر سند، اين است كه هيچ فيلدي امكان خالي بودن ندارد. بهاين ترتيب، اين سيستم قابليت افزودن داده در هر زمان را دارد و فضا را نسبت به ديتابيس رابطهاي كمتر هدر مي رود. جالب است بدانيد اين نوع از پايگاه داده، به 3فرمت XML، YAML و JSON سندهاي خود را ذخيره ميكند.
قبل از آنكه پروژه آپاچي، يعني CouchDB كه پايگاه داده مبتني بر سند است را معرفي كنيم، لازم است اشارهاي داشته باشيم به كاربرد اين پايگاه داده در اوبونتو نگارش 10/9 كه در سرويس Ubuntu One خود از اين پايگاه داده براي همخواني و انتقال فايلها بين چند سيستم استفاده ميكند.
ريلكس باشيد
كنار لوگوي CouchDB، شعار Relax مشاهده ميشود.
دليل اين كار اين است كه قرار است مشكلاتي كه ممكن است در ايجاد ديتابيس توزيعشده مبتني بر سند بهوجود بيايد، با پايگاه داده كوچ حل شود. اين پايگاه داده كارهاي زيادي براي شما انجام ميدهد. تنها لازم است روي خود نرمافزار متمركز شويد و نگران مديريت يا مشكلات جانبي نباشيد.
اين پايگاه داده همچنين رابط برنامهنويسي (API) ساده و قابل فهمي دارد كه RESTful است (از طريق REST ميتوان دادهها را مستقیما ارسال يا دريافت كرد، یعنی زبان خاصی لازم نیست ! ...) اگر خودتان از اين پايگاه داده استفاده كنيد، متوجه خواهيد شد كه آنچه خوانديد تبليغات تجاري نيست.
قابليتها
اين پايگاه داده قابليتهاي زيادي دارد كه گفتن همه آنها ممكن است. بنابراين ويژگيهاي اصلي آن را مطرح خواهيم كرد.
ذخيرهسازي سندها
همانطور كه گفتيم، كوچديبي سندها را در خود ذخيره ميكند. اين دادهها را ميتوانيد بهعنوان يك سند يا مجموعهاي از چند جفت كليد و داده تصور كنيد. دادهها ميتوانند به فرم سادهاي مثل رشته، عدد يا تاريخ باشند، يا اينكه از ليستهاي مرتب شده و انواع آرايهها تشكيل شده باشند. هر سند در ديتابيس كوچ يك شناسه منحصر بهفرد دارد.
اسيد
ديتابيس كوچ اسيد را بهخوبي پياده كرده است (اسيد يعني اتميك بودن، ثابت بودن، ايزوله بودن و دوام داشتن يك عمليات است كه اطمينان ميدهد هر دستور در ديتابيس بهطور كامل انجام شده است). اين پايگاه داده مجهز به كنترل موازي چند نگارشي (MVCC) است و برخلاف InnoDB يا اوراكل، ميتواند خواندن و نوشتنهاي موازي در حجم بالا را بدون هيچ مشكلي راه بيندازد.
نگاشت/كاهش View ها و ایندکس ها
براي اينكه بتوان كمي ساختار به پايگاه داده داد، ميتوان از نمايهها (Views) استفاده كرد كه عملكردي مشابه با پايگاهداده رابطهاي دارند. در كوچ، هر View را يك فانكشن جاوااسكريپت ميسازد (تعجب نكنيد، درست خوانديد، جاوااسكريپت سمت سرور) كه بهعنوان نقشه نگاشت اين عمليات خواهد بود. اين تابع يك سند را بهعنوان ورودي دريافت ميكند و يك متغير را بهعنوان خروجي پس ميدهد. منطق تابع جاوااسكريپت شما كمابيش پيچيده خواهد شد.
همانطور كه خودتان هم حدس زدهايد، چنين تابعي ميتواند هزينه سنگيني روي دوش ديتابيس بگذارد. ديتابيس كوچ ميتواند اين نمايهها را شاخصبندي (ایندکس) كرده و هنگام بهروزآوري، ايجاد يا حذف ركوردها، اين نمايهها را هم بهروز كند. با اين مكانيزم شاخصبندي، سرور دچار كندي نميشود.
معماري توزيعي و همتاسازي
طراحي اوليه كوچ را با در نظر گرفتن همتاسازي 2طرفه (همخوانسازي يا Synchronization) و عمليات آفلاين انجام دادهاند. اين يعني هر بخش ميتواند داده خود را داشته باشد، آن را ويرايش كند و بعد اين تغييرات را همخوان كند.
Erlang
همانند ديگر ديتابيسهاي توزيعي همنسل كوچ، اين ديتابيس را هم بهزبان Erlang نوشتهاند و از پلتفرمErlang OTP استفاده ميكند. ارلنگ زباني است كه براي سيستمهاي مخابراتي سريع و پايدار استفاده ميشد، اما برنامهنويسان آن را برنامه جالبي براي پيادهسازي سرويسهاي شبكه يافتهاند. ارلنگ دادهها و فرآيندهاي سبك را كه از انتقال پيام براي اتصالات استفاده ميكنند، جدا ميكند. ضمن آنكه پلتفرم OTP راهكارهايي براي ايجاد سيستمهاي توزيعشده، بيدرنگ و با دسترسي بالا در اختيار ميگذارد. با توجه به رشد سرويسهاي شبكهاي، بهره بردن از اين پلتفرم و اين زبان، يك امتياز براي كوچ بهحساب ميآيد.
نصب كوچ
براي نصب كوچ در اوبونتو كافي است دستور زير را وارد كنيد:
sudo apt-get install couchdb
بعد از اينكه نزديك به 30 مگابايت داده از روي اينترنت دريافت شد، كوچ اجرا شده منتظر دستورات شما است.
كافي است آن را تست كنيد كه آيا كار ميكند يا خير. براي تست آن، دستور زير را وارد كنيد:
اگر اين دستور كار كرد، نصب آن با موفقيت بهپايان رسيده است.
رابط كاربري تحت وب فوتون
بعد از اينكه كوچ را نصب و راهاندازي كرديد، ميتوانيد با مراجعه به آدرس زير، رابط كاربري اين پايگاه داده را مشاهده كنيد:
نام اين رابط كاربري فوتون است و براي چك كردن دادهها و انجام عمليات سادهاي همچون ايجاد ديتابيس، حذف ديتابيس، مديريت سندها و ... كاربرد دارد.
براي اطلاعات بيشتر در مورد اين پايگاه داده، به آدرسهاي زير رجوع كنيد: