یک پایگاه داده را انتخاب کنید: Cloud Firestore یا Realtime Database

فایربیس دو پایگاه داده سند مبتنی بر ابر و قابل دسترسی برای کلاینت ارائه می‌دهد. توصیه می‌کنیم مشتریان جدید با Cloud Firestore شروع کنند:

  • Cloud Firestore پایگاه داده اسناد سازگار با JSON در سطح سازمانی است که توسط بیش از ۶۰۰۰۰۰ توسعه‌دهنده مورد اعتماد قرار گرفته است. این پایگاه داده برای برنامه‌هایی با مدل‌های داده غنی که نیاز به قابلیت پرس‌وجو، مقیاس‌پذیری و دسترسی بالا دارند، مناسب است. همچنین همگام‌سازی کلاینت با تأخیر کم و دسترسی آفلاین به داده‌ها را ارائه می‌دهد.

  • Realtime Database پایگاه داده کلاسیک Firebase JSON است. این پایگاه داده برای برنامه‌هایی با مدل‌های داده ساده که نیاز به جستجوهای ساده و همگام‌سازی با تأخیر کم و مقیاس‌پذیری محدود دارند، مناسب است.

چه نکات مهم دیگری را باید در نظر گرفت؟

پس از فکر کردن در مورد ملاحظات کلیدی قبلی، ممکن است آماده انتخاب یک پایگاه داده باشید. اگر هنوز مزایا و معایب را می‌سنجید، این بخش تفاوت‌های دیگر بین Cloud Firestore و Realtime Database را پوشش می‌دهد.

مدل داده

هر دو Realtime Database و Cloud Firestore پایگاه داده NoSQL هستند.

Cloud Firestore [ ترجیح داده شده] Realtime Database
داده‌ها را به صورت مجموعه‌ای از اسناد ذخیره می‌کند.
  • داده‌های ساده به راحتی در اسناد ذخیره می‌شوند، که بسیار شبیه به JSON هستند.
  • داده‌های پیچیده و سلسله مراتبی با استفاده از زیرمجموعه‌های درون اسناد، راحت‌تر در مقیاس بزرگ سازماندهی می‌شوند.
  • به غیرنرمال‌سازی و مسطح‌سازی داده‌ها کمتری نیاز دارد.

درباره مدل داده Cloud Firestore بیشتر بدانید.

داده‌ها را به صورت یک درخت بزرگ JSON ذخیره می‌کند.
  • داده‌های ساده خیلی راحت ذخیره می‌شوند.
  • سازماندهی داده‌های پیچیده و سلسله مراتبی در مقیاس بزرگ دشوارتر است.

درباره مدل داده Realtime Database بیشتر بدانید.

پشتیبانی آنلاین و آفلاین

هر دو دارای SDK های موبایل-محور و بلادرنگ هستند و هر دو از ذخیره سازی داده محلی برای برنامه های آماده آفلاین پشتیبانی می کنند.

Cloud Firestore [ ترجیح داده شده] Realtime Database
پشتیبانی آفلاین برای کلاینت‌های اپل، اندروید و وب. پشتیبانی آفلاین برای کاربران اپل و اندروید.

حضور

دانستن اینکه یک کلاینت چه زمانی آنلاین یا آفلاین است می‌تواند مفید باشد. Realtime Database Firebase می‌تواند وضعیت اتصال کلاینت را ثبت کند و هر بار که وضعیت اتصال کلاینت تغییر می‌کند، به‌روزرسانی‌هایی را ارائه دهد.

Cloud Firestore [ ترجیح داده شده] Realtime Database
به صورت بومی پشتیبانی نمی‌شود. می‌توانید با همگام‌سازی Cloud Firestore و Realtime Database با استفاده از Cloud Functions پشتیبانی Realtime Database را برای presence افزایش دهید. برای این کار به بخش Build presence در Cloud Firestore مراجعه کنید. حضور پشتیبانی می‌شود.

پرس و جو

بازیابی، مرتب‌سازی و فیلتر کردن داده‌ها از هر یک از پایگاه‌های داده از طریق کوئری‌ها.

