Na tej stronie opisujemy różne interfejsy dostępne do uzyskiwania dostępu do danych w bazie danych w trybie natywnym.
Interfejsy operacji
Tryb natywny obsługuje 2 interfejsy dostępu do danych:
Operacje w potokach
Nowszy interfejs zapytań w Cloud Firestore. Operacje w potokach obsługują składnię opartą na etapach. Operację tworzysz, definiując serię kolejnych etapów, które są wykonywane w określonej kolejności. Umożliwia to wykonywanie złożonych operacji, takich jak filtrowanie według wyniku agregacji, co wcześniej nie było możliwe w oryginalnym interfejsie (operacje podstawowe).
Operacje w potokach są dostępne tylko w wersji Firestore Enterprise i są w fazie wersji zapoznawczej.
Operacje podstawowe
Operacje podstawowe to oryginalny interfejs Cloud Firestore.
Operacje podstawowe używają składni łańcuchowej (.where(), .orderBy(), .get()) w odniesieniach do dokumentów lub kolekcji w celu pobierania dokumentów.
Kolejność etapów zapytania jest domyślna, a obsługa agregacji jest ograniczona.
Operacje podstawowe są dostępne w wersjach Enterprise i Standard, ale domyślne ustawienia indeksów różnią się w zależności od wersji. Więcej informacji znajdziesz w następnej sekcji.
Różnice w interfejsach między wersjami
Wraz z wprowadzeniem obsługi trybu natywnego w wersji Enterprise dostępne są zarówno operacje podstawowe Firestore, jak i operacje w potokach. W przypadku korzystania z operacji podstawowych w wersji Enterprise nowe zachowanie indeksów i model cenowy eliminują wiele ograniczeń wersji Standard.
| Funkcja | Wersja Standard | Wersja Enterprise |
| Obsługiwane operacje | Ograniczone do operacji podstawowych Firestore. | Obsługuje operacje podstawowe Firestore i operacje w potokach oraz operacje zgodności Firestore z MongoDB. |
| Wymagania dotyczące indeksowania | Wszystkie zapytania wymagają indeksów. | Indeksy nie są wymagane w przypadku zapytań. |
| Tworzenie indeksów | W przypadku pojedynczych pól tworzone są indeksy automatyczne. Możesz ręcznie utworzyć indeksy złożone. | Nie są tworzone żadne indeksy automatyczne. Indeksami trzeba zarządzać ręcznie. |
| Pola indeksowane | Jeśli pole __name__ nie jest jeszcze obecne, jest automatycznie dołączane do pól indeksowanych. | Pole __name__ nie jest automatycznie dołączane do pól indeksowanych. Jeśli jest to ważne dla Twojej aplikacji, musisz wyraźnie określić pole __name__ w polach indeksowanych. |
| Normalizacja kolejności sortowania | Klauzula order by zapytania jest normalizowana przez dołączenie na końcu pól nierówności i pola __name__ (jeśli nie są jeszcze obecne). Gwarantuje to unikalne, deterministyczne uporządkowanie wyników niezależnie od tego, jakie inne pola znajdują się w klauzuli order by. | Brak normalizacji kolejności sortowania. Kolejność sortowania, np. sort a ASC, gwarantuje tylko, że wyniki są posortowane według pola a. Cloud Firestore użyje Twoich dotychczasowych indeksów, aby zwrócić wyniki w najbardziej efektywny sposób. Jeśli więc pole a nie jest unikalne w zbiorze wyników, kolejność wyników może się różnić w zależności od konfiguracji indeksu, strategii wykonywania itp. Aby zagwarantować unikalne, deterministyczne uporządkowanie wyników, musisz dodać do kolejności sortowania unikalne pole, np. __name__. |
| Skuteczność i koszt zapytań | Zapytania są na ogół skuteczne ze względu na wymagania dotyczące indeksów. | Optymalizuj skuteczność i koszty zapytań, tworząc indeksy. Brakujące indeksy możesz zidentyfikować za pomocą narzędzi Query Explain i Statystyki zapytań.
Zapytania bez indeksów mogą być nieskuteczne i kosztowne w miarę powiększania się zbioru danych, co wymaga monitorowania i dostrajania. |
| Koszt narzutu indeksowania | Nie pobieramy opłat za zapisy indeksów, ponieważ indeksy są automatyczne. | Zapisywanie wpisów indeksu zużywa jednostki zapisu podczas zapisywania powiązanego dokumentu (1 jednostka zapisu na 1 KiB rozmiaru wpisu indeksu). Dzięki temu, że nie tworzysz wpisów indeksu dla każdego pola, oszczędzasz na kosztach miejsca na dane. |
| Model płatności (odczyty, zapisy, usuwanie) | Opłaty są naliczane za odczyt, zapis i usunięcie dokumentu. | Opłaty są naliczane za odczyt i zapis (transza). Odczyty są rozliczane w jednostkach odczytu (transze po 4 KiB). Zapisy i usuwanie są łączone w jednostki zapisu (transze po 1 KiB). |
| Ceny podstawowe (za milion)
Podane ceny dotyczą regionu us-central1 |
Odczyty: 0,03 USD za 100 tys. dokumentów (lub 0,30 USD za milion).
Zapisy: 0,09 USD za 100 tys. dokumentów (lub 0,90 USD za milion). Usuwanie: 0,01 USD za 100 tys. dokumentów (lub 0,10 USD za milion) |
Jednostki odczytu: 0,05 USD za 1 mln jednostek odczytu.
Jednostki zapisu: 0,26 USD za 1 mln jednostek zapisu. Ceny są na ogół niższe, jeśli dokumenty mają mniej niż 4 KiB w porównaniu z kosztem odczytu w wersji Standard. |
| Aktualizacje w czasie rzeczywistym
Podane ceny dotyczą regionu us-central1 |
Aktualizacje w czasie rzeczywistym są wliczone w cenę i rozliczane jako odczyty w cenie 0,03 USD za 100 tys.dokumentów. | Aktualizacje w czasie rzeczywistym mają nowy, osobny kod SKU (jednostki aktualizacji w czasie rzeczywistym), za który opłaty są naliczane za transzę 4 KiB. Aktualizacje w czasie rzeczywistym kosztują 0,30 USD za milion jednostek odczytu. |