UnQLite: یک موتور پایگاه داده NoSQL با قابلیت اجرای مستقل

UnQLite: یک موتور پایگاه داده NoSQL با قابلیت اجرای مستقل

UnQLite یک لایبرری نرم‌افزاری با پردازش‌های داخلی است و به‌ عنوان یک موتور پایگاه داده ایفای نقش می‌کند. موتور پایگاه‌ دادهٔ UnQLite از نوع NoSQL بوده و ویژگی‌هایی همچون Self-contained ،Serverless ،Transactional و Zero-configuration دارا است.

به طور کلی، منظور از Self-contained بودن لایبرری UnQLite این است که این لایبرری به زبان C نوشته‌ شده است و هیچ‌گونه وابستگی به منابع و نرم‌افزارهای دیگر نداشته و نیاز به پشتیبانی بسیار کمی از لایبرری‌های اکسترنال یا سیستم‌عامل‌های مختلف دارد.

این امر موجب شده است تا این لایبرری برای استفاده در سیستم‌های اِمبِدِد مناسب باشد. این قابلیت همچنین موجب شده است تا UnQLite برای استفاده در اپلیکیشن‌ها مناسب باشد؛ اپلیکیشن‌هایی که قابلیت اجرا در کامپیوترهای متنوع و با تنظیمات مختلف، بدون اعمال تغییرات روی آن‌ها را دارند.

منظور از Serverless بودن این لایبرری این است که احتیاج به هیچ‌گونه سرور مستقلی ندارد. اکثر موتورهای پایگاه داده NoSQL به‌ عنوان یک پروسس جداگانه پیاده‌سازی شده، معمولاً برنامه‌ها برای دسترسی به پایگاه داده با سرور ارتباط برقرار می‌کنند و از نوع ارتباط دوطرفه (مثل TCP/IP) برای ارسال درخواست به سرور و دریافت پاسخ از آن استفاده می‌کنند اما در لایبرری UnQLite این کار انجام نمی‌شود و فرایندی که قصد دسترسی به پایگاه داده را داشته باشد، مستقیماً از فایل‌های پایگاه داده روی هاردیسک، داده‌ها را خوانده یا آن‌ها را می‌نویسد و هیچ فرایند سرور واسطی وجود ندارد.

ویژگی Zero-configuration بدین معنا است که برای استفاده از لایبرری UnQLite نیاز نیست تا آن را نصب کرد. هیچ روش سِتاپ برای آن وجود ندارد و هیچ‌گونه پروسهٔ سمت سرور برای شروع، توقف یا پیکربندی آن وجود ندارد. همچنین به یک DBA (ادمین دیتابیس) برای ایجاد یک نمونه پایگاه داده جدید یا ارسال مجوز دسترسی برای کاربران مجاز نیاز ندارد. در یک کلام، UnQLite از هیچ فایل پیکربندی استفاده نمی‌کند، برای اجرا نیاز به سیستم ندارد (پس از خرابی سیستم یا قطعی برق هم نیازی به ریکاوری سیستم ندارد) و به طور کلی فرآیند عیب‌یابی در آن وجود ندارد.

این لایبرری Transactional نیز می‌باشد؛ به عبارت دیگر، می‌تواند عملیاتی را که در پایگاه داده به‌ درستی تکمیل‌ نشده‌اند را دوباره اجرا کند یا از آن‌ها رد شود.

UnQLite در برخی موارد یک پایگاه داده مشابه به MongoDB ،Redis و یا CouchDB است و گاه یک پایگاه داده استاندارد برای ذخیرهٔ داده‌ها به‌ صورت Key/Value مانند BerkeleyDB یا LevelDB است.

برخلاف بسیاری از دیگر پایگاه‌داده‌های نواس‌کیو‌ال، UnQLite یک پروسس سمت سرور جداگانه ندارد و کراس پلتفرم است؛ به‌ عبارتی، وابسته به سیستم‌عامل خاصی نیست و می‌توان آن را روی سیستم‌های 32بیتی و یا 64بیتی یا در معماری‌های Big-endian و یا Little-endian اجرا کرد (Endianness به ترتیبِ بایت‌ها در هنگام ذخیره در یک فایل یا انتقال از طریق لینک‌های دیجیتال اشاره می‌کند؛ این مفهوم در دو فرمت Big-endian و Little-endian به کار می‌رود):
- Big-Endian: ترتیبی است که در آن مهم‌ترین مقدار دنباله در ابتدا ذخیره می‌شود (در آخرین آدرس ذخیره‌سازی).
- Little Endian: ترتیبی است که در آن کم‌اهمیت‌ترین مقدار دنباله در ابتدا ذخیره می‌شود.

UnQLite به زبان ANSI C نوشته‌ شده است و توابع Thread-safe، Full-reentrant آن بدون هیچ تغییری در اکثر سیستم‌عامل‌ها مانند دیوایس‌های اِمبِدِد محدود با کامپایلر C اجرا می‌شوند. UnQLite در سیستم‌عامل ویندوز و سیستم‌عامل‌های مبتنی بر یونیکس به‌ویژه Linux ،FreeBSD ،Oracle Solaris و MacOS X تست شده است.