Udostępnij za pośrednictwem


Korzystanie z baz danych obserwowanych

Funkcja follower database umożliwia dołączenie bazy danych znajdującej się w innym klastrze do klastra Azure Data Explorer. Baza danych podrzędna jest dołączona w trybie tylko do odczytu, umożliwiając wyświetlanie danych i uruchamianie zapytań dotyczących danych wprowadzonych do bazy danych lidera. Baza danych podrzędnych synchronizuje się ze zmianami w bazach danych liderów. Ze względu na synchronizację, opóźnienie w dostępności danych wynosi od kilku sekund do kilku minut. Długość opóźnienia zależy od ogólnego rozmiaru metadanych bazy danych lidera. Baza danych lidera i obserwującego używa tego samego konta magazynowego, aby pobrać dane. Baza danych lidera jest właścicielem pamięci. Baza danych śledząca wyświetla dane bez konieczności ich wczytywania. Ponieważ dołączona baza danych jest bazą danych tylko do odczytu, nie można modyfikować danych, tabel i zasad w bazie danych z wyjątkiem zasad buforowania, podmiotów zabezpieczeń i uprawnień. Nie można usunąć dołączonych baz danych. Lider lub podążający musi odłączyć bazy danych przed ich usunięciem.

Dołączanie bazy danych do innego klastra przy użyciu możliwości podążania służy jako infrastruktura do udostępniania danych między organizacjami i zespołami. Funkcja jest przydatna do segregowania zasobów obliczeniowych w celu ochrony środowiska produkcyjnego przed przypadkami użycia nieprodukcyjnymi. Za pomocą narzędzia follower można również skojarzyć koszt klastra Azure Data Explorer z partią, która uruchamia zapytania dotyczące danych.

Uwaga

Przykłady kodu oparte na poprzednich wersjach zestawu SDK można znaleźć w zarchiwizowanym artykule.

Które bazy danych są obserwowane?

W przypadku klastrów mają zastosowanie następujące elementy:

  • Klaster może podążać za jedną bazą danych, kilkoma bazami danych lub wszystkimi bazami danych klastra lidera.
  • Pojedynczy klaster może podążać za bazami danych z wielu klastrów liderów.
  • Klaster może zawierać zarówno bazy danych obserwowanych, jak i wiodące bazy danych.

Wymagania wstępne

Dołączanie bazy danych

Istnieją różne metody, których można użyć do dołączania bazy danych. W tym artykule omówiono dołączanie bazy danych przy użyciu języka C#, Python, programu PowerShell lub szablonu Azure Resource Manager. Aby dołączyć bazę danych, musisz mieć użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną z co najmniej rolą współautora w klastrze wiodącym i klastrze podrzędnym. Dodaj lub usuń przypisania ról przy użyciu Azure portal, PowerShell, Azure CLI i szablonu ARM. Dowiedz się więcej o kontroli dostępu opartej na rolach Azure (Azure RBAC) oraz różnych rolach.

Uwaga

Wstępne utworzenie bazy danych obserwujących nie jest konieczne, ponieważ jest ona tworzona podczas procesu dołączania.

Udostępnianie na poziomie tabeli

Przy dołączaniu baz danych, dołączane są również wszystkie tabele, tabele zewnętrzne i zmaterializowane widoki. Określone tabele/tabele zewnętrzne/zmaterializowane widoki można udostępniać, konfigurując właściwość "TableLevelSharingProperties".

Element „TableLevelSharingProperties” zawiera osiem tablic ciągów: , tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, i functionsToInclude. functionsToExclude Maksymalna liczba wpisów we wszystkich tablicach wynosi 100.

Uwaga

  • Udostępnianie na poziomie tabeli nie jest obsługiwane w przypadku używania notacji '*' dla wszystkich baz danych.
  • W przypadku uwzględnienia zmaterializowanych widoków, również ich tabele źródłowe są uwzględniane.

Przykłady

Poniższy przykład zawiera wszystkie tabele. Domyślnie wszystkie tabele są śledzone bez użycia notacji "*".

tablesToInclude = []

Poniższy przykład obejmuje wszystkie funkcje. Domyślnie wszystkie funkcje są stosowane bez użycia notacji "*".

functionsToInclude = []

Poniższy przykład obejmuje wszystkie tabele, których nazwy rozpoczynają się od "Logs".

tablesToInclude = ["Logs*"]

Poniższy przykład obejmuje wszystkie tabele zewnętrzne:

externalTablesToExclude = ["*"]

Poniższy przykład obejmuje wszystkie zmaterializowane widoki:

materializedViewsToExclude=["*"]

Nadpisanie nazwy bazy danych

Możesz opcjonalnie ustawić nazwę bazy danych w klastrze obserwowanym inaczej niż w klastrze lidera. Możesz na przykład dołączyć tę samą nazwę bazy danych z wielu klastrów liderów do klastra obserwowanego. Aby określić inną nazwę bazy danych, skonfiguruj właściwość "DatabaseNameOverride" lub "DatabaseNamePrefix".

