Operacje potoków Firestore to główna funkcja Firestore w wersji Enterprise, która jest oparta na nowym mechanizmie zapytań, co znacznie zwiększa zakres możliwych zapytań. Operacje potoku Firestore wykorzystują elastyczną składnię zapytań i odrębną metodę indeksowania, w której indeksy są opcjonalne i nie są tworzone automatycznie, co umożliwia zaawansowane operacje pobierania danych na potrzeby aplikacji.
Funkcje operacji potoku Firestore
Wersja Enterprise Firestore i nowe operacje potokowe korzystają z nowego, zaawansowanego silnika zapytań, który eliminuje wiele dotychczasowych ograniczeń wersji Standard Firestore. Operacje potoków Firestore zapewniają ponad 120 nowych funkcji zapytań. Operacje potoku Firestore mają te możliwości:
Składnia kompozycyjna oparta na etapach
Zapytania potokowe są tworzone przez zdefiniowanie serii kolejnych etapów, które są wykonywane w określonej kolejności. Umożliwia to wykonywanie złożonych operacji, takich jak filtrowanie wyników agregacji, co wcześniej nie było możliwe.
Przykład poniżej pokazuje zapytanie potoku, które znajduje liczbę unikalnych identyfikatorów produktów wyświetlonych w ostatnim miesiącu:
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
Rozszerzone możliwości
Zapytanie Pipelines wprowadza wiele nowych funkcji, w tym:
- Agregacje: obsługa nowych funkcji agregacji (np.
sum(...),min(...)icount_distinct(...)) w połączeniu z dowolnymi polami grupowania. - Zaawansowane filtrowanie: obsługa ponad 120 nowych funkcji do wyrażania dowolnie złożonych instrukcji
where(...), w tymregex_match(...),add(...)istr_contains(...), bez konieczności stosowania indeksów. - Odczyty częściowe / projekcje: pobieraj dynamiczne podzbiory dokumentów za pomocą funkcji
select(...),remove_fields(...)i wielu innych etapów manipulacji dokumentami.
Obsługa w czasie rzeczywistym i offline
Aby korzystać z funkcji czasu rzeczywistego i offline, deweloperzy mogą używać podstawowych operacji Firestore w wersji Enterprise.
Integracja z klientem i narzędziami
Wersja Enterprise zawiera specjalistyczne funkcje do interakcji z zapytaniami dotyczącymi potoku i zarządzania nimi:
- Wyjaśnianie i profilowanie zapytań: możesz używać wyników wyjaśnienia zapytania, aby dowiedzieć się, ile jednostek odczytu lub zapisu zużywa zapytanie, i przeanalizować jego wykonanie.
- Statystyki zapytań: wersja Enterprise obsługuje statystyki zapytań, które pomagają określić, gdzie można utworzyć indeksy, aby zwiększyć wydajność i obniżyć koszty, zapewniając wgląd w charakterystykę wydajności zapytań.
- Nowe typy indeksów: możesz tworzyć specjalistyczne indeksy dla wersji Enterprise, w tym indeksy rzadkie. Umożliwia też tworzenie i edytowanie indeksów wyszukiwania wektorowego w bazach danych Enterprise.
Różnice między Firestore w wersji Standard i Firestore w wersji Enterprise
Główna różnica operacyjna między operacjami podstawowymi a operacjami potokowymi polega na zarządzaniu indeksowaniem, które ma bezpośredni wpływ na wydajność i koszty.
| Firestore Standard – podstawowe operacje | Firestore Enterprise – operacje podstawowe i operacje potokowe | |
| Wymagania dotyczące indeksowania | Indeksy są wymagane w przypadku zapytań.
Indeksy poszczególnych pól są tworzone automatycznie, natomiast bardziej złożone zapytania korzystają z indeksów złożonych lub indeksów grup kolekcji, które należy skonfigurować ręcznie. |
Indeksy nie są wymagane, dlatego w przypadku zapytań są opcjonalne.
Indeksy definiujesz w miarę potrzeb. Wersja Enterprise obsługuje też szerszy zakres typów indeksów, w tym indeksy niepełne/pełne i indeksy unikalne. |
| Ryzyko związane z wydajnością | Zapytania indeksowane: wydajność i koszt zależą od rozmiaru zbioru wyników. |
Zapytania bez indeksu: wydajność i koszty zależą od rozmiaru zbioru danych. Zapytania indeksowane: wydajność i koszt zależą od rozmiaru zbioru wyników. Zalecamy korzystanie z narzędzi Wyjaśnienie zapytania i Statystyki zapytań, aby tworzyć indeksy oraz zwiększać wydajność i obniżać koszty zapytań. |
| Wpływ na koszt przechowywania | Indeksy automatyczne i złożone powodują dodatkowe obciążenie związane z przechowywaniem danych. | Oszczędzasz na kosztach przechowywania, ponieważ indeksy nie są automatycznie tworzone dla każdego pola. |
| Baza kosztów | Opłata jest naliczana za każdą operację odczytu, zapisu i usuwania dokumentu. | Opłaty są naliczane za jednostkę odczytu (w transzach po 4 KB) i jednostkę zapisu (w transzach po 1 KB). Zapisywanie wpisów indeksu zużywa jednostki zapisu.
Poznaj nowe ceny na podstawie przykładów. |
| Reguły zabezpieczeń | Reguły zabezpieczeń chronią kolekcje, weryfikując uprawnienia do odczytu i zapisu. | Reguły zabezpieczeń chronią kolekcje, weryfikując uprawnienia do odczytu i zapisu. Dowiedz się, jak modelować dane, aby obsługiwać zapytania potokowe, w przewodniku Model danych. |