Sqlite : سیستم پایگاه داده سبک

چکیده : sqlite یک سیستم پایگاه داده پیشرفتس که برای ذخیره سازی داده ها استفاده می شود. استفاده عملیاتی ساده ای دارد و به وسیله چند پلت فرم پشتیبانی می کند. اساسا بیشتر کاربرد در سیستم های کاربردی برپایه اندروید است . زیرا انعطاف پذیره و به زور گسترده استفاده می شود از پلت فرم های مستقل . شامل می شود انواع داده های ساده و قابلیت پرسجوهای پویا را دارد.
1. مقدمه : sqlite خود شامل پیاده سازی یک کتابخانه در حال پردازش است, پیکربندی و سرور ندارد , رفتار متقابل با موتور پایگاه داده sql دارد. در دامنه عمومی sqlite به صورت متن باز وجود دارد و برای استفاده شخصی و اهداف تجاری رایگان وجود دارد. Sqlite به چندین زبان برنامه نویسی شامل : c , C++‎, basic, C#‎, python, java و delphi اتصال دارد. لفاف بندی com (active x) باعث می شود که sqlite دسترسی بیشتر به زبان script در ویندوز از قبیل vbscript و java script دارد, بدین ترتیب قابلیت برنامه html را اضافه میکند. به آسانی در دسترسند سیستم عامل های توکار شامل : ios, Android, Symbian os, Maemo, Blackberry و web os زیرا سایز کمی دارند و به آسانی استفاده می شوند.
Sqlite کتابخانه در حال پردازش است که پیاده سازی شده در موتور پایگاه داده sql . کد sqlite در یک دامنه عمومی قرار دارد و برای استفاده هرهدفی تجاری یا شخصی رایگان است. در حال حاضر sqlite در هر برنامه ای پیدا می شود شامل : چندین پروژه مشخصات بالا.
Sqlite یک موتور پایگاه داده تعبیه شده sql است و پردازنده های سروری جداگانه ندارد شبیه بیشتر دیگر پایگاه داده های sql . sqlite به طورمستقیم می خونه و می نویسد برروی فایل دیسک عادی. فرمت فایل پایگاه داده cross platform است. این ویژگی ها فرمت فایل برنامه را در sqlite تبدیل به یک انتخاب محبوب کرده است. Sqlite یک کتابخانه کوچک هست, اندازه این کتابخانه می تونه خیلی کم باشه نسبت به 500kiB , بسته به هدف پلت فرم و بهینه سازی تنطیمات کامپایلر , ار ویژگی های اختیاری حذف هستند, اندازه کتابخانه می تونه کاهش یابد تا زیر 300KiB. Sqlite میتواند در حداقل فضای پشته (4KiB) اجرا شود. Sqlite یک موتور پایگاه داده محبوب برای حافظه محدود ابزارها از قبیل : cellphones, PDAs و mp3players انتخاب می شود. به طور کلی سریع اجرا می شود. با این اوصاف عملکردش معمولا بسیار خوبه حتی در حافظه کم محیط. Sqlite بسیار بادقت تست می کند و قبل از هر نسخه نیز بسیار قابل اعتماد است. بیشتر کد منبع sqlite صرفا به تست و تایید اختصاص داده شده است. به آرامی پاسخ می دهد به خطای تخصیص حافظه و خطاهای دیسک i/o. البته حتی با تمام این تست ها, هنوز هم اشکالات وجود دارد. Sqlite باز و صادقانه درباره همه اشکالات و فراهم می کند لیستی از مشکلات شامل لیستی از اشکالات بحرانی و به ترتیب زمانی دقیقه به دقیقه برمیگرداند اشکالات را و تغییر میدهد کد را.
2 معماری در sqlite
معماری sqlite یک نمونه رابطه ای هست, یک توضیح مختصر که لازم برای فهمیدن قرار میدهیم

