عنوان:

‫مجموعه‌ای از حقایق جالب درباره SQLite


نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۲/۰۲ ۰۸:۵۱
آدرس: www.dntips.ir
اطلاعات کلی
  • SQLite پرکاربردترین و گسترده‌ترین پایگاه داده (Database) است و بیش از یک تریلیون نمونه فعال از آن وجود دارد.
  • تنها توسط سه توسعه‌دهنده (Developer) نگهداری می‌شود و هیچ مشارکت خارجی را نمی‌پذیرند.
  • احتمالاً SQLite بیشتر از مجموع تمام موتورهای پایگاه داده دیگر استفاده می‌شود و یکی از پنج ماژول نرم‌افزاری (Software Module) پرکاربرد است.
  • شرکت پشتیبان SQLite، هواچی (Hwaci) نام دارد.

داستان پیدایش
  • SQLite از نیاز به یک پایگاه داده بدون سرور (Serverless Database) برای یک ناوشکن (Destroyer) نیروی دریایی ایالات متحده، به نام یواس‌اس اسکار آستین (USS Oscar Austin)، متولد شد.
  • دی. ریچارد هیپ (D. Richard Hipp) (DRH) آن را در سال 2000، در طول تعطیلی قرارداد دولتی ایجاد کرد.

مجوز و مشارکت
  • برخلاف اکثر پروژه‌های متن‌باز (Open Source)، SQLite تحت مالکیت عمومی (Public Domain) منتشر شده است که محدودیت‌های کمتری نسبت به مجوزهای متن‌باز استاندارد دارد.
  • SQLite مجوزهای "ضمانت مالکیت" (Warranty of Title) را برای حوزه‌های قضایی که مالکیت عمومی را به رسمیت نمی‌شناسند، می‌فروشد.
  • مشارکت در SQLite فقط با دعوت امکان‌پذیر است و نیاز به یک سوگندنامه (Affidavit) دارد که مشارکت‌ها را به مالکیت عمومی اختصاص دهد.

آزمایش و کیفیت
  • SQLite بیش از 600 خط کد آزمایشی (Test Code) برای هر خط کد کتابخانه (Library Code) دارد که 100٪ از شاخه‌ها (Branch) و پوشش تصمیم اصلاح‌شده (MC/DC) را شامل می‌شود.
  • مجموعه آزمایشی (Test Suite) شامل آزمون‌های مختلفی از جمله فاز (Fuzz)، مقدار مرزی (Boundary Value)، رگرسیون (Regression) و آزمون‌های شبیه‌سازی شده خطا است.
  • مجموعه آزمایشی اصلی به زبان تی‌سی‌ال (Tcl) نوشته شده است.
  • یک مجموعه آزمایشی اختصاصی (Proprietary) به نام تی‌اچ3 (TH3) وجود دارد که به پوشش 100٪ شاخه‌ها دست می‌یابد اما به طور عمومی در دسترس نیست و بخشی از کنسرسیوم (Consortium) SQLite (با هزینه سالانه 120 هزار دلار) است.

مدل کسب و کار
  • SQLite از طریق مجوزها، پشتیبانی پولی، خدمات نگهداری، عضویت در کنسرسیوم و افزونه‌های تجاری (Commercial Extensions) درآمد کسب می‌کند.

آیین‌نامه رفتار و فرهنگ
  • SQLite آیین‌نامه رفتار (Code of Conduct) ندارد، اما یک آیین‌نامه اخلاقی (Code of Ethics) دارد که از "ابزارهای کارهای نیک" (Instruments of Good Works) از فصل 4 قانون سنت بندیکت (The Rule of St. Benedict) گرفته شده است.
  • تمام فایل‌های کد منبع (Source Code Files) به جای یک اخطار قانونی (Legal Notice)، شامل یک دعای خیر هستند.

عملکرد و محدودیت‌ها
  • SQLite می‌تواند برای برخی موارد استفاده، سریع‌تر از سیستم فایل (Filesystem) باشد و با fopen رقابت کند.
  • برای برخی از برنامه‌ها، SQLite می‌تواند به دلیل سربار (Overhead) شبکه و سریال‌سازی (Serialization)، بهتر از ردیس (Redis) عمل کند.
  • SQLite یک مدل تک نویسنده (Single Writer Model) دارد که نوشتن همزمان را محدود می‌کند (اگرچه حالت دبلیو ای ال (WAL) اضافه شده در سال 2010، امکان خوانندگان همزمان با یک نویسنده را فراهم می‌کند).

ویژگی‌ها و انتخاب‌های طراحی
  • حالت پیش‌فرض دفترچه (Journal Mode) (بازگشت به عقب (Rollback)) به چند خواننده یا یک نویسنده محدود می‌شود.
  • کلیدهای خارجی (Foreign Keys) به طور پیش‌فرض غیرفعال هستند و باید به طور صریح فعال شوند.
  • SQLite "به طور ضعیف تایپ شده" (Weakly Typed) با "قرابت نوع" (Type Affinity) است که اجازه می‌دهد هر نوع داده‌ای در یک ستون درج شود، حتی اگر یک نوع تعریف شده باشد (تایپ قوی (Strong Typing) با جداول استریکت (STRICT Tables) فعال می‌شود).
  • بسیاری از دستورات رایج ALTER پشتیبانی نمی‌شوند (اگرچه اخیراً امکان تغییر نام ستون اضافه شده است).
  • قرابت نوع با تطبیق زیررشته (Substring Matching) کار می‌کند (به عنوان مثال، "SPONGEBLOB" از نوع BLOB در نظر گرفته می‌شود).
  • یک نوع اعلام شده "FLOATING POINT" به دلیل زیررشته "INT"، قرابت INTEGER دارد.
  • پیشوند (Prefix) پیش‌فرض از sqlite_ به etilqs_ تغییر یافت، زیرا کاربران در نیمه شب با توسعه‌دهندگان تماس می‌گرفتند.

سازگاری با عقب
  • SQLite 3 با فایل‌های پایگاه داده ایجاد شده توسط اولین نسخه SQLite 3 در سال 2004 سازگاری با عقب (Backward Compatibility) را حفظ می‌کند.
  • این تعهد به سازگاری با عقب به این معنی است که حتی اگر باگی (Bug) هم منتشر شده باشد، ممکن است رفع نشود اگر رفع آن، سازگاری را از بین ببرد.

پروژه‌های دیگر سازنده
  • دی آر اچ (DRH)، سازنده SQLite، همچنین سیستم کنترل نسخه (Version Control System) فوسیل (Fossil) (که توسط SQLite پشتیبانی می‌شود) و مولد تجزیه‌کننده (Parser Generator) لیمون (Lemon) را ایجاد کرد.
  • او پیاده‌سازی (Implementation) بی-تری (B-Tree) را بر اساس کتاب هنر برنامه‌نویسی کامپیوتر (The Art of Computer Programming) دونالد کنوت (Donald Knuth) انجام داد و آن را در هواپیما کدنویسی کرد.

تلفظ
  • در حالی که هیچ تلفظ رسمی وجود ندارد، دی آر اچ (DRH) ترجیح می‌دهد "S-Q-L-ite" تلفظ شود.



مشاهده مطلب اصلی