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.
- W obciążeniu
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.
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.
- W naszym przykładzie tabela zdarzeń zawiera 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.