Cloud Firestore [ ترجیح داده شده] Realtime Database
پرس‌وجوهای فهرست‌بندی‌شده با مرتب‌سازی و فیلتر ترکیبی
  • شما می‌توانید فیلترها را به صورت زنجیره‌ای اعمال کنید و فیلتر کردن و مرتب‌سازی روی یک ویژگی را در یک کوئری واحد ترکیب کنید.
  • پرس‌وجوها سطحی هستند: آن‌ها فقط اسناد موجود در یک مجموعه یا گروه مجموعه خاص را برمی‌گردانند و داده‌های زیرمجموعه را برنمی‌گردانند.
  • پرس‌وجوها همیشه باید کل اسناد را برگردانند.
  • پرس‌وجوها به‌طور پیش‌فرض ایندکس می‌شوند: عملکرد پرس‌وجو متناسب با اندازه مجموعه نتایج شما است، نه مجموعه داده‌های شما.
پرس‌وجوهای عمیق با امکانات مرتب‌سازی و فیلترینگ محدود.
  • کوئری‌ها می‌توانند بر اساس یک ویژگی مرتب‌سازی یا فیلتر شوند، اما نمی‌توانند هر دو را با هم انجام دهند.
  • پرس‌وجوها به‌طور پیش‌فرض عمیق هستند: آن‌ها همیشه کل زیردرخت را برمی‌گردانند.
  • کوئری‌ها می‌توانند به داده‌ها در هر سطح جزئیاتی، حتی تا مقادیر گره‌های برگ در درخت JSON، دسترسی داشته باشند.
  • پرس‌وجوها نیازی به اندیس ندارند؛ با این حال، عملکرد برخی از پرس‌وجوها با افزایش مجموعه داده‌های شما کاهش می‌یابد.

نوشته‌ها و تراکنش‌ها

Cloud Firestore [ ترجیح داده شده] Realtime Database
عملیات پیشرفته نوشتن و تراکنش عملیات پایه نوشتن و تراکنش.

قابلیت اطمینان و عملکرد

Cloud Firestore [ ترجیح داده شده] Realtime Database
Cloud Firestore یک راهکار منطقه‌ای و چند منطقه‌ای است که به صورت خودکار مقیاس‌پذیر می‌شود.
  • یک راهکار با تأخیر کم، با زمان پاسخگویی معمول که بیشتر از 30 میلی‌ثانیه نیست.
  • داده‌های شما را در چندین مرکز داده در مناطق مجزا قرار می‌دهد و مقیاس‌پذیری جهانی و قابلیت اطمینان بالا را تضمین می‌کند.
  • در پیکربندی‌های منطقه‌ای یا چند منطقه‌ای در سراسر جهان موجود است.
اطلاعات بیشتر در مورد ویژگی‌های عملکرد و قابلیت اطمینان Cloud Firestore را در توافقنامه سطح خدمات بخوانید.
Realtime Database یک راه حل منطقه ای است.
  • در پیکربندی‌های منطقه‌ای موجود است. پایگاه‌های داده محدود به دسترسی منطقه‌ای در یک منطقه هستند.
  • تأخیر بسیار کم، با زمان پاسخگویی معمول که بیشتر از 10 میلی‌ثانیه نیست. گزینه‌ای ایده‌آل برای همگام‌سازی مکرر وضعیت.
برای اطلاعات بیشتر در مورد ویژگی‌های عملکرد و قابلیت اطمینان Realtime Database ، به توافقنامه سطح خدمات مراجعه کنید.

آپتایم

Cloud Firestore [ ترجیح داده شده] Realtime Database
عملکرد بسیار بالا در زمان آماده به کار (آپتایم).
  • عملکرد آپتایم معمول ۹۹.۹۹۹٪.
  • اگر در دسترس بودن از اهمیت بالایی برخوردار است، مثلاً در برنامه‌های تجارت الکترونیک، از Cloud Firestore استفاده کنید.
عملکرد بالا در زمان آماده به کار.
  • عملکرد آپتایم معمول ۹۹.۹۵٪.

مقیاس‌پذیری

