ذخیره کردن اطلاعات از موضوعات مهم در هر اپلیکیشن یا وبسایتی است. این که از چه پایگاه داده ای استفاده کنیم و جداول و لیست ها را به چه صورت طراحی کنیم که هم خوانایی بالا باشد هم سرعت دریافت و ذخیره کردن اطلاعات.
یکی از پایگاه داده های معروفی که میتوانیم در سیستم عامل های اندروید و iOS استفاده کنیم پایگاه داده Realm است.
برای ذخیره کردن اطلاعات در برنامه های iOS راه های متنوعی مثل استفاده از Core Data یا SQLite وجود دارد. که هر دو این ها از نوع SQL هستند
اما اگر علاقه دارید از پایگاه داده NoSQL استفاده کنید Realm از گزینه های اولی است که میتوانید از آن استفاده کنید.
اما پایگاه داده از نوع SQL و NoSQL چه فرقی دارند؟
تفاوت اصلی که این دو پایگاه داده دارند در نحوه ذخیره کردن و ساخت اطلاعات است.
پایگاه داده SQL ای داده ها را بصورت جداول سازمان دهی شده و رابطه مند ذخیره میکند.
برای مثال یک جدولی از لیست گوشی های iOS را تصور کنید.
نسخه | سال عرضه | خلاصه ای از بهبود ها |
---|---|---|
iPhone 16 | 2024 |
بهبود در عملکرد دوربین پشتیبانی از Apple Intelligence |
iPhone 15 | 2023 |
پشتیبانی از Dynamic Island رنگ های پاستیلی |
iPhone 14 | 2022 |
طراحی جدید پردازنده A16 |
در لیست بالا اطلاعات درون یک جدول ذخیره شده است.
اما در یک دیتابیس NoSQL مثل Realm داده ها درون جدول ذخیره نمیشوند. بلکه داده ها بصورت غیر رابطه ای به شکل های مختلفی مثل مستندات (Document)، کلید-مقدار (Key-Value)، گرافها (Graph) ذخیره میشوند.
برای مثال یک پوشه (folder) را تصور کنید. شما در هر فولدر میتوانید اطلاعات مختلفی بریزید مثل عکس و ویدیو و ...
و در یک فولدر دیگر اطلاعات دیگری میریزید. یعنی فولدر ها لزوما اطلاعات مشابهی ندارند.
برخلاف دیتابیس های رابطهای که از جداول و روابط استفاده میکنند، در Realm نیازی به طراحی جداول نیست و میتوان دادهها را به شکل مدل های شی گرا تعریف کرد.
یعنی در Realm دادهها به صورت مستقیم و به عنوان اشیاء (Objects) ذخیره و مدیریت میشوند.
پایگاه داده Realm از انتخاب های اصلی هر برنامه نویس موبایل است. اما چه دلایلی پشت این انتخاب هست؟
چون پایگاه داده Realm بر روی دیسک کار میکند و نیازی به بررسی روابط پیجیده بین داده ها را ندارد، سرعت بالاتری نسبت به پایگاه داده های SQL ای دارد.
Realm از زبانهای مختلف برنامهنویسی مانند سوئیفت، جاوا، JavaScript و کاتلین پشتیبانی میکند.
از ویژگی های Realm میتوان به همگام سازی بلادرنگ یا Realm Sync اشاره کرد.
این ویژگی امکان همگامسازی خودکار دادهها بین دستگاهها و سرور را فراهم میکند، که برای برنامههایی که نیاز به همگامسازی بین کاربران دارند (مثل اپلیکیشنهای چت) بسیار مهم است.
از مهم ترین دلایلی که میتوان از Realm در اپلیکیشن های موبایل استفاده کرد امکان استفاده از داده ها بصورت آفلاین هست. یعنی شما نیازی به اینترنت برای دسترسی به داده ها نداری.
اما بریم سراغ مزایای دیتابیس Realm و ببینیم چرا این دیتابیس تا حد زیادی بین برنامه نویسان محبوب است.
بخاطر سازگاری که Realm با پلتفرم های مختلف دارد امکان نوشتن کدهای مشابه برای مدیریت داده ها وجود دارد.
با توجه به عدم پیاده سازی ساختار های پیچیده و نوشتن کوئری های سخت میتوان گفت استفاده از آن نسبت به پایگاه داده های SQL ای راحت تر است.
داده ها درون Realm با استفاده از رمزگذاری 256 بیتی AES رمزگذاری میشوند که باعث میشود بتوان اطلاعات مهم مثل اطلاعاتی بانکی را درون این پایگاه داده ذخیره کرد. (هر چند احتیاط همیشه شرط عقله!)
اما در کنار مزایا، این دیتابیس معایبی نیز دارد.
بخاطر نحوه پیاده سازی دیتابیس و ذخیره داده ها بصورت کلی به منابع بیشتری نیاز دارد.
بخاطر عدم پشتیبانی از این قابلیت ردیابی تغییرات داده های شما دشوارتر میشود.
اگر نیاز پایگاه داده ای دارید که روابط بین داده ها زیاد است و نیاز به پیاده سازی دقیق آن دارید در این صورت پایگاه داده SQL ای گزینه مناسب تری برای شما هستند.
اما در نهایت چه تصمیمی برای انتخاب دیتابیس میتوان گرفت؟ آیا میتوانیم بگوییم پایگاه داده ای مثل Realm از SQLite یا Core Data بهتر هست؟
عالی مقالتون خیلی خوب بود
چقدر روان و کامل توضیح دادید☺️ خسته نباشید واقعا خیلی مفید بود 🌟