Udostępnij za pośrednictwem


Korzystanie z baz danych obserwowanych

Funkcja bazy danych obserwowanej umożliwia dołączenie bazy danych znajdującej się w innym klastrze do klastra usługi Azure Data Explorer. Baza danych obserwowanych jest dołączona w trybie tylko do odczytu, umożliwiając wyświetlanie danych i uruchamianie zapytań dotyczących danych pozyskanych do bazy danych lidera. Baza danych obserwowanych synchronizuje zmiany w bazach danych liderów. Ze względu na synchronizację występuje opóźnienie danych od kilku sekund do kilku minut w dostępności danych. Długość opóźnienia zależy od ogólnego rozmiaru metadanych bazy danych lidera. Bazy danych liderów i obserwowanych używają tego samego konta magazynu, aby pobrać dane. Magazyn jest własnością bazy danych lidera. Baza danych obserwowanych wyświetla dane bez konieczności ich pozyskiwania. 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. Muszą być odłączone przez lidera lub zwolennika, a dopiero wtedy można je usunąć.

Dołączanie bazy danych do innego klastra przy użyciu funkcji obserwowania jest używane jako infrastruktura do udostępniania danych między organizacjami i zespołami. Ta funkcja jest przydatna do segregowania zasobów obliczeniowych w celu ochrony środowiska produkcyjnego przed przypadkami użycia nieprodukcyjnymi. Obserwowanie może również służyć do skojarzenia kosztów klastra usługi Azure Data Explorer z partią, która uruchamia zapytania dotyczące danych.

Które bazy danych są przestrzegane?

  • Klaster może podążać za jedną bazą danych, kilkoma bazami danych lub wszystkimi bazami danych klastra lidera.
  • Pojedynczy klaster może śledzić bazy danych z wielu klastrów liderów.
  • Klaster może zawierać zarówno bazy danych obserwowanych, jak i bazy danych liderów.
  • Klastry EngineV3 mogą być zgodne tylko z klastrami EngineV3, analogicznie klastry EngineV2 mogą być zgodne tylko z klastrami V2.

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 usługi Azure Resource Manager. Aby dołączyć bazę danych, musisz mieć tożsamość użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej z co najmniej rolą współautora w klastrze liderów i klastrem obserwowanym. Dodawanie lub usuwanie przypisań ról przy użyciu Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure i szablonu usługi ARM. Dowiedz się więcej na temat kontroli dostępu opartej na rolach (RBAC) platformy Azure i różnych ról.

Udostępnianie na poziomie tabeli

Podczas dołączania bazy danych wszystkie tabele są również obserwowane tabele zewnętrzne i zmaterializowane widoki. Możesz udostępniać określone tabele/tabele zewnętrzne/zmaterializowane widoki, konfigurując właściwość "TableLevelSharingProperties".

Element "TableLevelSharingProperties" zawiera osiem tablic ciągów: tablesToInclude, , tablesToExcludematerializedViewsToIncludeexternalTablesToExcludematerializedViewsToExcludeexternalTablesToIncludefunctionsToIncludei .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 "*" wszystkich baz danych.

Uwaga

Po dołączeniu zmaterializowanych widoków są również uwzględniane ich tabele źródłowe.

Przykłady

  1. Uwzględnij wszystkie tabele. Nie jest potrzebny żaden element "*", ponieważ wszystkie tabele są domyślnie przestrzegane:

    tablesToInclude = []
    
  2. Uwzględnij wszystkie tabele o nazwach rozpoczynających się od "Dzienniki":

    tablesToInclude = ["Logs*"]
    
  3. Wyklucz wszystkie tabele zewnętrzne:

    externalTablesToExclude = ["*"]
    
  4. Wyklucz wszystkie zmaterializowane widoki:

    materializedViewsToExclude=["*"]
    

Zastępowanie nazwy bazy danych

Opcjonalnie możesz ustawić nazwę bazy danych w klastrze obserwowanym inaczej niż klaster liderów. Na przykład możesz 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 języka C#

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new AttachedDatabaseConfiguration
{
    ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
    DatabaseName = "<databaseName>", // Can be specific database name or * for all databases
    DefaultPrincipalsModificationKind = "Union",
    Location = "North Central US"
};
// 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 TableLevelSharingProperties(
        tablesToInclude:new List<string> { "table1" },
        tablesToExclude:new List<string> { "table2" },
        externalTablesToInclude:new List<string> { "exTable1" },
        externalTablesToExclude:new List<string> { "exTable2" },
        materializedViewsToInclude:new List<string> { "matTable1" },
        materializedViewsToExclude:new List<string> { "matTable2" }
    );
}
await resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdateAsync(
    followerResourceGroupName, followerClusterName, 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 Azure Portal. Możesz sprawdzić, czy bazy danych zostały pomyślnie dołączone do klastrów obserwowanych lub liderów .

Sprawdzanie klastra obserwowanych

  1. Przejdź do klastra obserwowanego 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 lidera

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

  2. Sprawdź, czy odpowiednie bazy danych są oznaczone jako UDOSTĘPNIONE INNYM OSOBOM>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łączanie bazy danych obserwowanej bazy danych

Uwaga

Aby odłączyć bazę danych od obserwowanej strony lub lidera, musisz mieć użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną z co najmniej rolą współautora 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 obserwowany może odłączyć dowolną dołączoną bazę danych obserwowanych w następujący sposób:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
await resourceManagementClient.AttachedDatabaseConfigurations.DeleteAsync(
    followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName
);

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

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

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = leaderSubscriptionId };
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerResourceGroupName = "followerResourceGroup";
//The cluster and attached database configuration that are created as part of the Prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var followerDatabaseDefinition = new FollowerDatabaseDefinition
{
    ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}",
    AttachedDatabaseConfigurationName = attachedDatabaseConfigurationsName
};
await resourceManagementClient.Clusters.DetachFollowerDatabasesAsync(
    leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition
);

