در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
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 یا اوراکل، میتواند خواندن و نوشتنهای موازی در حجم بالا را بدون هیچ مشکلی راه بیندازد.
نگاشت/کاهش نمایهها و شاخصها
برای اینکه بتوان کمی ساختار به پایگاه داده داد، میتوان از نمایهها (Views) استفاده کرد که عملکردی مشابه با پایگاهداده رابطهای دارند. در کوچ، هر نمایه را یک فانکشن جاوااسکریپت میسازد (تعجب نکنید، درست خواندید، جاوااسکریپت سمت سرور) که بهعنوان نقشه نگاشت این عملیات خواهد بود. این تابع یک سند را بهعنوان ورودی دریافت میکند و یک متغیر را بهعنوان خروجی پس میدهد. منطق تابع جاوااسکریپت شما کمابیش پیچیده خواهد شد.
همانطور که خودتان هم حدس زدهاید، چنین تابعی میتواند هزینه سنگینی روی دوش دیتابیس بگذارد. دیتابیس کوچ میتواند این نمایهها را شاخصبندی کرده و هنگام بهروزآوری، ایجاد یا حذف رکوردها، این نمایهها را هم بهروز کند. با این مکانیزم شاخصبندی، سرور دچار کندی نمیشود.
معماری توزیعی و همتاسازی
طراحی اولیه کوچ را با در نظر گرفتن همتاسازی 2طرفه (همخوانسازی یا Synchronization) و عملیات آفلاین انجام دادهاند. این یعنی هر بخش میتواند داده خود را داشته باشد، آن را ویرایش کند و بعد این تغییرات را همخوان کند.
Erlang
همانند دیگر دیتابیسهای توزیعی همنسل کوچ، این دیتابیس را هم بهزبان Erlang نوشتهاند و از پلتفرمErlang OTP استفاده میکند. ارلنگ زبانی است که برای سیستمهای مخابراتی سریع و پایدار استفاده میشد، اما برنامهنویسان آن را برنامه جالبی برای پیادهسازی سرویسهای شبکه یافتهاند. ارلنگ دادهها و فرآیندهای سبک را که از انتقال پیام برای اتصالات استفاده میکنند، جدا میکند. ضمن آنکه پلتفرم OTP راهکارهایی برای ایجاد سیستمهای توزیعشده، بیدرنگ و با دسترسی بالا در اختیار میگذارد. با توجه به رشد سرویسهای شبکهای، بهره بردن از این پلتفرم و این زبان، یک امتیاز برای کوچ بهحساب میآید.
نصب کوچ
واضح است که کوچ ویژگیهای جالب توجهی دارد. بیایید آن را راهاندازی کنیم و بعد با کمی کدنویسی، با این پایگاه داده صحبت کنیم. برای نصب کوچ در اوبونتو کافی است دستور زیر را وارد کنید:
sudo apt-get install couchdb
بعد از اینکه نزدیک به 30 مگابایت داده از روی اینترنت دریافت شد، کوچ اجرا شده منتظر دستورات شما است. کافی است آن را تست کنید که آیا کار میکند یا خیر. برای تست آن، دستور زیر را وارد کنید:
curl http://localhost:5984 $
{"couchdb":"Welcome","version":"0.8.0-incubating"}
اگر این دستور کار کرد، نصب آن با موفقیت بهپایان رسیده است.
رابط کاربری تحت وب فوتون
بعد از اینکه کوچ را نصب و راهاندازی کردید، میتوانید با مراجعه به آدرس زیر، رابط کاربری این پایگاه داده را مشاهده کنید:
نام این رابط کاربری فوتون است و برای چک کردن دادهها و انجام عملیات سادهای همچون ایجاد دیتابیس، حذف دیتابیس، مدیریت سندها و ... کاربرد دارد. برای اطلاعات بیشتر در مورد این پایگاه داده، به آدرسهای زیر رجوع کنید:
http://couchdb.apache.org/
http://books.couchdb.org
محمدرضا قربانی
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: