هر برنامه ای به یک سری داده نیاز دارد. این داده ها می توانند از طریق شبکه با صدا زدن APIها در دسترس برنامه قرار بگیرند. اما همواره نیاز است بعضی از داده های برنامه،‌ به شکل محلی در دسترس باشند تا دریافت آن ها realtime صورت بگیرد و در زمان، صرفه جویی شود. همچنین ممکن است داده ای به ندرت تغییر کند، نیازی نیست که این نوع داده را هربار با API از طریق شبکه دریافت کنیم. در این موارد یکی از راهکار ها برای نگاه داشتن محلی داده، استفاده از دیتابیس ها است.

  • مسئله
    • برای کی مهمه؟
    • شرح مسئله
  • دیتابیس در فلاتر
    • SQFlite
      • خصوصیات
      • مزیت ها
      • معایب
      • موارد استفاده
    • Moor
      • خصوصیات
      • مزیت ها
      • معایب
      • موارد استفاده
    • Hive
      • خصوصیات
      • مزایا
      • موارد استفاده
    • بقیه دیتابیس ها
  • جمع‌بندی
  • منابع

مسئله

برای کی مهمه؟

هر کسی که بخواهد برنامه ای تعاملی (با کاربر)‌ با فلاتر بنویسد.

شرح مسئله

گزینه های مختلفی برای پیاده سازی و استفاده از دیتابیس در فلاتر وجود دارد. هدف از این متن معرفی تعدادی از پرکاربردترین این ابزار هاست. به طوری که عمل مقایسه و تصمیم گیری نهایی آسان شود.

دیتابیس در فلاتر

به طور کلی دو نوع دیتابیس relational و non-relational داریم. در دیتابیس های relational ارتباط دقیقی بین موجودیت ها و مدل های داده ای ما وجود دارد و از داده ساختارهای جدول برای نگه داری instance های یک موجودیت با توجه به صفات آن استفاده می شود. در این دیتابیس ها اکثرا از زبان SQL برای معرفی schema و درخواست query استفاده می شود.

در مقابل دیتابیس های non-relational از داده ساختارهای جعبه (box) برای هر نوع داده استفاده می کنند. که هر جعبه صرفا دارای تعدادی key-value است.

SQFlite

خصوصیات

  • دیتابیس رابطه ای (relational) است.
  • پیاده سازی دیتابیس sqlite برای فلاتر است.

مزیت ها

  • قابلیت کنترل کامل دیتابیس را به برنامه نویس می دهد. (برنامه نویس مستقیما از SQL استفاده می کند و در سطوح پایین تر با دیتابیس ارتباط می گیرد.)
  • برنامه های مجزای مختلفی هستند که sqlite را می فهمند و با استفاده از آن ها می توان محتوای دیتابیس را به خوبی مشاهده کرد.

معایب

  • برنامه نویس باید همه query ها  و schema ها را با دست بنویسد و این کار می تواند زمان بر باشد.
  • هر گونه تغییر در دیتابیس از جمله تغییر schema پر هزینه خواهد بود.
  • این کتاب خانه، web برای فلاتر را پشتیبانی نمی کند.

موارد استفاده

اگر داده ها و موجودیت های ما از رابطه های دقیق و پیچیده ای پیروی می کنند، این کتاب خانه بسیار مفید خواهد بود.

Moor

خصوصیات

  • از دیتابیس sqlite اما با انتزاع بیشتر استفاده می کند (نیازی به SQL زدن مستقیم توسط برنامه نویس نیست).
  • schema ها به شکل programmatically ساخته می شوند. نه با دست!

مزیت ها

  • نوع داده ها و خروجی query ها بطور مشخص تعیین می شود (strongly typed)
  • با استفاده از ابزار های مختلف می توان مجتوا sqlite را مشاهده کرد.
  • نیازی به انجام کار سطح پایین توسط برنامه نویس نیست. (abstraction).

معایب

  • به طور کامل web را پشتیبانی نمی کند.
  • به پلتفرم وابسته است،‌زیرا به طور خالص به Dart زده نشده است.

موارد استفاده

بهتر است زمانی از moor استفاده شود که داده ها همچنان روابط دقیق و پیچیده ای دارند، اما برنامه نویس نمی خواهد که مستقیما درگیر SQL زدن شود.

Hive

خصوصیات

  • یک پیاده سازی دیتابیس های NoSQL برای فلاتر است. (non-relational)
  • به طور خالص با Dart زده شده است.
  • رمزنگاری قوی‌ای دارد. (از نظر امنیت)

مزایا

  • عملکرد بسیار سریعی دارد.
  • به طور خالص با Dart زده شده است.
  • overhead ای که در ایجاد و کوئری زدن در دیتابیس های relational وجود دارد را ندارد.
  • پشتیبانی cross platform
  • کم حجم است
  • ساده است!

موارد استفاده

  • زمانی که ارتباط بین مدل های داده ای برای ما اهمیت چندانی ندارد. یا بطور کلی، ارتباط پیچیده ای نداریم.
  • مثلا برنامه هایی که نیاز به ذخیره سازی داده های زیر دارند:
    • پروفایل کاربران
    • اطلاعات session
    • پست ها و blog ها
    • پیام ها
    • محتوای سبد خرید
    • دسته بندی محصولات
    • داده های خام ( binary data )

بقیه دیتابیس ها

همچنین می توان برای برنامه فلاتر از دیتابیس های دیگری نیز استفاده کرد. (این دیتابیس ها ممکن است لزوما محلی نباشند.)

  • MySQL
  • PostgreSQL
  • Realm
  • FireBase
  • Floor

جمع‌بندی

در این متن سعی شد مقایسه از ویژگی های دیتابیس های معروف در فلاتر آورده شود که کار برای انتخاب دیتابیس (در واقع ابزاری که کار با دیتابیس را پیاده سازی کرده است) بسته به نوع داده و برنامه و ویژگی های آن آسان شود.

منابع

درباره نیلوا

ایران،تهران

ناحیه نوآوری شریف

بلوار جواد اکبری

برج فناوری بنتک

T: 09150773830
E: admin[@]nilva.ir