Яка різниця між Cloud Firestore і базою даних Realtime Firebase?


252

Щойно компанія Google випустила Cloud Firestore, свою нову Базу даних для додатків.

Я читав документацію, але не бачу великої різниці між Firestore та Firebase DB.

Основний момент полягає в тому, що Firestore використовує документи та колекції, які дозволяють легко використовувати запити порівняно з Firebase, яка є традиційною базою даних noSQL з базою JSON.

Мені хотілося б дізнатися трохи більше про їхні відмінності чи звичаї, чи замість Firestore замінити Firebase DB?


1
Читання швидше на Firestore,
записи

Відповіді:


380

Тож я написав цілу публікацію в блозі про все це саме питання, і рекомендую переглянути його (або офіційну документацію ) для більш повної відповіді.

Але якщо ви хочете швидкого (-іш) резюме, ось це:

Кращі запити та більш структуровані дані. Хоча база даних в реальному часі - це просто гігантське дерево JSON, Cloud Firestore трохи структурованіший. Усі ваші дані складаються з документів (які в основному є сховищами ключових цінностей) та колекцій (які є колекціями документів). Документи також часто вказують на підколекції, які містять інші документи, які самі можуть містити інші документи тощо.

Ці структуровані дані допомагають вам виходити двома способами. По-перше, всі запити дрібні , це означає, що ви можете подати запит на документ, не захоплюючи всі дані під ним. Це означає, що ви можете зберігати свої дані ієрархічно, таким чином, щоб мати більше сенсу для вас, не турбуючись про збереження вашої бази даних дрібною. По-друге, у вас є більш потужні запити. Наприклад, тепер ви можете здійснювати запит у кількох полях, не створюючи тих "комбінованих" полів, які поєднують (і денормалізують) дані з інших частин вашої бази даних. У деяких випадках Cloud Firestore буде просто виконувати ці запити безпосередньо, а в інших випадках автоматично створюватиме та підтримуватиме ваші індекси.

Розроблений для масштабування - Cloud Firestore зможе масштабуватись краще, ніж база даних в реальному часі. Важливо зауважити, що ваші запити масштабуються до розміру вашого набору результатів, а не вашого набору даних. Таким чином, пошук залишатиметься швидким, незалежно від того, наскільки великим може бути набір даних.

Легше вручну отримувати дані - Як і в базі даних в реальному часі, ви можете налаштувати слухачів у Cloud Firestore для передачі потоку змін у режимі реального часу. Але якщо ви не хочете такої поведінки, а просто хочете простий дзвінок "забирати мої дані", у Cloud Firestore є і це, і він вбудований як основний випадок використання. (Вони набагато краще, ніж onceдзвінки в базі даних в реальному часі)

Підтримка декількох регіонів - це в основному означає більшу надійність, оскільки ваші дані обмінюються одночасно в декількох центрах обробки даних. Але ви все ще маєте чітку послідовність, тобто ви завжди можете зробити запит і бути впевненим, що ви отримуєте останню версію своїх даних.

Інша модель ціноутворення - Хоча база даних Realtime в основному стягується на основі пропускної здатності мережі або мережі, Cloud Firestore в основному стягується залежно від кількості виконуваних операцій . Це буде краще, чи гірше? Це залежить від вашої програми.

Для живлення додатків для новин, покрокової багатокористувацької гри чи щось на зразок вашої власної версії Stack Overflow Cloud Cloudstore, мабуть, буде виглядати досить вигідно з точки зору ціноутворення. Щось подібне до програми групового малювання в режимі реального часу, де ви надсилаєте кілька оновлень секунди для кількох людей, можливо, це буде дорожче, ніж база даних в реальному часі.

Чому ви все ще хочете використовувати базу даних у реальному часі - це зводиться до кількох причин. 1) Це все "це, мабуть, буде дешевше для додатків, які роблять безліч частих оновлень", про що я вже згадував, 2) Це вже давно, і його випробовували тисячі програм, 3) Це краща затримка і коли вам потрібно щось із надійно низькою затримкою для реальної роботи, база даних Realtime може працювати краще.

Для більшості нових програм рекомендуємо переглянути Cloud Firestore. Але якщо у вас є додаток, який вже є в базі даних Realtime, я не рекомендую перемикатися лише заради комутації, якщо у вас немає вагомих причин для цього.

Сподіваюся, що це допомагає!


2
Дякую тобі Тодде! Я бачив повідомлення про оголошення, але не це! Я повністю закоханий у Firestore, на жаль тепер мені потрібно буде переписати всю свою RxJava, оброблену для цього xD.
Франциско Дурдін Гарсія

1
Як вписується Google Cloud Datastore? Наївно, схоже, багато перетинається з Cloud Firestore. @ToddKerpelman
Джон G

2
Він має багато спільного з Cloud Datastore. Найбільша відмінність полягає в інтеграції з Firebase, тому ви маєте доступ до мобільних та веб-SDK разом із рідним офлайн-режимом, а також функціями синхронізації в режимі реального часу. Хмарний сховище даних відмінно підходить для широкомасштабної розробки на сервері, де ви керуєте власним підключенням до свого додатка, як-от запуск власного веб-сайту в App Engine або через Compute / Container Engine.
Тодд Керпельман

