Udostępnij za pomocą


Modelowanie aplikacji transakcyjnych o wysokiej przepływności w usłudze Azure Cosmos DB for PostgreSQL

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:

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_id jest dobrą kolumną do dystrybucji.

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.

Diagram przedstawiający tabele zdarzeń i urządzeń oraz partycje zdarzeń.

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.
  • 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.