Zarządzanie zasadami podmiotów zabezpieczeń, uprawnieniami i buforowaniem

Zarządzanie podmiotami zabezpieczeń

Podczas dołączania bazy danych określ "domyślny rodzaj modyfikacji podmiotów zabezpieczeń". Wartość domyślna polega na połączeniu autoryzowanych podmiotów zabezpieczeń z kolekcją baz danych lidera autoryzowanych podmiotów zabezpieczeń

Rodzaj Opis
Unii Dołączone podmioty zabezpieczeń bazy danych będą zawsze zawierać oryginalne podmioty zabezpieczeń bazy danych oraz inne nowe podmioty zabezpieczeń dodane do bazy danych obserwowanej bazy danych.
Zamień Brak dziedziczenia podmiotów z oryginalnej bazy danych. Dla dołączonej bazy danych należy utworzyć nowe podmioty zabezpieczeń.
Brak Dołączone podmioty zabezpieczeń bazy danych zawierają tylko podmioty zabezpieczeń oryginalnej bazy danych bez innych podmiotów zabezpieczeń.

Aby uzyskać więcej informacji na temat używania poleceń sterowania do konfigurowania autoryzowanych podmiotów zabezpieczeń, zobacz Control commands for managing a follower cluster (Sterowanie poleceniami do zarządzania klastrem obserwowanych).

Zarządzanie uprawnieniami

Zarządzanie uprawnieniami bazy danych tylko do odczytu jest takie samo jak dla wszystkich typów baz danych. Zobacz zarządzanie uprawnieniami w Azure Portal.

Konfigurowanie zasad buforowania

Administrator bazy danych obserwowanej może zmodyfikować zasady buforowania dołączonej bazy danych lub dowolnej z jego tabel w klastrze hostingu. Ustawieniem domyślnym jest połączenie źródłowej bazy danych w bazie danych klastra lidera i zasad buforowania na poziomie tabeli przy użyciu zasad zdefiniowanych 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 comiesięcznego raportowania i trzydniowe zasady buforowania w bazie danych obserwowanych w celu wykonywania zapytań dotyczących tylko ostatnich danych na potrzeby rozwiązywania problemów. Aby uzyskać więcej informacji na temat używania poleceń sterowania do konfigurowania zasad buforowania w bazie danych lub tabeli obserwowanej, zobacz Sterowanie poleceniami do zarządzania klastrem obserwowanym.

Uwagi

  • Jeśli występują konflikty między bazami danych klastrów liderów/obserwowanych, gdy wszystkie bazy danych są obserwowane przez klaster obserwowany, są rozwiązywane w następujący sposób:
    • Baza danych o nazwie DB utworzona w klastrze obserwowanym ma pierwszeństwo przed bazą danych o takiej samej nazwie, która została utworzona w klastrze liderów. Dlatego baza danych bazy danych w klastrze obserwowanym musi zostać usunięta lub zmieniona dla klastra obserwowanego, aby zawierał bazę danych bazy 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 klastra i historii uruchamiania w klastrze obserwowanym będą pokazywać aktywność i historię w klastrze obserwowanym, a ich zestawy wyników nie będą zawierać tych wyników klastra lidera ani klastrów.
    • Na przykład: .show queries polecenie uruchomione w klastrze obserwowanym spowoduje wyświetlenie tylko zapytań uruchamianych w bazach danych, po których następuje klaster obserwowany, a nie zapytania uruchamiane względem tej samej bazy danych w klastrze liderów.

Ograniczenia

  • Obserwowanie i klastry liderów muszą znajdować się w tym samym regionie.
  • Jeśli pozyskiwanie przesyłania strumieniowego jest używane w bazie danych, która jest obserwowana, klaster obserwowany powinien być włączony dla pozyskiwania przesyłania strumieniowego, aby zezwolić na następujące dane pozyskiwania przesyłania strumieniowego.
  • Szyfrowanie danych przy użyciu kluczy zarządzanych przez klienta nie jest obsługiwane zarówno w klastrach lidera, jak i w klastrach obserwowanych.
  • Przed odłączeniem nie można usunąć bazy danych dołączonej do innego klastra.
  • 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 w przypadku obserwowaniu wszystkich baz danych.

Następne kroki