2
Що насправді означає "міцна консистенція"? Теорема CAP стверджує, що ви не можете "бути впевнені, що ви отримуєте останню версію своїх даних" у розподіленому та доступному середовищі. Послідовність, доступність, толерантність розділів => вибір 2.
AjahnCharles

1
@ToddKerpelman Будь-який шанс зробити порівняння Cloud Firestore / Cloud Datastore. Ці два здаються жахливо схожими.
TheAddonDepot

63

Ви можете прочитати всю статтю тут: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseщо складається як дерево JSON, але Cloud Firestoreзберігається в документах (що є набором пари ключ-значення) та колекціях (що є колекцією документів).

Більше структурних даних

База даних в реальному часі зберігає дані в дереві JSON, але Cloud Firestore зберігає дані в документах, що дуже схоже на JSON. введіть тут опис зображення

У Cloud FireStore Документи можуть узгоджувати підколекції та вкладені об'єкти (наприклад, "телефон" на малюнку вище), обидва з яких можуть містити примітивні поля, такі як рядки (наприклад, "ім'я", "електронна пошта" тощо тощо) або складні об'єкти, наприклад списки.

Краще запитування

  • У базі даних Realtime ми можемо сортувати або фільтрувати ресурс лише за одним запитом, а не сортувати та фільтрувати за властивістю, тоді як у Cloud CloudStore ви можете ланцюг фільтрів та комбінувати фільтрацію та сортування за властивістю за одним запитом.
  • Якщо ви хочете отримувати дані у порядку зменшення, то Cloud fireStore дуже корисний для вас, але для бази даних Realtime немає можливості запиту. введіть тут опис зображення
  • Ви також можете зв'язати декілька методів "куди", щоб створити більш конкретні запити (логічні І) у Cloud FireStore. введіть тут опис зображення

Масштабованість

Cloud Firestore зможе масштабуватись краще, ніж база даних в реальному часі. Важливо зазначити, що ефективність вашого запиту пропорційна розміру вашого набору результатів, а не набору даних. Таким чином, пошук залишатиметься швидким незалежно від того, наскільки великим може бути набір ваших даних.

Ручне отримання даних

Ми можемо слухати дані в режимі реального часу в Cloud FireStore, як база даних Realtime, але в Cloud FireStore, ми також можемо отримати дані вручну (Якщо ви хочете отримати будь-які дані лише один раз).

Безпека

У базі даних у реальному часі нам потрібно перевірити дані окремо за допомогою правила перевірки, але в Cloud FireStore перевірка даних відбувається автоматично.

Запис даних

Ми можемо виконати кілька операцій в одній партії і завершити їх атомарному, з будь-якою комбінацією set(), update()або delete()методів. введіть тут опис зображення

Ціноутворення

У базі даних Realtime стягується плата лише за пропускну здатність та зберігання, але з більш високою швидкістю. Перебуваючи в Cloud FireStore, стягується головним чином за операціями, які виконуються у вашій базі даних (читати, записувати, видаляти) та, з меншою швидкістю, пропускною здатністю та зберіганням.


12
Було б непогано посилання на оригінальну статтю: medium.com/@beingrahul/…
Салем Оуердані

1
Чи можете ви пояснити більш детально, що означає "перевірка даних відбувається автоматично"?
SoEzPz

12

Причини вибору Cloud Firestore через базу даних в реальному часі

Це вдосконалена версія

Бази даних Firebase було достатньо для основних програм. Але він не був достатньо потужним для вирішення складних вимог. Саме тому запроваджено Cloud Firestore. Ось кілька основних змін.

  • Вдосконалена основна структура файлів.
  • Офлайн-підтримка веб-клієнта.
  • Підтримує більш розширений запит.
  • Операції запису та транзакцій є атомними.
  • Надійність та підвищення продуктивності
  • Масштабування буде автоматичним.
  • Буде більш безпечним.

Ціноутворення

У Cloud Firestore ставки знизилися, хоча це стягується головним чином за операції, що виконуються у вашій базі даних, а також пропускну здатність та сховище. Ви також можете встановити щоденний ліміт витрат. Ось повна інформація про виставлення рахунків.

Плани на майбутнє Google

Коли вони виявили недоліки в базі даних у режимі реального часу, вони створили інший продукт, а не покращували старий. Незважаючи на те, що в Базі даних у реальному часі немає достовірних деталей, які б розкривали їх поточне становище, саме час почати думати, що від нього, швидше за все, відмовляться.




2

Запропонувати також посилання від Google: База даних у режимі реального часу Firebase проти FireStore

Тут витягнутий невеликий резюме з документів Google google:

БД в реальному часі FireBase - це базована на базі даних JSON NO SQL, призначена для мобільних додатків, регіональних і зазвичай використовується для зберігання та синхронізації даних між користувачами / пристроями в режимі реального часу / вкрай низької затримки.

FireStore є JSON "як" NOSQL DB призначений для високої одночасності, глобальної, легко автоматичної масштабованості, розробленої для будь-яких клієнтів (не тільки мобільних додатків) із типовими випадками використання, такими як відстеження активів, аналітика в режимі реального часу, побудова каталогів роздрібної продукції, соціальний користувач профіль, лідери ігор, додатки на основі чатів тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.