Dołączanie bazy danych przy użyciu języka C#

Wymagane pakiety NuGet

Przykład w języku C#

var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "leaderResourceGroup", clusterName: "leader");
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration";

var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var followerCluster = resourceManagementClient.GetKustoClusterResource(followerClusterId);
var attachedDatabaseConfigurations = followerCluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
    ClusterResourceId = leaderClusterId,
    DatabaseName = "<databaseName>", // Can be a specific database name in a leader cluster or * for all databases
    DefaultPrincipalsModificationKind = KustoDatabaseDefaultPrincipalsModificationKind.Union,
    Location = AzureLocation.NorthCentralUS
};

// Table level sharing properties are not supported when using '*' all databases notation.
if (attachedDatabaseConfigurationData.DatabaseName != "*")
{
    // Set up the table level sharing properties - the following is just an example.
    attachedDatabaseConfigurationData.TableLevelSharingProperties = new KustoDatabaseTableLevelSharingProperties();
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToInclude.Add("table1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToExclude.Add("table2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToExclude.Add("exTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToInclude.Add("exTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToInclude.Add("matTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToExclude.Add("matTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToInclude.Add("func1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToExclude.Add("func2");
}

await attachedDatabaseConfigurations.CreateOrUpdateAsync(WaitUntil.Completed, attachedDatabaseConfigurationName, attachedDatabaseConfigurationData);

Sprawdź, czy baza danych została pomyślnie dołączona

Aby sprawdzić, czy baza danych została pomyślnie dołączona, znajdź dołączone bazy danych w portalu Azure. Możesz sprawdzić, czy bazy danych zostały pomyślnie dołączone w klastrze obserwujących lub lidera.

Sprawdź klaster obserwujących

  1. Przejdź do klastra podrzędnego i wybierz pozycję Bazy danych.

  2. Na liście baz danych wyszukaj nowe bazy danych tylko do odczytu.

    Zrzut ekranu przedstawiający bazy danych obserwowanych tylko do odczytu w portalu.

    Tę listę można również wyświetlić na stronie przeglądu bazy danych:

    Zrzut ekranu przedstawiający stronę przeglądu baz danych z listą klastrów obserwowanych.

Sprawdzanie klastra liderów

  1. Przejdź do klastra lidera i wybierz pozycję Bazy danych

  2. Sprawdź, czy odpowiednie bazy danych są oznaczone jako UDOSTĘPNIONE INNYM>Tak

  3. Przełącz link relacji, aby wyświetlić szczegóły.

    Zrzut ekranu przedstawiający bazy danych udostępnione innym osobom w celu sprawdzenia klastra lidera.

    Można to również wyświetlić na stronie przeglądu bazy danych:

    Zrzut ekranu przedstawiający przegląd z listą baz danych udostępnionych innym osobom.

Odłącz bazę danych podrzędną

Uwaga

Aby odłączyć bazę danych od strony obserwowanej lub lidera, musisz posiadać użytkownika, grupę, głównego użytkownika usługi lub tożsamość zarządzaną z co najmniej rolą współpracownika w klastrze, z którego odłączasz bazę danych. W poniższym przykładzie używamy jednostki usługi.

Odłącz dołączoną bazę danych obserwowanych z klastra obserwowanego przy użyciu języka C#**

Klaster obserwowania może odłączyć dowolną dołączoną bazę danych obserwowanych w następujący sposób:

var attachedDatabaseConfigurationId = KustoAttachedDatabaseConfigurationResource.CreateResourceIdentifier(
    subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "follower",
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration");
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var attachedDatabaseConfiguration = resourceManagementClient.GetKustoAttachedDatabaseConfigurationResource(attachedDatabaseConfigurationId);
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);

Odłącz przyłączoną bazę danych follower od klastra lidera za pomocą języka C#

Klaster liderów może odłączyć dowolną dołączoną bazę danych w następujący sposób:

var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "leader");
var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var followerDatabaseDefinition = new KustoFollowerDatabaseDefinition(
    clusterResourceId: followerClusterId,
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration"
);
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var leaderCluster = resourceManagementClient.GetKustoClusterResource(leaderClusterId);
await leaderCluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);

Zarządzanie podmiotami, uprawnieniami i polityką buforowania

Zarządzanie podmiotami głównymi

Podczas dołączania bazy danych określ "domyślny rodzaj modyfikacji podmiotów". Wartością domyślną jest połączenie przesłonięć autoryzowanych podmiotów zabezpieczeń z kolekcją bazy danych lidera autoryzowanych podmiotów zabezpieczeń

Rodzaj Opis
Unia Dołączone podmioty zabezpieczeń bazy danych zawsze będą zawierać oryginalne podmioty zabezpieczeń bazy danych oraz inne nowe podmioty zabezpieczeń dodane do bazy danych obserwowanej bazy danych.
Zastąp Brak dziedziczenia zasad użytkowników z oryginalnej bazy danych. Dla podłączonej bazy danych trzeba utworzyć nowe zasady.
Brak Dołączone podmioty bazy danych obejmują tylko podmioty oryginalnej bazy danych, bez żadnych innych podmiotów.

Aby uzyskać więcej informacji na temat używania poleceń zarządzania do konfigurowania uprawnionych podmiotów, zobacz Polecenia zarządzania klastrem obserwującym.

Zarządzaj uprawnieniami

Zarządzanie uprawnieniami bazy danych tylko do odczytu jest takie samo jak w przypadku wszystkich typów baz danych. Aby przypisać uprawnienia, zobacz Zarządzanie uprawnieniami bazy danych w portalu Azure lub użyj poleceń zarządzania do Zarządzanie rolami zabezpieczeń bazy danych.

Konfigurowanie zasad buforowania

Administrator bazy danych obserwowanej może zmodyfikować zasady buforowania dołączonej bazy danych lub dowolnej z jej tabel w klastrze hostingu. Ustawieniem domyślnym jest połączenie źródłowej bazy danych w bazie danych klastra wiodącego i zasad buforowania na poziomie tabeli z zasadami zdefiniowanymi w bazie danych i zasadach zastępowania na poziomie tabeli. Możesz na przykład mieć 30-dniowe zasady buforowania w bazie danych lidera do uruchamiania raportowania miesięcznego i trzydniowe zasady buforowania w bazie danych obserwowanych, aby wykonywać zapytania tylko o ostatnie dane na potrzeby rozwiązywania problemów. Aby uzyskać więcej informacji na temat używania poleceń zarządzania w celu konfigurowania zasad buforowania w bazie danych podrzędnej lub tabeli, zobacz Polecenia zarządzania dla klastra podrzędnego.

Uwagi

Przejrzyj następujące uwagi:

  • Jeśli występują konflikty między bazami danych klastrów liderów/obserwujących, gdy wszystkie bazy danych są śledzone przez klaster obserwujący, są one rozwiązywane w następujący sposób:
    • Baza danych o nazwie DB utworzona w klastrze obserwowanym ma pierwszeństwo przed bazą danych o tej samej nazwie, która została utworzona w klastrze liderów. Dlatego baza danych w klastrze podrzędnym musi zostać usunięta lub zmieniona, aby klaster podrzędny mógł uwzględniać bazę danych lidera .
    • Baza danych o nazwie DB, po której następuje co najmniej dwa klastry liderów, zostanie dowolnie wybrana z jednego z klastrów liderów i nie będzie obserwowana więcej niż raz.
  • Polecenia służące do wyświetlania dziennika aktywności i historii klastra uruchomionego w klastrze obserwowanym pokazują aktywność i historię w klastrze obserwowanym, a ich zestawy wyników nie zawierają tych wyników klastra lidera ani klastrów.
    • Na przykład: Polecenie uruchomione .show queries w klastrze podrzędnym pokazuje tylko zapytania uruchomione w bazach danych, które są śledzone przez klaster podrzędny, a nie zapytania uruchomione w tych samych bazach danych w klastrze głównym.

Ograniczenia

Zapoznaj się z następującymi ograniczeniami:

  • Klastry obserwujące i klastry liderów muszą znajdować się w tym samym regionie.
  • Jeśli w bazie danych, która jest śledzona, używane jest pozyskiwanie strumieniowe, klaster śledzący powinien mieć włączoną funkcję pozyskiwania strumieniowego, aby umożliwić śledzenie danych pozyskiwanych strumieniowo.
  • Stosowanie klastra z szyfrowaniem danych przy użyciu kluczy zarządzanych przez klienta (CMK) jest obsługiwane z następującymi ograniczeniami:
    • Klaster śledzący lub klaster lider nie podąża za innymi klastrami.
    • Jeśli klaster podrzędny śledzi klaster lidera z włączonym CMK, a dostęp lidera do klucza zostanie odwołany, zarówno klaster lidera, jak i klaster podrzędny zostaną zawieszone. W takiej sytuacji można rozwiązać problem z kluczem CMK, a następnie wznowić klaster podrzędny lub odłączyć bazy danych podrzędnych z klastra podrzędnego oraz wznowić je niezależnie od klastra lidera.
  • Nie można usunąć bazy danych dołączonej do innego klastra przed odłączeniem.
  • Nie można usunąć klastra, który ma bazę danych dołączoną do innego klastra przed odłączeniem go.
  • Właściwości udostępniania na poziomie tabeli nie są obsługiwane przy stosowaniu do wszystkich baz danych.
  • W bazach danych obserwujących, aby wysyłać zapytania do tabel zewnętrznych używających tożsamości zarządzanej jako metody uwierzytelniania, tożsamość zarządzana musi zostać dodana do klastra obserwującego. Ta funkcja nie działa, gdy klaster główny i klaster podrzędny są wdrażane w różnych tenantach.
  • Nie można przechowywać wyników zapytań w bazie danych o dostępie tylko do odczytu.

Następny krok