Gwarancje dostarczania zdarzeń (Azure Stream Analytics)

Język zapytań usługi Azure Stream Analytics rozszerza składnię SQL, aby umożliwić złożone obliczenia na strumieniach zdarzeń. W usłudze Stream Analytics istnieją pewne pojęcia związane z dostarczaniem zdarzeń, które warto omówić:

  • Dokładnie jednokrotne przetwarzanie
  • Dokładnie raz dostawy
  • Zduplikowane rekordy

Oprócz tych pojęć opisanych poniżej należy wziąć pod uwagę opcję rozpoczęcia zadania , aby upewnić się, że nie może wystąpić żadna utrata danych.

Dokładnie jednokrotne przetwarzanie

Dokładnie raz gwarancja przetwarzania oznacza, że w przypadku zestawu danych wejściowych system zawsze zwraca te same wyniki. Jest to bardzo ważne w przypadku powtarzalności i ma zastosowanie nawet w przypadku ponownego uruchomienia zadania lub w wielu zadaniach uruchomionych równolegle na tych samych danych wejściowych. Usługa Azure Stream Analytics gwarantuje dokładnie jednokrotne przetwarzanie.

Dokładnie jednokrotne dostarczanie

Gwarancja dostarczania dokładnie raz oznacza, że wszystkie dane wyjściowe z dokładnie raz przetwarzania są dostarczane do ujścia wyjściowego dokładnie raz, więc nie ma zduplikowanych danych wyjściowych. Wymaga to osiągnięcia możliwości transakcyjnych na adapterze wyjściowym.

Usługa Azure Stream Analytics gwarantuje co najmniej jednokrotne dostarczanie do ujściów danych wyjściowych, co gwarantuje, że wszystkie wyniki są zwracane, ale mogą wystąpić zduplikowane wyniki. Jednak dokładnie raz można osiągnąć dostarczanie przy użyciu kilku danych wyjściowych, takich jak Azure Cosmos DB lub Azure SQL.

Zduplikowane rekordy

Ze względu na co najmniej raz gwarancję dostarczania, gdy zadanie usługi Stream Analytics jest uruchomione, zduplikowane rekordy mogą być od czasu do czasu widoczne w danych wyjściowych. Te zduplikowane rekordy są oczekiwane, ponieważ karty wyjściowe usługi Azure Stream Analytics nie zapisują zdarzeń wyjściowych transakcyjnie. Ten scenariusz "zduplikowany rekord" może spowodować, że wystąpi jeden z następujących warunków:

  • Wystąpienie platformy Azure jest uaktualniane podczas uruchamiania zadania
  • Zadanie usługi Stream Analytics zostało uaktualnione lub występuje problem z łącznością lub niezawodnością danych wyjściowych zadania
  • Wystąpienie platformy Azure, w którym uruchomiono zadanie, ma awarię
  • Zadanie usługi Stream Analytics jest uruchamiane z opcją ostatniego zatrzymania

Odbiorca podrzędnych zdarzeń wyjściowych musi deduplikować zdarzenia przy użyciu tożsamości logicznej zdarzeń. Jeśli na przykład agregujesz zdarzenia według grup w oknie wirowania, logiczną tożsamością zdarzenia są grupy i czas zakończenia okna wirowania. Jeśli uruchamiasz zapytanie przekazywane, może być konieczne przeprowadzenie unikatowego identyfikatora zdarzenia w celu deduplikacji.

Dane wyjściowe obsługujące dokładnie jednokrotne dostarczanie za pomocą usługi Azure Stream Analytics

Azure Cosmos DB

Przy użyciu usługi Azure Cosmos DB usługa Azure Stream Analytics gwarantuje dokładnie jednokrotne dostarczanie. Ponieważ usługa Azure Stream Analytics używa rozszerzenia upsert, użytkownik nie potrzebuje żadnej akcji. Zobacz więcej informacji na temat danych wyjściowych usługi Azure Stream Analytics do usługi Azure Cosmos DB.

SQL

W przypadku korzystania z danych wyjściowych SQL użytkownicy mogą osiągnąć dokładnie jednokrotne dostarczanie, jeśli spełnione są następujące wymagania:

  • wszystkie zdarzenia przesyłania strumieniowego danych wyjściowych mają klucz naturalny, tj. są jednoznacznie rozpoznawalne przez pole lub kombinację pól.
  • w wyjściowej tabeli SQL istnieje unikatowe ograniczenie (lub klucz podstawowy) utworzone przy użyciu klucza naturalnego zdarzeń wyjściowych.

Jest to wystarczające, aby uniknąć duplikatów, ponieważ dane wyjściowe SQL przestrzegają wszelkich ograniczeń umieszczonych w tabeli, pomijając wszystkie zdarzenia, które powodują naruszenie unikatowego ograniczenia.

Tabela platformy Azure

Wszystkie jednostki w tabeli usługi Azure Storage są jednoznacznie identyfikowane przez łączenie RowKey pól i PartitionKey . Jednostki upserts usługi Azure Stream Analytics, więc wartość jednostki tabeli będzie najnowszym zdarzeniem wyjściowym z odpowiednią RowKey/PartitionKey kombinacją. W związku z tym, aby osiągnąć dokładnie jednokrotne dostarczanie, upewnij się, że każde zdarzenie wyjściowe ma unikatową RowKey/PartitionKey kombinację. W takim przypadku zduplikowane zdarzenia zastąpią wcześniejsze wersje. (Pole zdefiniowane przez Timestamp system, czyli czas ostatniej modyfikacji jednostki, nadal zmieni się w tym przypadku).

Zobacz też

Zarządzanie czasem