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.
Wspólny filtr jako klucz fragmentu
Aby wybrać klucz shard dla aplikacji transakcyjnej o dużej wydajności, postępuj zgodnie z następującymi wytycznymi:
- Wybierz kolumnę używaną do wyszukiwania punktów i znajduje się w większości operacji tworzenia, odczytu, aktualizacji i usuwania.
- Wybierz kolumnę, która jest naturalnym wymiarem danych lub centralnym elementem aplikacji. Na przykład:
- W obciążeniu IOT,
device_idjest dobrą kolumną do dystrybucji.
- W obciążeniu IOT,
Wybór dobrego klucza fragmentu ułatwia optymalizowanie przechodzenia w sieci przy jednoczesnym wykorzystaniu pamięci i zasobów obliczeniowych w celu osiągnięcia milisekundowego opóźnienia.
Optymalny model danych dla aplikacji o wysokiej przepływności
Poniżej przedstawiono przykładowy model danych dla aplikacji IoT, która przechwytuje dane telemetryczne (dane szeregów czasowych) z urządzeń. Istnieją dwie tabele do przechwytywania danych telemetrycznych: devices i events. Mogą istnieć inne tabele, ale nie zostały one omówione w tym przykładzie.
Podczas tworzenia aplikacji o wysokiej przepływności należy pamiętać o pewnej optymalizacji.
- Dystrybuuj duże tabele na wspólnej kolumnie, która jest centralnym elementem aplikacji, oraz na kolumnie, po którą aplikacja wykonuje głównie zapytania. W powyższym przykładzie aplikacji IOT, kolumna
device_idłączy tabele zdarzeń i urządzeń. - Pozostałe małe tabele mogą być tabelami referencyjnymi.
- Ponieważ aplikacje IOT mają wymiar czasu, dokonaj podziału tabel rozproszonych na podstawie czasu. Do tworzenia i obsługi partycji można używać natywnych funkcji szeregów czasowych usługi Azure Cosmos DB for PostgreSQL.
- Partycjonowanie pomaga efektywnie filtrować dane dla zapytań przy użyciu filtrów czasu.
- Wygasanie starych danych jest również szybkie przy użyciu polecenia DROP vs DELETE.
- Tabela zdarzeń w naszym przykładzie jest partycjonowana według miesiąca.
- Użyj typu danych JSONB do przechowywania częściowo ustrukturyzowanych danych. Dane telemetryczne urządzenia zwykle nie mają struktury, a każde urządzenie ma własne metryki.
- W naszym przykładzie tabela zdarzeń ma kolumnę
detail, która jest typu JSONB.
- W naszym przykładzie tabela zdarzeń ma kolumnę
- Jeśli aplikacja IoT wymaga funkcji geoprzestrzennych, możesz użyć rozszerzenia PostGIS, które usługa Azure Cosmos DB for PostgreSQL obsługuje natywnie.
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.