Тож я написав цілу публікацію в блозі про все це саме питання, і рекомендую переглянути його (або офіційну документацію ) для більш повної відповіді.
Але якщо ви хочете швидкого (-іш) резюме, ось це:
Кращі запити та більш структуровані дані. Хоча база даних в реальному часі - це просто гігантське дерево 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, я не рекомендую перемикатися лише заради комутації, якщо у вас немає вагомих причин для цього.
Сподіваюся, що це допомагає!