بهترین دیتابیس در اندروید چیه ؟
دیتابیس ها (Database) یکی از اصلی ترین موارد توی برنامه نویسی اندروید به حساب میان.
توسط database ها ما اطلاعات کاربر، اپلیکیشن، سرور و … رو میتونیم ذخیره کنیم و هر زمانی که کاربر به اونا احتیاج داشت در اختیارش قرار بدیم.
توی اندروید دیتابیس های مختلفی وجود داره و هر کدوم از این ها مزایا و معایب خاص خودشون رو دارن.
موقع کار کردن با database ها ما 4 عملیات اصلی داریم که در اصطلاح بهشون CRUD میگیم.
به دیتابیس توی فارسی پایگاه داده هم میگن.
CRUD یعنی چی و شامل چه مواردی میشه؟
- Create : به معنی ساختن هستش. یعنی زمانی که میخوایم یک پایگاه داده جدید ایجاد کنیم.
- Read : به معنی خواندن. یعنی زمانی که میخوایم اطلاعات موجود در پایگاه داده رو بخونیم و ازشون استفاده کنیم.
- Update : به معنی بروزرسانی. یعنی زمانی که میخوایم اطلاعات موجود در داخل پایگاه داده رو به یه اطلاعات دیگه بروزرسانی کنیم.
- Delete : به معنی حذف کردن. یعنی زمانی که میخوایم اطلاعاتی رو از داخل پایگاه داده حذف کنیم.
دیتابیس در اندروید انواع مختلفی داره که قصد دارم توی این پست 4 تا از database های معروف اندروید رو از نظر سرعت پیاده سازی CRUD و حجم بررسیشون کنم.
دیتابیس های مورد بررسی قرار گرفته
1) Room = این پایگاه داده توسط گوگل معرفی شده و خیلی مورد استقبال برنامه نویس ها قرار گرفته.
درواقع این پایگاه داده یک لایه انتزاعی روی SQLite هستش که جز Android Jetpack به حساب میاد.
این پایگاه داده به خاطر راحتی کار و بیشتر بودن منابع آموزشی، خیلی مورد توجه قرار گرفت.
2) GreenDAO = این پایگاه داده توسط شرکت GreenRobot عرضه شده و برپایه Android ORM برای SQLite ساخته شده.
ORM مخفف Object Relation Mapping هستش.
3) Realm = این پایگاه داده بر پایه Non-Relational یا غیررابطه ای ساخته شده.
درواقع object ها (اشیا) رو به صورت مستقیم روی دیسک ذخیره میکنه.
Realm یه پایگاه داده بسیار خوب و پرسرعت برای عملیات بسیار سنگین و پیچیده هستش.
از این دیتابیس اکثرا توی پروژه های بسیار بزرگ و سنگین استفاده میکنن.
اصلا اینطوری نیست
بلکه نوع ساختار Realm طوری هستش که اکثرا برای پروژه های سنگین بیشتر مورد استفاده قرار میگیره
4) ObjectBox = این پایگاه داده برپایه NoSQL با عملکرد بهینه شده توسط GreenRobot ساخته شده.
این شرکت قبلا GreenDao رو هم ساخته.
شرایط بررسی Database ها
- برای نتیجه دقیق و مورد اعتمادتر عملیات CRUD رو صورت خودکار انجام دادم، یعنی از روش های تست نویسی برای اینکار استفاده کردم.
- برای هر 4 تا دیتابیس از آخرین نسخه های هرکدوم از این کتابخونه ها استفاده کردم.
- هر کدوم از این تست ها 10 بار تکرار شدن تا مطمئن بشم که نتیجه درست هستش.
- این تست ها برای مقادیر 10 هزار تا، 20 هزار تا، 30 هزار تا، 40 هزار تا و 50 هزار تا آیتم انجام شدن.
توضیحات در مورد نمودار
نموداری که نتیجه تست ها روی اون قرار گرفتن، بر پایه تعداد آیتم ها و زمان سپری شده هستش.
محور X تعداد آیتم ها رو نشون و محور Y هم زمان سپری شده.
پس هرکدوم از این پایگاه داده ها روی محور Y پایین ترین نمودار رو داشته باشن، اون پایگاه داده عملکرد بهتری رو نشون داده.
عملیات Create
نتیجه تست انجام شده
همونطور که میبینید توی عملیات ساختن پایگاه داده، ObjectBox، به طرز عجیبی از بقیه سریعتر عمل کرده.
یعنی ساختن 50 هزار آیتم در کمتر از 500 میلی ثانیه. (یعنی کمتر از نصف یک ثانیه ? ).
توی این تست ObjectBox بهترین نتیجه رو داشت و بعد از اون هم Realm تقریبا توی 1.1 ثانیه این عملیات رو انجام داد.
سپس Room و GreenDao قرار دارن که تقریبا 1.6 ثانیه طول کشیده تا بتونن 50 هزار آیتم رو بسازن.
عملیات Read
نتیجه تست انجام شده
نتیجه این تست واقعا شگفت انگیزه ? .
Realm توی کمتر از 50 میلی ثانیه 50 هزار آیتم رو خونده! این عدد واقعا حیرت آوره! 50 هزار آیتم در کمتر از 50 میلی ثانیه!
در رتبه های بعدی ObjectBox با 260 میلی ثانیه، GreenDao با 560 میلی ثانیه و در نهایت هم Room با 770 میلی ثانیه قرار دارن.
من هنوزم محو تماشای سرعت خوندن اطلاعات توی Realm هستم ? .
عملیات Update
نتیجه تست انجام شده
باز هم ObjectBox نتیجه بهتری رو دریافت کرده.
این پایگاه داده تونست 50 هزار آیتم رو توی 400 میلی ثانیه بروز رسانی کنه.
بعد از اون Realm توی 900 میلی ثانیه، Room توی 2050 میلی ثانیه و سپس GreenDao توی 2100 میلی ثانیه تونستن 50 هزار آیتم رو بروز رسانی کنن.
عملیات Delete
نتیجه تست انجام شده
توی حذف آیتم ها Room بهتر از بقیه عمل کرده.
Room تونست 50 هزار آیتم رو توی 15 میلی ثانیه حذف کنه.
GreenDao هم عملکردی نزدیک به Room داشت و تونست توی 20 میلی ثانیه 50 هزار آیتم رو حذف کنه.
در نهایت هم Realm و ObjectBox قرار دارن که به ترتیب توی 30 میلی ثانیه و 80 میلی ثانیه تونستن 50 هزار آیتم رو حذف کنن.
حجم دیتابیس ها
محور Y توی این نمودار مربوط به حجم پایگاه داده ها هستش که بر اساس مگابایت در نظر گرفته شدن.
حجم هر کدوم از پایگاه داده ها رو برای 50 هزار آیتم مشاهده میکنید.
GreenDao با حجم 1.6 مگابایت کمترین حجم و Realm با 36 مگابایت بیشترین حجم رو داشتن.
واقعا 1.6 مگابایت در برابر 36 مگابایت اصلا قابل مقایسه نیست، واقعا باید به سازندگان GreenDao تبریک گفت.
در بین این ها هم Room با 3.2 مگابایت و ObjectBox با 5.5 مگابایت قرار دارن.
پر استفاده ترین پایگاه داده
اکثر برنامه نویس ها بیشتر از Room استفاده میکنن.
چون هم سَبُکه، هم منابع آموزشی خیلی قوی نسبت به بقیه پایگاه داده ها داره.
نتیجه گیری
این تست ها رو انجام دادم تا کامل با انواع پایگاه داده ها توی اندروید آشنا بشی و بهتر بتونی انتخاب کنی.
راستش نمیشه گفت کدوم یکی از این پایگاه داده ها به نسبت بقیه بهتر بود و برتری داشت.
چون هر کدوم از این پایگاه داده ها توی یکسری عملیات نسبت به بقیه برتری داشتن.
پس اول باید بیای بررسی کنی که کدوم عملیات برات مهمه ؟!
مثلا برای بعضی از اپلیکیشن ها سرعت خوندن اطلاعات خیلی بیشتر از بقیه موارد الویت داره.
یا توی بعضی های دیگه مثلا حجم پایگاه داده الویت بیشتری داره و …
پس اول باید الویتت رو برای استفاده از دیتابیس مشخصی کنی، سپس بیای از بین این 4 تا دیتابیس یکیش رو انتخاب کنی.