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 potoku
Nowszy interfejs zapytań dla Cloud Firestore. Operacje potoku obsługują składnię opartą na etapach. Operację tworzy się przez zdefiniowanie serii kolejnych etapów, które są wykonywane w określonej kolejności. Umożliwia to złożone operacje, takie jak filtrowanie wyników agregacji, które nie były wcześniej możliwe w oryginalnym interfejsie (operacje podstawowe).
Operacje potokowe są dostępne tylko w wersji Firestore Enterprise i znajdują się w fazie podglądu.
Główne operacje
Główne operacje to oryginalny interfejs Cloud Firestore.
Operacje podstawowe używają składni łańcuchowej metod (.where(), .orderBy(), .get()) w odniesieniu do dokumentów lub kolekcji, aby pobierać dokumenty.
Kolejność etapów zapytania jest domyślna, a obsługa agregacji jest ograniczona.
Podstawowe operacje są dostępne w wersjach Enterprise i Standard, ale domyślne indeksy różnią się w zależności od wersji. Więcej informacji znajdziesz w następnej sekcji.
Różnice w interfejsie 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 dla firm nowe działanie indeksu i model cenowy usuwają wiele ograniczeń wersji standardowej.
| Funkcja | Wersja standardowa | Wersja Enterprise |
| Obsługiwane operacje | Ograniczone do operacji podstawowych Firestore. | Obsługuje operacje Firestore Core i Pipeline oraz operacje zgodności Firestore z MongoDB. |
| Wymagania dotyczące indeksowania | Wszystkie zapytania wymagają indeksów. | Indeksy nie są wymagane w przypadku zapytań. |
| Tworzenie indeksu | Indeksy automatyczne są tworzone dla pojedynczych pól. Indeksy złożone możesz tworzyć ręcznie. | Nie są tworzone żadne automatyczne indeksy. Indeksami trzeba zarządzać ręcznie. |
| Zindeksowane pola | Jeśli nie ma jeszcze pola __name__, jest ono automatycznie dodawane do zindeksowanych pól. | Do indeksowanych pól __name__ nie jest dodawana automatycznie. Jeśli jest to ważne dla Twojej aplikacji, musisz wyraźnie określić __name__ w indeksowanych polach. |
| Normalizacja kolejności sortowania | Klauzula order by zapytania jest normalizowana przez dodanie 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ą sortowane według pola a. Cloud Firestore będzie używać dotychczasowych indeksów, aby zwracać wyniki w jak najbardziej efektywnej kolejności. Jeśli więc wartość a nie jest unikalna w zbiorze wyników, kolejność wyników może się różnić w zależności od zapytania, konfiguracji indeksu, strategii wykonywania itp. Aby zagwarantować unikalną, deterministyczną kolejność wyników, musisz dodać do kolejności sortowania unikalne pole, np. __name__. |
| Skuteczność i koszt zapytań | Zapytania są zwykle wydajne ze względu na wymagania dotyczące indeksu. | Optymalizuj wydajność zapytań i koszty, tworząc indeksy. Brakujące indeksy możesz zidentyfikować za pomocą funkcji Wyjaśnienie zapytania i Statystyki zapytań.
Zapytania bez indeksów mogą być niewydajne i kosztowne w miarę powiększania się zbioru danych, co wymaga monitorowania i dostrajania. |
| Koszt indeksowania | Nie pobieramy opłat za zapisywanie indeksów, ponieważ są one automatyczne. | Zapisywanie wpisów indeksu zużywa jednostki zapisu, gdy zapisywany jest powiązany dokument (1 jednostka zapisu na 1 KiB rozmiaru wpisu indeksu). Oszczędzasz na kosztach pamięci, ponieważ nie tworzysz wpisów indeksu dla każdego pola. |
| Model płatności (odczyty/zapisy/usunięcia) | Opłata jest naliczana za każdy odczyt, zapis i usunięcie dokumentu. | Opłata jest naliczana za odczyt i zapis (transzę). Odczyty są rozliczane w jednostkach odczytu (4 KiB). Zapisy i usunięcia są łączone w jednostki zapisu (w porcjach po 1 KiB). |
| Cena podstawowa (za milion)
Ceny są podane dla regionu us-central1. |
Odczyty: 0,03 USD za 100 000 dokumentów (czyli 0,30 USD za milion).
Zapisywanie: 0,09 USD za 100 000 dokumentów (lub 0,90 USD za milion). Usuwanie: 0,01 USD za 100 000 dokumentów (lub 0,10 USD za milion) |
Jednostki odczytu: 0,05 USD za milion jednostek odczytu.
Jednostki zapisu: 0,26 USD za 1 mln jednostek zapisu. Ceny są zwykle niższe, jeśli dokumenty mają mniej niż 4 KiB, w porównaniu z kosztem standardowego odczytu. |
| Aktualizacje w czasie rzeczywistym
Ceny są podane dla regionu us-central1. |
Aktualizacje w czasie rzeczywistym są wliczane do odczytów i rozliczane w cenie 0,03 USD za 100 tys.dokumentów. | Aktualizacje w czasie rzeczywistym mają nowy, oddzielny SKU (jednostki aktualizacji w czasie rzeczywistym), za który opłata jest naliczana za każde 4 KiB. Aktualizacje w czasie rzeczywistym kosztują 0,30 USD za milion jednostek odczytu. |