Cloud Firestore [ ترجیح داده شده] Realtime Database
مقیاس‌بندی خودکار است.
  • کاملاً خودکار مقیاس‌بندی می‌شود. محدودیت‌های مقیاس‌بندی حدود ۱ میلیون اتصال همزمان و ۱۰۰۰۰ نوشتن در ثانیه است. ما قصد داریم این محدودیت‌ها را در آینده افزایش دهیم.
  • محدودیت‌هایی در نرخ نوشتن برای اسناد یا فهرست‌های فردی دارد.
مقیاس‌پذیری نیاز به شاردینگ دارد.
  • مقیاس‌پذیری تا حدود ۲۰۰۰۰۰ اتصال همزمان و ۱۰۰۰ نوشتن در ثانیه در یک پایگاه داده واحد. مقیاس‌پذیری فراتر از آن مستلزم تقسیم‌بندی داده‌ها در چندین پایگاه داده است.
  • هیچ محدودیت محلی در نرخ نوشتن روی داده‌های منفرد وجود ندارد.

امنیت

Cloud Firestore [ ترجیح داده شده] Realtime Database
قوانین غیر آبشاری که مجوزدهی و اعتبارسنجی را با هم ترکیب می‌کنند.
  • خواندن و نوشتن از SDK های موبایل که توسط Cloud Firestore Security Rules ایمن شده‌اند.
  • خواندن و نوشتن از SDK های سرور که توسط مدیریت هویت و دسترسی (IAM) ایمن شده اند.
  • قوانین به صورت آبشاری اجرا نمی‌شوند، مگر اینکه از یک کاراکتر جایگزین (wildcard) استفاده کنید.
  • قوانین می‌توانند پرس‌وجوها را محدود کنند: اگر نتایج یک پرس‌وجو حاوی داده‌هایی باشد که کاربر به آنها دسترسی ندارد، کل پرس‌وجو با شکست مواجه می‌شود.
زبان قوانین آبشاری که مجوزدهی و اعتبارسنجی را از هم جدا می‌کند.
  • خواندن و نوشتن از SDK های موبایل که توسط Realtime Database Security Rules ایمن شده‌اند.
  • آبشار قوانین خواندن و نوشتن.
  • شما داده‌ها را جداگانه با استفاده از قانون validate اعتبارسنجی می‌کنید.

قیمت‌گذاری

هر دو راهکار در طرح‌های قیمت‌گذاری Spark و Blaze موجود هستند.

Cloud Firestore [ ترجیح داده شده] Realtime Database
هزینه‌ها عمدتاً برای عملیات انجام شده در پایگاه داده شما (خواندن، نوشتن، حذف) و با نرخ پایین‌تر، پهنای باند و فضای ذخیره‌سازی محاسبه می‌شود.

Cloud Firestore از محدودیت‌های هزینه روزانه برای پروژه‌های App Engine پشتیبانی می‌کند تا مطمئن شود که از هزینه‌هایی که با آنها راحت هستید، فراتر نمی‌روید.

درباره طرح‌های قیمت‌گذاری Cloud Firestore بیشتر بخوانید.

فقط برای پهنای باند و فضای ذخیره‌سازی هزینه دریافت می‌شود، اما با نرخ بالاتر.

درباره طرح‌های قیمت‌گذاری Realtime Database بیشتر بخوانید.

استفاده از Cloud Firestore و Realtime Database

شما می‌توانید از هر دو پایگاه داده در یک برنامه یا پروژه Firebase استفاده کنید. هر دو پایگاه داده NoSQL می‌توانند انواع داده‌های یکسانی را ذخیره کنند و کتابخانه‌های کلاینت به شیوه‌ای مشابه کار می‌کنند. اگر تصمیم دارید از هر دو پایگاه داده در برنامه خود استفاده کنید ، تفاوت‌های ذکر شده در بالا را در نظر داشته باشید.

درباره ویژگی‌های موجود در Realtime Database و Cloud Firestore بیشتر بدانید.

آماده انتخاب یک پایگاه داده هستید؟

امیدوارم این مقایسه به شما در انتخاب یک راهکار پایگاه داده Firebase کمک کرده باشد. اکنون می‌توانید یاد بگیرید که چگونه یک پایگاه داده به پروژه‌های Firebase خود اضافه کنید.