Udostępnij za pośrednictwem


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

DOTYCZY: Usługa Azure Cosmos DB for PostgreSQL (obsługiwana przez rozszerzenie bazy danych Citus do bazy danych PostgreSQL)

Wspólny filtr jako klucz fragmentu

Aby wybrać klucz fragmentu dla aplikacji transakcyjnej o wysokiej przepływnoś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 device_id IOT jest dobrą kolumną dystrybucji.

Wybór dobrego klucza fragmentu ułatwia optymalizowanie przeskoków sieciowych przy jednoczesnym wykorzystaniu pamięci i obliczeń w celu osiągnięcia opóźnienia w milisekundach.

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 kolumną, którą aplikacja wykonuje głównie zapytania. W powyższym przykładzie aplikacji device_id IOT kolumna ta i współlokuje tabele zdarzeń i urządzeń.
  • Pozostałe małe tabele mogą być tabelami odwołań.
  • Ponieważ aplikacje IOT mają wymiar czasu, podziel tabele rozproszone na partycje 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ń zawiera kolumnę detail 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.