Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Usługa Azure Cosmos DB for PostgreSQL nie jest już obsługiwana w przypadku nowych projektów. Nie używaj tej usługi dla nowych projektów. Zamiast tego użyj jednej z tych dwóch usług:
Użyj usługi Azure Cosmos DB for NoSQL dla rozproszonego rozwiązania bazy danych przeznaczonego dla scenariuszy o dużej skali z umową dotyczącą poziomu usług dostępności 99,999% (SLA), natychmiastowym skalowaniem automatycznym i automatycznym przejściem w tryb failover w wielu regionach.
Użyj funkcji Elastic Clusters usługi Azure Database for PostgreSQL na potrzeby fragmentowanej bazy danych PostgreSQL przy użyciu rozszerzenia Citus typu open source.
Lokuj duże tabele razem z kluczem shardowania
Aby wybrać klucz fragmentu dla aplikacji analizy operacyjnej w czasie rzeczywistym, postępuj zgodnie z następującymi wytycznymi:
- Wybierz kolumnę wspólną dla dużych tabel
- Wybierz kolumnę, która jest naturalnym wymiarem danych lub centralnym elementem aplikacji. Kilka przykładów:
- W świecie finansowym aplikacja, która analizuje trendy dotyczące bezpieczeństwa, prawdopodobnie będzie używać
security_id. - W obciążeniu analizy użytkowników, w którym chcesz analizować metryki użycia witryny internetowej,
user_idbyłaby to dobra kolumna dystrybucji
- W świecie finansowym aplikacja, która analizuje trendy dotyczące bezpieczeństwa, prawdopodobnie będzie używać
Kolokując duże tabele, można przekazywać zapytania SQL do węzłów roboczych równolegle. Wypychanie zapytań pozwala uniknąć mieszania danych między węzłami za pośrednictwem sieci. Operacje, takie jak połączenia (JOIN), agregacje, zestawienia, filtry i limity (LIMIT), można efektywnie wykonywać.
Aby wizualizować równoległe zapytania rozproszone w tabelach kolokowanych, rozważmy następujący diagram:
Tabele users i events są podzielone na fragmenty według user_id, więc powiązane wiersze dla tego samego identyfikatora użytkownika są umieszczane razem w tym samym węźle roboczym. Łączenia SQL mogą być wykonywane bez przesyłania informacji między węzłami roboczymi.
Optymalny model danych dla aplikacji w czasie rzeczywistym
Kontynuujmy pracę z przykładem aplikacji, która analizuje wizyty i metryki witryny internetowej użytkownika. Istnieją dwie tabele "faktów" — użytkownicy i zdarzenia — i inne mniejsze tabele "wymiarów".
Aby zastosować super moc tabel rozproszonych w usłudze Azure Cosmos DB for PostgreSQL, wykonaj następujące kroki:
- Dystrybuuj duże tabele faktów w wspólnej kolumnie. W naszym przypadku użytkownicy i zdarzenia są rozmieszczone na
user_id. - Oznacz tabele małe/wymiarowe (
device_types,countriesoraz "event_types") jako tabele referencyjne. - Pamiętaj, aby uwzględnić kolumnę dystrybucji w podstawowych, unikatowych i obcych ograniczeniach dotyczących tabel rozproszonych. Dołączenie kolumny może wymagać wprowadzania kluczy złożonych. Należy zaktualizować klucze dla tabel referencyjnych.
- Podczas dołączania dużych tabel rozproszonych pamiętaj o połączeniu przy użyciu klucza fragmentu.
-- Distribute the fact tables
SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');
-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node
SELECT create_reference_table('countries');
-- similarly for device_types and event_types...
Następne kroki
Teraz zakończyliśmy eksplorowanie modelowania danych dla skalowalnych aplikacji. Następnym krokiem jest nawiązanie połączenia z bazą danych i wykonywanie zapytań względem bazy danych przy użyciu wybranego języka programowania.