فصل اول :
معرفی دیتابیس SQLite
مقدمه
SQLite برای رقابت و یا مقابله با دیتابیس های کلاینت سروری نظیر MS SQL SERVER وMySQL و یا ORACLE ساخته و طراحی نشده پس SQLite را با آنها مقایسه نکنید .
SQLite برای کاربرد ها و حل مسائل دیگری طراحی و ساخته شده است. SQLite تلاش دارد تا دیتابیسی لوکال را برای برنامه های تک کاربره و وب سایت های با ترافیک کم ، بوجود آورد تا هم قابل حمل باشد و هم بسیار کم حجم ، سبک .و بروی موبایل ها و تبلت ها هم قابل استفاده باشد.
جالب اینجاست که خود سایت SQLite.org نیز برای دیتابیس خود از SQLite استفاده میکند و روزانه پاسخگوی 400 تا 500 هزار رکوئست می باشد! (پس خیلی هم ضعیف نیست)
SQLite چیست ؟
SQLite کتابخانه ایی نرم افزاریست که بعنوان یک موتور پایگاه داده ایفای نقش می کند . موتوری که جامع است و همه چیز های لازم را در خود دارد ، احتیاجی به سرور ندارد ، احتیاجی به هیچگونه تنظیمات اولیه ندارد و از همه جالبتر اینکه از transaction ها (و یا همان تراکنش ها به فارسی) را پشتیبانی میکند!
SQLite پر استفاده ترین و پرکاربردترین موتور پایگاه داده در جهان است !
هیچ موتور پایگاه داده ایی تا به حال به این گستردگی در جهان نصب و استفاده نشده است!
و از همه جالب تر اینکه Open Source (متن باز) می باشد و شما می توانید براحتی سورس آنرا دانلود و کامپایل نمایید !
هیچ موتور پایگاه داده ایی به این سرعت در جهان رشد نکرده و محبوب نشده است.
یکی از مهمترین ویژگیهای SQLite خاصیت zero-configured بودن آن است و این بدان معناست که برای اینکه SQLite کار کند شما احتیاجی به انجام هیچگونه تغییرات و تنظیماتی در سیستم خود نیستید . و این کاملا برعکس پایگاه دادهایی مثل SQL Server مایکروسافت و یا اوراکل می باشد.
همانند سایر پایگاه های داده ، SQLite یک پروسس و یک سرویس مستقل نمی باشد ، شما می توانید بطور دینامیک و یا استاتیک و بسته به نیاز ، آنرا به اپلیکیشن خود لینک کنید تا SQLite با فایل دیتابیس خود که اطلاعات شما را در بر دارد بطور مستقیم کار کند.
چرا SQLite ؟
-
SQLite احتیاجی به سرور مستقل ندارد. (server less)
-
SQLite عملا zero-configuration است یعنی احتیاجی به نصب و Setup کردن و مدیریت ندارد .
-
تمامی اشیاء دیتابیس درون یک فایل ذخیره میشود که وابسته به سیستم عامل خاصی نیست (Cross Platform) یعنی فایل دیتای شما در ویندوز ، سیستم عامل های اپل ، لینوکس و اندروید و ... کار خواهد کرد !
-
SQLite بسیار کم حجم و سبک است با تمامی تنظیمات و امکانات کامل 400 کیلوبایت و بدون یکسری امکانات انتخابی 250 کیلوبایت است !
-
SQLite کاملا مستقل است و هر آنچه لازم دارد را در خود دارد. بنابراین هچگونه وابستگی به منابع و نرم افزار های دیگر ندارد .
-
Transaction های SQLite کامل سازگار با ACID می باشند که این موضوع دسترسی امن و بی خطر از چند پروسس و یا Thread را فراهم می آورد .
-
SQLite بیشتر امکانات زبان SQL که در استاندارد SQL92 وجود دارند را پشتیبانی میکند.
-
SQLite با زبان ANSI –C نوشته شده است و یک API با کاربری ساده را فراهم می آورد .
-
SQLite بروی سیستم عامل های مبتنی بر UNIX شامل (Linux , Mac OS-x , Android ,iOS ) و سیستم عامل های مبتنی بر Windows شامل : Win32 , WinCE و WinRT ، در دسترس است.
تاریخچه SQLite
-
در سال 2000 آقای
Richard D. Hipp
SQLite را طراحی کرده
تا دیتابیسی داشته باشد که نیازی به مدیریتی نداشته باشد. و یک برنامه براحتی و بدون نیاز به مدیریت خاصی بتواند اطلاعات را در یک پایگاه داده ذخیره و بازیابی کند.
-
در آگوست سال 2000 نسخه 1.0 SQLite منتشر شده است.
-
در سال 2011 آقای Hipp اعلام کرد که UNQl interface را به SQLite افزوده است و
UNQLite (Document oriented database)
را توسعه داده است.
نکته : UnQLite نیز همانند خود SQLite تمامی خواص اصلی آن شامل
(self-contained, serverless, zero-configuration, transactional) را دارا می باشد با این تفاوت که NoSQL است . دیتابیس های NoSql همانند MongoDB ، Redis و CouchDB برای ذخیره و بازیابی BigData استفاده میشوند و ساختار ذخیره اطلاعات آن با دیتابیس های مبتنی برSQL متفاوت است . این دیتابیس ها برای ذخیره حجم بسیار زیاد اسناد (Document) بکار میروند و دارای ساختار های بصورت Key/Value می باشند . مثلا آمازون ، گوگل و facebook از NoSql استفاده میکنند. که توضیح کامل آن خارج از محدوده این آموزش است .
محدودیت های SQLite :
تنها تعداد کمی از امکانات استاندارد SQL92 هستند که در SQLite پشتیبانی نمی شوند که عبارتند از :
خصوصیت |
توضیح |
RIGHT OUTER JOIN |
تنها LEFT OUTER JOIN پشتیبانی می شود |
FULL OUTER JOIN |
تنها LEFT OUTER JOIN پشتیبانی می شود |
ALTER TABLE |
RENAME TABLE و ADD COLUMN پشتیبانی می شوند ولی DROP COLUMN, ALTER COLUMN,
ADD CONSTRAINT پشتیبانی نمی شوند
|
Trigger support |
تریگر های FOR EACH ROW پشتیبانی می شوند ولیکن ترگر های FOR EACH STATEMENT پشتیبانی نمی شوند |
VIEWs |
View ها در SQLite فقط خواندنی (Read only) هستند و شما نمی توانید دستورات Insert ,Delete و Update را در آنها اجرا کنید |
GRANT and REVOKE |
تنها مجوز دستیابی که باید تنظیم شود همان مجوز معمولی دسترسی فایل در سیستم عامل است |
دستورات SQLite
دستورات کار با دیتا همانند همان دستورات SQL هستند که شامل : CREATE, SELECT, INSERT, UPDATE, DELETE و DROP می باشند که این دستورات بسته به طبیعت کاری که انجام میدهند به گروه های ذیل تقسیم می شوند :
-
DDL - Data Definition Language
تعریف ، تغییر و یا حذف اشیاء (ابجکت های دیتابیس)
دستور |
توضیح |
CREATE |
جهت ساخت یک ابجکت مثل جدول ، View و سایر ابجکت های دیتابیس |
ALTER |
انجام تغییر در یک ابجکت موجود مثل یک جدول و و یا یک View |
DROP |
حذف یک ابجک دیتابیسی همانند یک جدول و یا یک View
|
-
DML - Data Manipulation Language
دستورات کار بروی دیتای دیتابیس
دستور |
توضیح |
INSERT |
جهت ساخت و درج یک رکورد
|
UPDATE |
بروز رسانی و انجام تغییرات در مقادیر فیلد های رکورد های موجود
|
DELETE |
حذف رکورد ها
|
-
DQL - Data Query Language
جهت انجام پرس و جوها و واکشی اطلاعات از جداول
دستور |
توضیح |
SELECT |
واکشی رکورد ها از یک و یا چند جدول
|
مفاهیم و موضوعات این فصل عبارتند از :
-
معرفی SQLite
-
تاریخچه SQLite
-
محدودیت های SQLite
-
دستورات SQLite