SQLite چیست و چه کاربردهایی دارد؟ – آنچه باید بدانید
برای نگهداری از دادهها و اطلاعات گوناگونی که در اختیار داریم، بهطور معمول از پایگاه دادهها استفاده میکنیم. در واقع، با این کار دادههایمان بهشکلی منظم و با ساختاری مشخص روی دستگاههای الکترونیکی، ذخیره شده و در مواقع نیاز میتوانیم آنها را بازیابی و استفاده کنیم. پایگاه دادهها انواع گوناگونی دارند و هریک دارای خصوصیات مربوط به خود هستند. نرمافزارهای مخصوصی برای مدیریت پایگاههای داده وجود دارند که SQLite یک از رایجترین آنها است. SQLite سیستم رایگان و اوپن سورسی است که ضمن سبکوزن بودن، طرفدارن زیادی دارد و بهآسانی میتواند پاسخگوی نیازهایتان در حوزه مدیریت پایگاه دادهها باشد. در این مطلب از مجله فرادرس سعی بر این است تا به زبانی ساده و تا حد ممکن بهطور کامل، به شما بگوییم که SQLite چیست و در چه جاهایی مورد استفاده قرار میگیرد. همچنین به بیان مزیتها و نقاط ضعف آن نیز میپردازیم.
دادهها را میتوان جزو مؤلفههای اصلی اپلیکیشنهای مورد استفاده در این روزها در نظر گرفت که به وفور استفاده میشوند. برای اینکه بتوانیم اینگونه اطلاعات را نگهداری کرده و در مواقع لزوم از آنها استفاده کنیم بهطور معمول از پایگاه دادهها کمک میگیریم. رفته رفته با پیشرفت فناوریها، پایگاه دادهها نیز پیشرویهای خود را داشتهاند. بهطوریکه در حال حاضر شاهد انواع پیشرفتهای از پایگاهها هستیم که میتوانند دادههایمان را بهصورت ساختارمند یا بدون ساختار مدیریت کنند. از انواع پایگاه داده میتوان به NoSQL، ابری، ستونی، شیگرا، کلید-مقدار، گراف، سلسلهمراتبی و همچنین پایگاه داده رابطهای اشاره کرد. برای اینکه بتوانیم اینگونه دادههای موجود در پایگاه داده را با تمام چالشهایی که دارند، مدیریت کنیم، از ابزارهایی معروف به سیستمهای مدیریت پایگاه داده یا DBMS استفاده میکنیم که ضمن سهولت در استفاده، به قدر کافی ایمن و قدرتمند باشند.
SQLite چیست؟
دیتابیس SQLite یکی از رایجترین نرمافزارهایی است که برای مدیریت پایگاه داده رابطهای میتوانیم از آن استفاده کنیم. این سیستم مدیریت دیتابیس علاوه بر سادگی بالایی که دارد، توسط بسیاری از شرکتها و سازمانهای بزرگ نیز بهکار گرفته شده است. همچنین بهدلیل کاربرد آسان و سبکبودن میتوان آن را برای اهداف گوناگون بهکار برد.
SQLite یک سیستم مدیریت پایگاه داده یا دیتابیس است که در قالب کتابخانهای سبکوزن به زبان C نوشته شده است. SQLite در سال ۲۰۰۰ میلادی توسط آقای «ریچارد هیپ» (Richard Hipp) طراحی و توسعه پیدا کرد. شما میتوانید از قابلیتهای SQLite در پروژههای شخصی و تجاری خود بهطور رایگان بهرهمند شوید. همچنین، خوب است بدانید که کدهای این نرمافزار نیز برای عموم کاربران قابل دسترسی است و میتوانند آن را آزادانه و به هر نحو که مایل باشند کپی کنند، تغییر دهند، بفروشند یا توزیع کنند.
طبق تعریف سایت رسمی SQLite، این موتور پایگاه که سورس کد آن در قالب یک فایل ارائه شده است، بهعنوان بخشی از برنامه شما اجرا میشود. یعنی مانند سایر سیستمهای پایگاه داده، فرایند یا پردازش جداگانهای ندارد.
دادههای موجود در پایگاه داده SQLite در قالب یک فایل روی هارد ذخیره میشوند و اقداماتی مانند نوشتن و بازیابی دادهها از طریق همین فایل صورت میگیرد. SQLite بهطور معمول به دنبال این است که قابلیت ذخیرهسازی محلی را برای اپلیکیشنها و دستگاهها فراهم کند و دارای خصوصیاتی است که در ادامه فهرست کردهایم.
- سادگی و بهکارگیری آسان
- مستقل بودن
- قابلیت اطمینان و مطمئن بودن از عملکرد آن
- مقرون به صرفه بودن بهکارگیری آن
- بهرهوری و داشتن راندمانی بهینه
در سمت دیگر، سیستمهای پایگاه داده کلاینت-سِروری را داریم که سعی دارند تا منبعی از دادهها را بهصورت اشتراکی فراهم کنند و ویژگیهایی همچون مقیاسپذیر بودن و افزایش قابلیتها در صورت لزوم، همزمانی، متمرکز کردن منبع دادهای و امکان مدیریت دادهها را دارند. با توجه به همین دلایل میتوان گفت که سیستمهای مدیریت پایگاه داده کلاینت-سِروری نظیر MySQL، اوراکل، PostgreSQL و اسکیوال سرور، رقیبی برای SQLite نیستند. این سیستمها اهداف مختلفی را دنبال میکنند و بهطور معمول آنها را با هم مقایسه نمیکنند.
RDBMS-هایی مانند SQLite از دسته نرمافزارهای مدیریت دیتابیسهای رابطهای محسوب میشوند که بهکمک آنها خیلی سادهتر میتوانیم از طریق کوئری زدن به دادههای خود دسترسی پیدا کرده و آنها را مدیریت کنیم. سیستمهای RDBMS بر اساس مدل رابطهای دادهها ساخته شدهاند که در سال ۱۹۷۰ میلادی توسط آقای «اِدگار کاد» پیشنهاد شد. این نوع برنامههای مدیریت دیتابیس که بیشترین موارد استفاده را در بین نرمافزارهای مدیریت پایگاه داده موجود دارند دادهها را در قالب جداول و روابط آنها نگهداری میکنند. در این نوشتار علاوه بر آشنایی کلی، نقاط قوت و ضعف و کاربردهای SQLite را نیز بیان میکنیم.
با توجه به استفاده گسترده و میلیاردی از SQLite، بهنظر میرسد که این سیستم پایگاه داده معروف، جزو پرکاربردترین دیتابیسها باشد. از مواردی که میزبان SQLite هستند میتوان به موبایلهای اندرویدی، آیفون و دستگاههای iOS، کامپیوترهای مک، ویندوز ۱۰، مرورگرهای وب فایرفاکس، کروم و سافاری، اسکایپ، آیتونز، دارپباکس، PHP و پایتون، ستآپ باکسها، سیستمهای ضبط و پخش اتومبیلها، و موارد بیشمار دیگر اشاره کرد.
تاریخچه SQLite چیست؟
جدولی که در ادامه آوردهایم تاریخچهای بسیار خلاصه از پایگاه داده SQLite را نشان میدهد.
سال ۲۰۰۰ میلادی | طراحی پایگاه داده SQLite |
ماه اوت سال ۲۰۰۰ میلادی | عرضه نخستین نسخه از SQLite با مدیر پایگاه داده گنو |
سال ۲۰۱۱ میلادی | افزودن رابط UnQI به دیتابیس SQLite |
اهمیت یادگیری و استفاده از SQLite چیست؟
در ادامه، اهمیت استفاده از SQLite را بیان کردهایم.
- با توجه به اینکه SQLite اپن سورس است، میتوانید به رایگان از آن استفاده کنید و نیازی نیست تا بهدنبال دریافت لایسنس سیستم پایگاه داده خود باشید.
- همانطور که گفته شد SQLite به اصطلاح Serverless یا بینیاز از سرور است و بهکارگیری آن نیازی به فرایند سرور جداگانهای علاوه بر فرایند خود برنامه اصلی ندارد.
- SQLite سیستم پایگاه داده انعطافپذیری است. از این بابت که به شما امکان میدهد تا در یک جلسه، بهطور همزمان پایگاه دادههای متعددی را مورد استفاده قرار دهید.
- از دیگر خصوصیات SQLite میتوان به چندپلتفرمی بودن آن اشاره کرد. این سیستم مدیریت پایگاه داده یا همان DBMS را میتوانید در سیستم عامل دلخواه خود مانند ویندوز، macOS، اندروید و سایر سیستم عاملها بهکار ببرید.
- SQLite به آسانی قابل راهاندازی و استفاده است و به پیکربندی، نصب یا مدیریت احتیاجی ندارد.
یادگیری پایگاه داده با فرادرس چگونه است؟
در صورتیکه قصد یادگیری مهارت جدیدی مانند پایگاه داده SQLite را داشته باشید، راههای مختلفی برای این منظور پیشِ روی شما قرار دارد. بهطور مثال، شرکت در کلاسهای حضوری، حضور در دورههای آنلاین، دنبال کردن وبسایتهای آموزشی و تماشای دورههای آموزشی در پلتفرمهایی نظیر یوتیوب، مطالعه کتب آموزشی و غیره جزو این روشها محسوب میشوند. هر یک از این روشها مزایا و معایب خود را دارند و برخی شیوهها نظیر مطالعه کتب آموزشی به علت ناکارآمدی در دنیای دیجیتالی کنونی کنار گذاشته شدهاند. در این میان، تماشای فیلمهای آموزشی یکی از شیوههای مدرن و مؤثر در یادگیری مهارتهای جدید بهشمار میروند و فارغ از اینکه موقعیت جغرافیایی شما کجاست، چه ساعاتی میخواهید از آموزشها استفاده کنید و سایر شرایطی که دارید این آموزشها شما را در مسیر یادگیری مهارت مورد نظرتان تنها نمیگذارند.
فرادرس بهعنوان یکی از بهترین پلتفرمهای آموزشی کشور، فیلمهای آموزشی گوناگونی را برای مهارتهای مختلف، منتشر کرده است. در ادامه، فیلمهای آموزش مقدماتی تا پیشرفته پایگاه داده از فرادرس را آوردهایم. این فیلمهای آموزشی، مباحث تئوری و دانشگاهی مربوط به پایگاههای داده و بیشتر سیستمهای مدیریت پایگاه داده را شامل میشود که بسته به اهداف خود میتوانید مورد دلخواه را مشاهده کنید.
در ادامه، عناوین فیلمهای آموزش SQLite از فرادرس را آوردهایم.
- فیلم آموزش پایگاه داده SQLite در پایتون از فرادرس پس از معرفی و آشنایی اولیه با SQLite و دستورات اصلی، مباحثی نظیر ایجاد پایگاه داده، جدول و درج داده، جست و جو، بهروزرسانی و حذف داده، کلیدها، تابع و دیتافریم و غیره را به شما یاد میدهد.
- فیلم آموزش پایگاه داده SQLite در سیشارپ از فرادرس به شما میآموزد تا پایگاه داده سبک SQLite را در سیشارپ مورد استفاده قرار دهید. از جمله مفاهیم مورد بررسی در این فیلم آموزشی میتوان به نحوه ساخت پایگاه داده، جدول، عملیات مربوط به آن و پیادهسازی پروژه و غیره اشاره کرد.
این مجموعه از فیلمهای آموزشی همچنین شامل آموزش سایر سیستمهای پایگاه داده است که در ادامه به عناوین برخی از آنها اشاره کردهایم.
- فیلم آموزش پایگاه داده ها و اصول طراحی آن از فرادرس
- فیلم آموزش مبانی پایگاه داده ویژه نوجوانان از فرادرس
- فیلم آموزش پایگاه داده MySQL از فرادرس
- فیلم آموزش مقدماتی PostgreSQL برای مدیریت پایگاه داده از فرادرس
- فیلم آموزش کار با پایگاه داده SQL Server از فرادرس
- فیلم آموزش مقدماتی اوراکل شامل مدیریت بانک اطلاعاتی با Oracle از فرادرس
- فیلم آموزش رایگان معرفی دستورات اصلی SQL در اندروید از فرادرس
چه زمانی از SQLite استفاده کنیم؟
اهمیت استفاده از سیستم پایگاه داده SQLite در پروژه را در ادامه، فهرست کردهایم.
- اگر بخواهید برای دستگاههایی همچون گوشیهای موبایل، دوربینها، ساعتهای هوشمند، تلویزیونها و غیره، نرمافزاری را ایجاد کنید، در این صورت، پایگاه داده SQLite یکی از بهترین گزینههای پیش روی شما خواهد بود. SQLite بهدلیل سادگی در راهاندازی و نداشتن فرایند پیکربندی باعث میشود تا با ماهیت این گونه دستگاه بهطور کامل متناسب باشد.
- با توجه به اینکه SQLite میتواند درخواستهای HTTP و بارهای ترافیکی کم تا متوسط شبکه را مدیریت کنید، میتوانید برای وباپلیکیشنها و وبسایتهای معمولی خود آن را مورد استفاده قرار دهید و از قابلیتهای آن بهرهمند شوید.
- یکی از قابلیتهای SQLite این است که میتواند از فایلهای شما، آرشیوهایی سبکتر بسازد که متادیتای کمتری هم دارند. بدینترتیب از فضای ذخیرهسازی بهشکل بهینهتری استفاده میشود.
- ممکن است اپلیکیشن شما نیاز داشته باشد تا برخی اطلاعات داخلی خود را پردازش کند در آن صورت میتوانید از SQLite با توجه به خصوصیاتی که دارد، بهعنوان نگهدارنده اینگونه دادههای موقتی استفاده کنید.
- یکی دیگر از خصوصیات SQLite این است که بهدلیل نداشتن راهاندازی و پیکربندی مشکل، گزینه مناسبی برای افراد مبتدی محسوب میشود تا با استفاده از آن پایگاه داده را یاد بگیرند.
خصوصیات SQLite چیست؟
در ادامه، برخی از ویژگیهای SQLite بهعنوان یک از پرکاربردترین سیستمهای مدیریت پایگاه داده در دنیا را آوردهایم.
مستقل
وقتی میگوییم که SQLite «مستقل» (Self-Contained) است، منظورمان این است که این سیستم مدیریت پایگاه داده از سایر کتابخانهها یا ابزارها استفاده نمیکند و به اصطلاح، وابستگیهای کمی دارد. بههمین دلیل میتواند روی بیشتر سیستم عاملها و حتی سیستم عاملهای موجود روی دستگاههای مرتبط با اینترنت اشیا و غیره نیز بهخوبی اجرا شود.
بینیاز از سرور
SQLite بر خلاف برخی دیگر سیستمهای مدیریت پایگاه داده، بدون هیچگونه فرایند واسطهای با فایلهای داده که روی کامپیوتر ذخیره شدهاند ارتباط برقرار کرده و عملیات خواندن و نوشتن دادهها را انجام میدهد. در سیستمهای پایگاه داده دیگر که بهصورت فرایندی مجزا اجرا میشوند، نیاز است تا درخواست خود را با یکسری ساز و کارها به سرور ارسال کرده و پاسخ مربوطه را دریافت کنید. بدین ترتیب، میتوانیم گفت که SQLite یک نرمافزار پایگاه داده «بینیاز از سرور» (Serverless) است. بهطوریکه اپلیکیشنهای مختلف میتوانند بهصورت همزمان از دادههای آن استفاده کنند.
بی نیاز از پیکربندی
از دلایلی که باعث میشود تا SQLite را نرمافزاری «بینیاز از پیکربندی» (Zero-Configuration) برای پایگاه داده بدانیم، میتوان به موارد زیر اشاره کرد.
- به دلیل عدم وجود فرایند سروری جداگانه، با عملیاتی مانند راهاندازی، توقف و غیره مرتبط با آن سر و کار نخواهید داشت.
- در SQLite، فرایند Setup وجود ندارد و برای بهکارگیری این سیستم مدیریت پایگاه داده، لازم نیست تا آن را نصب کنید.
- SQLite فاقد فایل تنظیمات یا پیکربندی است.
- در صورت بروز خرابی در سیستم پایگاه داده، نیازی نیست برای بازیابی دادهها کاری انجام دهید.
تراکنشی
«تراکنشی» (Transactional) بودن یک پایگاه داده مانند SQLite به ما میگوید که کوئریهای انجام شده در پایگاه داده و تغییراتی که روی دادهها صورت میگیرد با اصول ACID هماهنگ هستند. ACID بهطور خلاصه بیانگر مواردی است که در زیر بیان کردهایم.
- Atomic: تجزیهناپذیری تراکنشها بهزبان ساده یعنی اینکه یک تراکنش در پایگاه داده یا بهصورت کامل و با موفقیت انجام میشود یا اینکه - در صورت بروز مشکل - لغو میشود و پایگاه داده به حالت قبلی خود بر میگردد.
- Consistent: هنگامیکه تراکنشی انجام یا لغو میشود، وضعیت پایگاه داده میبایست ثبات و سازگاری خود را حفظ کند. بهطور مثال، نباید شاهد تغییرات ناقص باشیم.
- Isolated: تراکنشهای پایگاه داده ممکن است بهصورت همزمان اجرا شوند. در این حالت، تراکنشها میبایست ایزوله باشند تا این همزمانی باعث نشود که روی همدیگر تأثیر بگذارند.
- Durable: دوام داشتن تراکنشها در پایگاه داده یعنی اثر تراکنشهایی که با موفقیت انجام شدهاند، با خرابیها از بین نرود. اینگونه موارد در گزارش تراکنشهای پایگاه داده ثبت میشود.
پایگاه دادهای که با SQLite میسازید در قالب یک فایل روی دستگاه ذخیرهسازی شما مانند هارد کامپیوتر قرار میگیرد و عملیات بازیابی و درج دادهها نیز بهطور مستقیم روی همین فایل صورت میگیرد.
کاربردهای SQLite چیست؟
در ادامه به موقعیتهایی اشاره کردهایم که بهکارگیری SQLite در آنها میتواند مؤثر باشد و عملکرد قابل قبولی را از خود به نمایش بگذارد.
- حوزه اینترنت اشیا و نرمافزارهای داخلی
- فایلهای مربوط به اپلیکیشنها
- وبسایتها
- تحلیل دادهها
- نهانسازی دادههای سازمانی
- پایگاهداده سمت سرور
- فرمت انتقال دادهها
- بایگانی کردن فایلها
- پایگاهدادههای موقتی
- موارد آموزشی و افزایش مهارت
جدیدترین نسخه سیستم پایگاه داده SQLite در قالب کتابخانهای با حجم بسیار کم و در حد چندین مگابایت عرضه شده است. بههمین دلیل برای استفاده در وسایلی که دغدغه حافظه را دارند، گزینه خوبی محسوب میشود. SQLite به دلیل پیچیدگی کمی که برای راهاندازی دارد، برای اهداف آموزشی نیز میتواند مورد آزمایش و استفاده قرار گیرد. این ابزار مدیریتی پایگاه داده میتواند همراه با سیستمهای کلاینت-سروری بهکار گرفته شود. یعنی میتوان از آن برای نهانسازی یا کش کردن دادههای سیستمهای کلاینت-سروری در سمت کلاینت استفاده کرد تا از این طریق ضمن افزایش سرعت کوئریها، تحمل خطای سیستم در مواقع از دست رفتن پایگاه داده سروری نیز بیشتر شود.
فرمت فایل مربوط به اپلیکیشن ها
یکی از موارد استفاده SQLite بهکارگیری آن برای ذخیره فایلهای مربوط به برنامههایی مانند سیستمهای کنترل نسخه، ابزارهای تحلیل مالی و غیره روی هارد است. در اینجا شاهد مزیتهای مهمی مانند بهبود بهرهوری، کاهش هزینهها و پیچیدگی و سایر مزایا از این سیستم خواهیم بود.
تحلیل داده ها
اگر شما هم جزو کسانی هستید که دانش کوئرینویسی با زبان SQL را دارید، میتوانید با بهکاربردن SQLite مجموعه دادههای خود را تحلیل کنید. برای این منظور میتوانید از ابزار خط فرمان sqlite 3 یا سایر برنامههایی که امکان دسترسی به این سیستم دیتابیس را فراهم کردهاند، استفاده کنید. درست است که این کاربرد به SQLite محدود نمیشود و پایگاهدادههای کلاینت-سروری نیز در این زمینه قابل استفاده هستند اما به دلیل ساده بودن راهاندازی و کار با SQLite و راحتتر بودن اشتراکگذاری فایل تکی خروجی که ارائه میدهد، این سیستم دیتابیس میتواند یکی از گزینههای خوب پیش روی شما باشد. با وارد کردن مجموعهدادهها از فایل CSV و تجزیه دادهها میتوانید انواع گزارشها را داشته باشید. همچنین میتوانید با بهرهگیری از زبانهای برنامهنویسی پایتون و R و غیره که بهصورت داخلی یا از طریق رابطها از SQLite پشتیبانی میکنند و اجرای اسکریپتهایی که به این زبانها نوشته شدهاند، تحلیلهای پیچیدهتری را روی دادههای خود انجام دهید. این تحلیلها میتوانند در موضوعات مختلف مانند تحلیل آمارهای ورزشی، تحلیل گزارشها یا لاگهای مربوط به وبسایت، تحلیل دادههای مالی و غیره باشند.
حوزه اینترنت اشیا و نرمافزارهای داخلی
SQLite میتواند در لبه شبکه و دستگاهها نیز بسیار خوب و مؤثر کار کند و نقش بسیار پررنگی داشته باشد. این سیستم همچنین میتواند مانند سیستمهای پایگاه داده کلاینت-سروری در دیتاسنترها و با پشتیانی افراد متخصص نیز فعالیت کند و بهطور کلی خدمات مرتبط با دادهها را با سرعت و اطمینان مناسبی ارائه دهد.
سیستم مدیریت پایگاه داده SQLite یکی از بهترین گزینهها برای استفاده در اینترنت اشیا و مواردی مانند نرمافزارهای داخلی دوربینها، رباتها، گوشیهای موبایل، حسگرها، دستگاههای پزشکی، کنسولهای بازی، ساعتها، لوازم آشپزخانه، اتومبیلها، هواپیماها، پهبادها و غیره محسوب میشود. این مورد به دلیل این است که سیستم پایگاه داده SQLite به مدیریت و افراد متخصص نیازی ندارد بنابراین گزینه خوبی برای استفاده در دستگاههای گفته شده بهشمار میرود.
استفاده در وب سایت ها
بیشتر وبسایتهایی که در حال حاضر مشاهده میکنید از دیتابیس استفاده میکنند و شما میتوانید SQLite را بهعنوان دیتابیس وبسایت خود بهکار ببرید. اگر میزان استفاده وبسایت شما از دیتابیس و ترافیک انتقالی وبسایت کم تا متوسط باشد یا به زبان ساده پذیرای کمتر از ۱۰۰ هزار بازدید روزانه باشد، SQLite میتواند عملکرد خوبی داشته باشد. البته این مقدار، حدودی است و تا مقادیر بسیار بالاتر هم این سیستم مدیریت پایگاه داده میتواند پاسخگویی قابل قبولی را در این رابطه ارائه دهد.
برای کَش کردن داده ها
از SQLite میتوان با هدف کش کردن دادههای مرتبط از یک سیستم مدیریت پایگاه داده رابطهای بزرگ استفاده کرد. این کار چندین مزیت دارد که در ادامه بیان کردهایم.
- نخست اینکه میزان تأخیر کاهش پیدا میکند. به این دلیل که دادهها بهجای DMBS اصلی، از کش یا همان دیتابیس محلی SQLite بازیابی میشوند و ارتباطات شبکهای نیز کاهش پیدا میکند.
- مورد بعدی اینکه میزان ترافیک شبکه و دیتابیس اصلی کمتر میشود.
- همچنین با توجه به محلی بودن SQLite، در صورتیکه در ارتباطات شبکه اختلالی ایجاد شود، برنامه سمت کلاینت به احتمال قوی بدون مشکل به کار خود ادامه خواهد داد.
پایگاه داده سمت سرور
از SQlite همچنین بهعنوان دیتابیس اپلیکیشن سمت سرور روی دیتاسنتر نیز استفاده شده است. در این حالت با اینکه سیستم هنوز بهصورت کلاینت-سروری است اما کوئریها بهجای SQL، بهشکل سطح بالا ارسال شده و پاسخ متناظر با آن نیز به همین ترتیب دریافت میشود. در واقع، سرور درخواست را به کوئریهای SQL تبدیل کرده و پس از جمعآوری نتایج، پردازش، فیلتر کردن و سایر مراحل، اطلاعات لازم را بهعنوان پاسخی سطح بالا بر میگرداند. در این حالت، گویا SQLite عملکرد سریعتری را نسبت به سیستمهای پایگاهداده کلاینت-سروری SQL از خود نشان میدهد.
چه شرکت هایی از SQLite استفاده می کنند؟
سیستم مدیریت پایگاه داده SQLite بهعنوان یکی از رایجترین و پرکاربردترین نرمافزارهای مدیریت دیتابیس توسط شرکتهای بزرگ و شناختهشدهای مورد استفاده قرار گرفته است که برخی از آنها را در ادامه معرفی کردهایم.
- شرکت ادوبی: کمپانی Adobe از نرمافزار پایگاه داده SQLite در «Adobe AIR» ،«Acrobat Reader» و همچنین به منظور فایلهای اپلیکیشن فتوشاپ لایتروم استفاده کرده است.
- شرکت ایرباس: طبق اعلام شرکت Airbus، سیستم SQLite در نرمافزار پرواز مجموعه هواپیماهای A350 XWB این شرکت بزرگ هواپیماسازی استفاده شده است.
- شرکت اپل: این شرکت در بسیاری از محصولات نرمافزاری خود و برنامههای سیستم عامل Mac OS-X در سرورها و کامپیوترهای شخصی و همچنین اپلیکیشنهای iOS در دستگاههایی نظیر آیفون و غیره از سیستم مدیریت دیتابیس SQLite استفاده میکند.
- شرکت بوش: این شرکت در سیستمهای مالتیمدیای مورد استفاده در خودروهایی نظیر سوزوکی، نیسان و غیره، SQLite را بهکار میبرد.
- دراپباکس: Dropbox یک سرویس میزبانی و ذخیرهسازی انواع فایلها بهصورت ابری است که امکانات گوناگونی را در اختیارمان قرار میدهد. بهطور مثال میتوانیم از دستگاههای گوناگون به فایلهایمان دسترسی داشته باشیم و غیره. این سرویس نیز برای دیتابیس سمت کلاینت از SQLite استفاده میکند.
- فیسبوک: ابزار osquery از این شرکت نیز SQLite را بهعنوان سیستم پایگاه داده خود برگزیده است.
- گوگل: این غول فناوری نیز در محصولاتی نظیر گوگلکروم و همچنین سیستم عامل اندروید خود از قابلیتهای SQLite بهرهمند شده است.
- مکافی: این شرکت نرمافزاری معروف در حوزه ساخت راهکارهای امنیت کامپیوتری در آنتیویروسهای خود از SQLite استفاده کرده است.
- مایکروسافت: سیستم عامل مایکروسافت ویندوز ۱۰ و برخی دیگر از محصولات این کمپانی از SQLite استفاده کردهاند.
- موزیلا: متادیتاها در مروگر وب فایرفاکس و محصول Thunderbird Email Reader این شرکت از SQLite استفاده برای مدیریت دادهها کردهاند.
- php: زبان طراحی سایت بسیار معروف PHP هم بهصورت پیشفرض از SQLite پشتیبانی میکند.
- پایتون: SQLite در نسخههای مختلف زبان برنامهنویسی پرطرفدار Python هم وجود دارد.
- اسکایپ: کلاینتهای این برنامه نیز به احتمال قوی از SQLite استفاده میکنند.
نحوه نصب SQLite روی ویندوز چگونه است؟
در این قسمت میخواهیم نحوه دانلود SQLite و همچنین نصب این سیستم مدیریت پایگاه داده را به شما یاد بدهیم.
برای این منظور کافی است که مراحل زیر را دنبال کنید.
گام اول: به وبسایت پایگاه داده SQLite رفته و فایل مربوط به سیستم خود را دانلود کنید. برای دانلود سیستم مدیریت پایگاه داده رابطهای SQLite با توجه به پلتفرم مورد نظر همچون ویندوز، لینوکس، مک، اندروید و غیره میتوانید از لینک آورده شده در ادامه استفاده کنید.
- آدرس صفحه دانلود در وبسایت SQLite : «+»
در این صفحه، به فایلهای باینری قابل اجرا روی سیستم عاملهای مختلف علاوه بر ویندوز، که از قبل کامپایل شدهاند نیز دسترسی خواهید داشت. منظور، سیستم عاملهایی نظیر اندروید، Mac OS X، لینوکس و غیره است. از قسمت «Precompiled Binaries for Windows»، فایل sqlite-dll-win-x64-3460000.zip را دانلود کنید که حجمی در حدود یک مگابایت دارد.
گام دوم: فایل sqlite-tools-win-x64-3460000.zip را نیز از همین قسمت دانلود کنید. سپس این فایلها را به فولدر دلخواه خود منتقل کرده و اکسترکت کنید.
گام سوم: به درایو C رفته و فولدری با نام sqlite در آن بسازید. سپس فایل sqlite3.exe که پیش از این دانلود کردید را به آن منتقل کنید.
گام چهارم: حالا میبایست فایل sqlite3.exe را باز کنید. روش دیگر این است که وارد خط فرمان یا CMD شوید و به مسیر C:\sqlite بروید. سپس sqlite3 را نوشته و کلید Enter را از روی کیبرد بفشارید. در هر صورت پنجرهای مانند آنچه در تصویر زیر مشاهده میکنید برایتان باز میشود.
با انجام این کار، SQLite آماده استفاده شده است و میتوانید از دستورات این پایگاه داده استفاده کنید. در ادامه برخی از مهمترین دستورات SQLite را به شما یاد میدهیم.
در یکی از مطالب پیشین مجله فرادرس، نحوه فعالسازی SQLite3 در محیط «زمپ» (XAMPP) را توضیح دادهایم که مطالعه آن میتواند برایتان مفید باشد.
راهنمای دستورات SQLite
حال که توانستید SQLite را روی سیستم خود دانلود و نصب کنید میتوانید استفاده از آن را با نوشتن دستورات مربوطه شروع کنید.
در این قسمت برخی از دستورات پایهای SQLite را آوردهایم.
دستور ساخت جدول یا CREATE TABLE در SQLite چیست؟
در SQLite برای اینکه بتوانیم جدول جدیدی را برای دادههایمان ایجاد کنیم از دستور CREATE TABLE استفاده میکنیم. نکتهای که میبایست یادتان باشد این است که نام جدول، ستونها و نوع داده ستونها در این مرحله تعیین میشوند. در ادامه سینتکس ساخت جدول در SQLite را آوردهایم.
1CREATE TABLE database_name.table_name(
2 col datatype PRIMARY KEY(one or more columns),
3 col datatype,
4 ...
5 col datatype,
6);
برای اینکه درک بهتری نسبت به این موضوع پیدا کنید یک مثال میزنیم.
فرض کنید که میخواهیم جدولی بهنام student بسازیم که دارای ۶ ستون شامل موارد آورده شده در زیر باشد.
- stu_Id شامل شماره دانشجویی از نوع int است و کلید اصلی جدول محسوب میشود.
- stu_name بیانگر نام دانشجو و از نوع varchar(25) است.
- Age که شامل سن دانشجو و از نوع int است.
- Gender بیانگر جنسیت دانشجو و از نوع char(1) است.
- Doa که تاریخ ورودی دانشجو را نشان میدهد و از نوع date تعریف میشود.
- Address که بیانگر آدرس دانشجو است و با نوع varchar(20) تعریف میشود.
ناحیه مشخص شده با رنگ زرد که در تصویر زیر آورده شده، مثال دستور ساخت جدول را با ستونهای تعیین شده نشان میدهد.
برای اینکه از ساخت جدول مطمئن شوید کافی است تا از عبارت .tables استفاده کنید. فلش قرمزرنگ این مورد را نشان میدهد. همچنین، فلش آبیرنگ، فهرست جدولهای ساخته شده توسط شما یعنی student را نشان میدهد.
دستور درج یا INSERT در SQLite چیست؟
در پایگاه داده رابطهای، دادههای جدید را در قالب «سطرها» یا همان «رکوردهای» جدید به جدولها اضافه میکنیم. در SQLite برای افزودن اطلاعات و سطرهای جدید از دستور INSERT INTO استفاده میشود.
سینتکس این دستور را در زیر آوردهایم.
1INSERT INTO Table_name (col1, col2, ...,col n)
2VALUES (value1, value2, value3,...,values n);
برای درک بهتر میخواهیم سطری جدید به جدول studentاضافه کنیم. در محیط SQLite، دستور گفته شده را بهشکل زیر اجرا میکنیم.
insert into students values (101, 'pouria', 33, 'M', '2010-11-23', 'Pune'), (102, 'Nilesh', 19, 'M', '2016-11-23', 'New York');
در این کوئری ۲ سطر با پارامترهای مشخص شده را به جدول خود اضافه کردهایم. برای اینکه جدول را مشاهده کنید کافی است تا از دستور SELECT بهشکل زیر استفاده کنید.
1SELECT * FROM students;
این دستور، اطلاعات خواسته شده را از جدول مورد نظر بیرون میکشد. خروجی آن نیز بهصورت زیر خواهد بود.
101|pouria|33|M|2010-11-23|Pune 102|Nilesh|19|M|2016-11-23|New York
دستور به روز رسانی یا UPDATE در SQLite چیست؟
گاهی اوقات لازم است تا اطلاعات و رکوردهای فعلی در جدولهای پایگاه داده را تغییر دهیم یا ویرایش کنیم. در این صورت لازم است تا از دستور UPDATE به صورتیکه در ادامه گفته شده استفاده کنیم.
1UPDATE table_name
2SET column1 = value1, column2 = value2...., columnN = valueN
3WHERE [condition];
با استفاده از دستور WHERE میتوانیم سطرهای مشخصی را انتخاب کنیم که از شرایط خاصی پیروی میکنند. در صورتیکه از این دستور استفاده نکنیم، تمامی رکوردها برای تغییر انتخاب میشوند. کوئری زیر را در نظر بگیرید.
1update students
2set stu_name = 'ali'
3where stu_Id = 102;
در این خطوط میگوییم که قصد بهروزرسانی جدول students را داریم. سپس میگوییم که فیلد نام دانشجو یا stu_name را با مقدار جدید ali جایگزین کند. سپس مشخص میکنیم که این بهروزرسانی تنها برای رکوردی انجام شود که شماره دانشجویی یا stu_Id مربوط به آن برابر با مقدار 102 است.
دستور حذف یا DELETE در SQLite چیست؟
در صورتیکه قصد حذف برخی از رکوردهای جدول خود را داشته باشید میتوانید از دستور DELETE با سینتکس زیر استفاده کنید.
1DELETE FROM table_name
2WHERE [conditions];
برای مثال فرض کنید که میخواهید رکورد دانشجویی با شما دانشجویی 101 را حذف کنید. برای این منظور کوئری خود را بهشکل زیر نوشته و اجرا کنید.
delete from students where stu_Id = 101;
دستور WHERE در SQLite چیست؟
تا اینجای کار چندین مرتبه دستور WHERE را بهکار بردهاید. این دستور در واقع شرطی را برای انتخاب رکوردها اعمل میکند و در صورت عدم استفاده، کل رکوردها انتخاب میشوند. سینتکس دستور WHEREبهصورت زیر است.
1SELECT column1, column2,.... columnN
2FROM table_name
3WHERE [condition]
برای درک بهتر به مثال زیر توجه کنید.
1SELECT *
2FROM students
3WHERE stu_name = 'ali';
با اجرای این دستور آن دسته از رکوردهایی برای نمایش در خروجی انتخاب میشوند که ویژگی «نام دانشجو» (stu_name ) در آنها برابر با ali باشد.
دستور AND در SQLite چیست؟
گاهی اوقات پیش میآید که قصد انجام چندین مقایسه درون یک دستور SQL را داشته باشید. در این صورت میتوانید از عملگر ترکیبی AND بهشکل زیر استفاده کنید.
1SELECT column1, column2, columnN
2FROM table_name
3WHERE [condition1] AND [condition2]...AND [conditionN];
شما میتوانید به هر تعداد که بخواهید شرط تعیین کنید و بین آنها از AND استفاده کنید.
فرض کنید که میخواهیم تمامی رکوردهایی با نام ali که سن آنها زیر ۳۰ سال است را بازیابی کنیم. برای این منظور کافی است تا یک کوئری شبیه به آنچه که در ادامه آورده شده را بنویسیم.
1SELECT * FROM students
2WHERE stu_name = 'ali' AND Age < 30;
دستور گروهبندی یا GROUP BY در SQLite چیست؟
گاهی اوقات نیاز است تا اطلاعات جدول را بر اساس ستونهای خاصی گروهبندی کنید. در اینگونه مواقع از دستور گروهبندی یا GROUP BY استفاده میشود که سینتکس آن را در ادامه آوردهایم.
1SELECT column-list
2FROM table_name
3WHERE [ conditions ]
4GROUP BY column1, column2....columnN
5ORDER BY column1, column2....columnN
برای درک بهتر یک مثال میزنیم. فرض کنید که میخواهیم دانشجویان را بر اساس تاریخ ثبتنام و ورود آنها به دانشگاه گروهبندی کنیم. در اینصورت به شکل زیر عمل میکنیم.
1SELECT doa, COUNT(stu_Id)
2FROM students
3GROUP BY doa;
خروجی این کد برابر با 2016-11-23|1 خواهد بود. با توجه به اینکه تنها یک رکورد داریم، یک تاریخ یا doa را به ما نشان میدهد. همچنین، در این تاریخ پذیرش، تنها یک نفر را پیدا کرده است.
دستور HAVING در SQLite چیست؟
با استفاده از این دستور میتوانید شرط خاصی را برا نمایش خروجی در نظر بگیرید و بهطور کلی همراه با توابع تجمیعی - نظیر MIN ،MAX ،COUNT،SUM و AVG - مورد استفاده قرار میگیرد.
سینتکس این دستور را در ادامه آوردهایم.
1SELECT column1, column2
2FROM table1, table2
3WHERE [ conditions ]
4GROUP BY column1, column2
5HAVING [ conditions ]
6ORDER BY column1, column2
برای درک بهتر کوئری زیر را در نظر بگیرید.
1SELECT count(stu_Id), Address
2FROM students
3GROUP BY Address
4HAVING count(stu_Id) <3;
در این کوئری، آدرس و تعداد شمارههای دانشجویی دارای آن آدرس، با توجه به جدول دانشجویان محاسبه میشود. سپس نتایج بر اساس آدرس مشابه گروهبندی میشود. در نهایت، مواردی که تعداد شماره دانشجویی آنها ۲ و کمتر از آن باشد نشان داده میشود.
1|New York 2|Pune
دستور مرتب سازی ORDER BY در SQLite چیست؟
با استفاده از این دستور میتوانید خروجی را بر اساس یک یا چند ستون مرتب کرده و نشان دهید. سینتکس این دستور را در ادامه آوردهایم.
1SELECT column-list
2FROM table_name
3[WHERE condition]
4[ORDER BY column1, column2, .. columnN] [ASC | DESC];
برای درک بهتر یک مثال میزنیم. فرض کنید که میخواهیم جدول خود را بر اساس ستون شماره دانشجو و با ترتیب نزولی مرتب کنیم. کوئری زیر این کار را انجام میدهد.
1SELECT * FROM students
2ORDER BY stu_Id DESC;
در نهایت اطلاعات ما بر اساس شماره دانشجویی و بهصورت نزولی مرتب میشود.
121|pouria|33|M|2010-11-23|Pune 102|ali|19|M|2016-11-23|New York
در ادامه برخی از توابع تجمیعی را بررسی میکنیم.
تابع کمینه مقدار یا MIN در SQLite چیست؟
با استفاده از این تابع میتوانیم کمترین مقدار یک عبارت را بهدست بیاوریم. سینتکس آن به شکل زیر است.
1SELECT MIN(aggregate_expression)
2FROM tables
3[WHERE conditions];
برای درک بهتر، کوئری زیر را در نظر بگیرید.
1SELECT MIN(age) FROM students;
خروجی این کوئری کمترین مقدار در ستون age است که مقدار 19 را بر میگرداند.
تابع بیشینه مقدار یا MAX در SQLite چیست؟
اگر بخواهید که بیشینه مقدار یک عبارت را به دست بیاورید میتوانید از تابع MAX استفاده کنید. سینتکس این تابع را در زیر آوردهایم.
1SELECT MAX(aggregate_expression) FROM tables [WHERE conditions];
مشابه تابع قبلی میتوانیم یک کوئری به شکل زیر روی جدول دانشجویان خود داشته باشیم.
1SELECT Max(age) FROM students;
با اجرای این کوئری مقدار 33 در خروجی نشان داده میشود.
تابع مقدار میانگین یا AVG در SQLite چیست؟
با استفاده از تابع AVG، میانگین مقادیر یک ستون عددی را میتوانیم داشته باشیم. سینتکس آن را در ادامه مشاهده میکنید.
1SELECT AVG(aggregate_expression) FROM tables [WHERE conditions];
شما میتوانید این تابع را بر روی جدول خود تست کنید تا میانگین ستون سن را بهدست بیاورید.
1SELECT AVG(age) FROM students;
در این صورت مقداری برابر با 28.3333333333333 در خروجی نشان داده میشود.
تابع مجموع یا SUM در SQLite چیست؟
در صورتیکه قصد محاسبه مجموع مقادیر یک ستون عددی در جدول دادههای خود را داشته باشید میتوانید از تابع SUM با سینتکس زیر استفاده کنید.
1SELECT SUM(aggregate_expression) FROM tables [WHERE conditions];
فرض کنید که بخواهیم مجموع مقادیر ستون سن را در جدول دانشجویان محاسبه کنیم.
1SELECT sum(age) FROM students;
با اجرای این کوئری مقدار 85 برگردانده میشود که مجموع مقادیر سه کورد موجود در جدول ما است.
نحوه استفاده از SQLite در پایتون چگونه است؟
برای اینکه بتوانید سیستم مدیریت پایگاه داده SQLite را بههمراه زبان برنامهنویسی محبوب پایتون بهکار ببرید لازم است تا از ماژول پایتونی SQLite3 استفاده کنید. در واقع با بهکارگیری از این روش شما میتوانید با رابطی ساده و بهراحتی با سیستم SQLite ارتباط برقرار کنید و از قابلیتهای آن بهرهمند شوید. همچنین خوب است بدانید که این ماژول را نیازی نیست تا جداگانه نصب کنید زیرا بهصورت درونی در پایتون وجود دارد.
در این قسمت میخواهیم نحوه بهکارگیری پایگاه SQLite در پایتون را به شما یاد بدهیم.
نحوه اتصال به SQLite با ماژول SQLite3 پایتون
همانطور که گفتیم این کتابخانه از قبل در پایتون موجود است و نیازی به نصب ندارد. اما لازم است تا آن را در کدهای خود وارد کنید.
1import sqlite3
اکنون میتوانیم به پایگاه داده SQLite متصل شویم. برای اینکار از متد connect() به شکلی که در ادامه آورده شده استفاده میکنیم.
1sqliteConnection = sqlite3.connect('sql.db')
با این متد، به پایگاه دادهای که نام آن را به عنوان پارامتر پاس دادهایم متصل میشویم. توجه داشته باشید در صورتیکه چنین پایگاهدادهای موجود نباشد یک مورد جدید ایجاد میکند.
حالا که توانستید به پایگاه داده خود متصل شوید یا آن را ایجاد کنید وقت آن رسیده تا با نحوه اجرای کوئریهای مختلف آشنا شوید. برای این منظور با استفاده از متد cursor() یک مکاننما روی نمونه اتصالی که پیش از این ساختهایم یعنی sqliteConnection ، ایجاد میکنیم.
1cursor = sqliteConnection.cursor()
2print('DB Init')
Cursor ایجاد شده دارای متدی بهنام execute() است که شما میتوانید کوئری مورد نظر خود به آن پاس دهید تا اجرا شود.
1query = 'SQL query;'
2cursor.execute(query)
توجه داشته باشید که کوئری در قالب یک رشته نوشته شده است. در ادامه، برای دریافت نتیجه کوئری خود میتوانید از متد fetchall() از Cursor استفاده کنید.
1result = cursor.fetchall()
در این کد، نتیجه برگردانده شده در result قرار گرفته است که میتوانید آن را چاپ کنید یا کارهای دیگری را روی آن انجام دهید. در نهایت نیز میتوانید به فعالیت Cursor خاتمه دهید.
1cursor.close()
برای یادگیری بیشتر در مورد استفاده از SQLite در پایتون میتوانید از مطلبی که لینک آن را در زیر آوردهایم، استفاده کنید.
فرق سایر پایگاه های داده با SQLite چیست؟
در این قسمت میخواهیم پایگاه داده SQLite را با سایر پایگاههای داده نظیر MySQL و PostgreSQL مقایسه کنیم. هر کدام از این سیستمهای مدیریت پایگاه داده دارای خصوصیات مربوط به خود هستند. بنابراین میبایست با ویژگیهای آنها آشنا باشید تا بتوانید بهترین گزینه را برای کار خود انتخاب کنید. جدولی را برای این منظور در ادامه آوردهایم.
محدودیت SQLite در اجرای دستورات چیست؟
در ادامه برخی محدودیتهای SQLite در اجرای دستورات را آوردهایم.
- محدودیت در مجوزهای دسترسی: سیستم مدیریت پایگاه داده SQLite از مجوزهای دسترسی تخصصیتر که با دستوراتی مانند GRANT یا REVOKE مدیریت میشوند و در سایر پایگاههای دادهای شاهد هستیم پشتیبانی نمیکند و تنها مجوزهای دسترسی استاندارد را در اختیار شما قرار میدهد.
- محدودیت ALTER table: در SQLite عملکرد بسیار محدودی از ALTER table را در اختیار داریم بهصورتی که بر خلاف سایر سیستمهای مدیریت پایگاه داده، تنها میتواند کارهایی مانند تغییر نام جدول، افزودن ستون جدید به جدول، تغییر نام ستون را انجام دهد و عملیات پیشرفتهتری مانند آنچه که در SQL شاهد آن هستیم ندارد.
- عدم پشتیبانی از تریگرهای FOR EACH STATEMENT: سیستم مدیریت پایگاه داده SQLite تنها از تریگرهای FOR EACH ROW پشتیبانی میکند.
- محدودیت فقط خواندنی بودن View-ها: در SQLite نمیتوانید اقداماتی نظیر درج، حذف یا بهروزرسانی را در View ها انجام دهید.
- محدودیت در دستور JOIN: در صورتی که قصد استفاده از OUTER JOIN ها را داشته باشید باید بدانید که FULL OUTER JOIN و RIGHT OUTER JOIN در این پایگاه داده پشتیبانی نمیشوند و تنها میتوانید از LEFT OUTER JOIN استفاده کنید.
ادامه مسیر یادگیری پایگاه داده با فرادرس
در صورتی که قصد ادامه یادگیری پایگاه دادهها را داشته باشید و بخواهید مهارتهای خود را در این زمینه تقویت کنید میتوانید از فیلمهای آموزشی فرادرس که لینکها ان را در ادامه آوردهایم استفاده کنید.
- فیلم آموزش کوئرینویسی پیشرفته در SQL Server از فرادرس
- فیلم آموزش آسیبپذیری SQL Injection در محیط واقعی از فرادرس بهطور عملی مبحث شناسایی آسیبپذیری در وبسایتها را به شما آموزش میدهد و برای افرادی که بهدنبال یادگیری تست نفوذ هستند بسیار مفید خواهد بود.
جمعبندی
در این مطلب از مجله فرادرس به شما توضیح دادیم که SQLite چیست و چه کاربردی دارد. برای بهکارگیری این سیستم مدیریت پایگاه داده نیازی به نصب، راهندازی و سایر مسائل اینچنینی نخواهید داشت. گفتیم که فایل SQLite حجم بسیار کمی دارد و همین مورد آن را به گزینه مناسبی برای نرمافزارهای داخلی دستگاهها و اینترنت اشیا تبدیل کرده است. با توجه به ساده بودن راهاندازی SQLite میتوان آن را برای آموزش مفاهیم SQL به افراد نیز مورد استفاده قرار داد. شما میتوانید تأخیر موجود در درخواستها و پاسخها از سرور را با تکنیک نهانسازی کاهش دهید. یعنی SQLite را با پایگاه داده سرور-کلاینت خود تلفیق کرده و از آن بهعنوان حافظه نهان برای کش کردن دادههای مرتبط در پایگاه داده سرور بهصورت محلی استفاده کنید. خصوصیات، کاربردها و شرکتهای معروفی که از این دیتابیس استفاده کرهاند و همچنین بسیاری موارد دیگر نیز جزو مباحثی هستند که در این نوشتار به آن پرداختیم.
علیرغم تمامی نکات مثبتی که برای SQLite بیان کردیم، لازم است تا نبود قابلیتهایی همچون چندکاربره بودن در SQLite را نیز یادآور شویم که در پایگاهدادههای تمامعیار همچون MySQL شاهد آن هستیم. این مورد باعث میشود تا سیستم مدیریت کاربر مناسب، کنترل دسترسی مطلوب و قابلیتهای امنیتی متعددی را در این پایگاه داده در اختیار نداشته باشید.