زیر ساخت های sqlite شامل چهار بخش اصلی است : 1. هسته 2. کامپایلر sql 3.بخش مدیریت 4. تجهیزات جانبی
1. قسمت هسته شامل رابط کاربری کاربر, پردازشگر دستورات sqlوماشین مجازی است
رابط کاربری شامل کتابخانه از توابع زبان c و ساختار در دست گرفتن عملیات از قبیل مقدار دهی اولیه پایگاه داده , اجرای queries و نمایش نتایج. توابع با اجرای پرسجوsql فراخوانی می شوند با استفاده از پردازشگر دستورات sql. تابع ها پردازش دستوراتشان دقیقا شبیه compailer است. زمانی که یک برنامه اجرا می شود,ماشین مجازی هدایت کنترل جریان را از طریق یک ساختار switchبزرگ است, که جهش به یک بلوک از کد براساس opcode جاریست .
1. Sql compailer شامل یک tokenizer , یک پارسر و یک تولیدکننده کد است. زمانی که یک رشته حاوی ساختار sql هست کد اجرا می شود. رابط کاربری عبور می کند از رشته token , کار tokenizer این است که بشکنه رشته اصلی را داخل token ها و عبور میکنند tokenها یک به یک به پارسر. پارسر تکه ای است که اختصاص میدهیم به معنایی که tokenها براساس متن آنهاست. پارسر برای sqlite یک تولیدکنندس که استفاده می شود در توایدکننده پارسر lemonLALR. بعد از اسمبل کردن پارسر , tokenها در ساختار sql کامل می شوند. فراخوانی تولید کننده کد در تولیدکردن کد ماشین مجازی در درخواست انجام کار ساختار sql.
2. پشته شامل : btree ,صفحه cach , رابط کاربریos : پایگاه داده SQLite بر روی دیسک نگهداری میشودو با استفاده از یک درخت Bاجرای موجود در فایل منبع btree.c. یک درخت b جداگانه استفاده می شوند در هرجدول و شاخصی در پایگاه داده.همه B treeها ذخیره می شوند در همان فایل دیسک. درخواست اطلاعات ماژول btree از تکه های با اندازه ثابت در دیسک. صفحه cach مسِئول برای خواندن و نوشتن و ذخیره این قسمت.به منظور قابل حمل بودن بین POSIX و سیستم عاملwin32 , استفاده از sqlite در لایه انتزاعی رابط کاربری با سیتم عامل است
تجهیزات جانبی شامل کاربرد وتست کد : sqlite برخی از قابلیت های مربوط به ابزار را فراهم می کند از قبیل تخصیص حافظه و روال مقایسه حالت رشته 1. کم هستند واقع در util.c بیش از نیمی از کل کدsqlite اختصاص یافته به تست.

3 چه زمانی از sqlite استفاده می شود
· نرم افزارهای تعبیه شده(توکار) : همه نرم افزارها نیاز دارند به قابلیت حمل, که نیاز به توسعه ندارد. برای مثال نرم افزارهای محلی تک کاربره, نرم افزارهی موبایل و بازیها.
· دسترسی به دیسک جایگزین : در بیشتر موارد , نرم افزارها نیاز دارندکه به طور مستقیم روی دیسک فایل ها رو بخونن و بنویسن که می تونه بهره ببرند از switching در sqlite برای قابلیت های اضافی و سادگی که در استفاده از ساختار زبان پرسجو (sql)
· آزمایش : این برای بخش بزرگی از نرم افزارهایی که استفاده می شوند در پردازش های اضافی برای آزمایش کسب وکار منطقی بدرد نمی خورد(برای مثال هدف اصلی این نرم افزار : قابلیت)
· نرم افزارهای چندکاربره : اگر شما کار میکنید با نرم افزاری که به موجب آن چند کاربر نیاز به دسترسی دارند و استفاده یکسان از پایگاه داده, کاملا برجسته هست RDBM(مثل (mysql که شاید بهتر از انتخاب sqlite است.

4 ویژگی های sqlite
· Sqlite , بادوام, اتمی, سازگار و مجزا(ACID) حتی بعد از crashسیستم و خرابی برق
· نیازی به تنظیمات یا مدیریت ندارد
· یک پایگاه داده کامل برای ذخیره سازی برای استفاده به عنوان فرمت فایل نرم افزار عالی است.
· پشتیبانی میکند رشته ها و فیلدهای یک رکورد پایگاه داده ها به اندازه ترابایت و گیگابایت
· به نوشتن کدهای بسیار کوچک نیاز داردکه پیکربندی کامل آن 500KiB نیست یا بسیار کم با ویژگی های اختیاری حذف
· ساده,آسان برای استفاده واسط برنامه نرم افزار(API)
· ویژگی های خوبی از اتصال به زبان های دیگر دارد
· به عنوان کد ANSI_C در دسترس است و به آسانی داخل پروژه های بزرگ اضافه می شود
· Sqlite محتوا در خودش قرار دارد بنابراین وابستگی خارجی ندارد
· پشتیبانی می کند از cross platform به عنوان : Android, ios, linux, Mac, Solarisو ویندوزه( win32, win CE, win RT)