Použití databází pro sledování

Funkce Database by vám umožní připojit k vašemu clusteru Azure Průzkumník dat databázi umístěnou v jiném clusteru. Databáze následného zpracování je připojena v režimu jen pro čtení , což umožňuje zobrazit data a spouštět dotazy na data, která byla ingestovaná do databáze vedoucíhoprocesu. Databáze sledování synchronizuje změny v databázích vedoucích. Z důvodu synchronizace je k dispozici zpoždění dat několik sekund až na několik minut. Délka časového prodlevy závisí na celkové velikosti metadat vedoucí databáze. Databáze vedoucí a následný používá stejný účet úložiště k načtení dat. Úložiště vlastní vedoucí databáze. Databáze následného zobrazení dat, aniž by je musela ingestovat. Vzhledem k tomu, že připojená databáze je databáze jen pro čtení, není možné upravovat data, tabulky a zásady v databázi s výjimkou zásad ukládání do mezipaměti, objektů zabezpečenía oprávnění. Připojené databáze nejde odstranit. Musí být odpojeni vedoucím nebo následným a pouze potom je možné je odstranit.

Připojení databáze k jinému clusteru pomocí schopnosti sledování se používá jako infrastruktura pro sdílení dat mezi organizacemi a týmy. Tato funkce je užitečná pro oddělení výpočetních prostředků k ochraně produkčního prostředí před neprodukčními případy použití. K přidružení nákladů na cluster Azure Průzkumník dat ke straně, která spouští dotazy na data, se dá použít i následný.

Které databáze jsou následovány?

  • Cluster může splňovat jednu databázi, několik databází nebo všechny databáze vedoucího clusteru.
  • Jeden cluster může následovat po databázích z více vedoucích clusterů.
  • Cluster může obsahovat i databáze a vedoucí databáze pro následné služby.
  • Clustery EngineV3 můžou následovat jenom v clusterech EngineV3, podobně jako clustery s EngineV2 můžou sledovat jenom clustery v2.

Požadavky

Připojení databáze

Existují různé metody, které můžete použít k připojení databáze. V tomto článku se podíváme na připojení databáze pomocí C#, Pythonu, PowerShellu nebo šablony Azure Resource Manager. Aby bylo možné připojit databázi, musíte mít uživatele, skupinu, instanční objekt nebo spravovanou identitu s alespoň rolí Přispěvatel v clusteru vedoucího a clusteru následného. Přidejte nebo odeberte přiřazení rolí pomocí Azure Portal, PowerShellu, rozhraní příkazového řádku Azurea šablony ARM. Přečtěte si další informace o řízení přístupu na základě role Azure (Azure RBAC) a o různých rolích.

Sdílení na úrovni tabulky

Při připojení databáze všechny tabulky jsou následovány také externí tabulky a materializovaná zobrazení. Konfigurací 'TableLevelSharingProperties' můžete sdílet konkrétní tabulky/externí tabulky/materializovaná zobrazení.

'TableLevelSharingProperties' obsahuje šest polí řetězců: , tablesToExclude , externalTablesToInclude ,, a externalTablesToExcludematerializedViewsToIncludematerializedViewsToExclude . Maximální počet položek ve všech polích dohromady je 100.

Poznámka

Sdílení na úrovni tabulky není podporováno při použití notace * všechny databáze.

Poznámka

Při zahrnutí materializovaná zobrazení jsou zahrnuty i jejich zdrojové tabulky.

Příklady

  1. Zahrnout všechny tabulky Není nutné zadat znak *, protože ve výchozím nastavení jsou všechny tabulky následovány:

     tablesToInclude = []
    
  2. Zahrnout všechny tabulky s názvy, které začínají na "logs":

     tablesToInclude = ["Logs*"]
    
  3. Vyloučit všechny externí tabulky:

    externalTablesToExclude = ["*"]
    
  4. Vyloučit všechna materializovaná zobrazení:

    materializedViewsToExclude=["*"]
    

Připojení databáze pomocí jazyka C #

Potřebný balíčky NuGet

Příklad

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = followerSubscriptionId
};

var followerResourceGroupName = "followerResouceGroup";
var leaderResourceGroup = "leaderResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "uniqueNameForAttachedDatabaseConfiguration";
var databaseName = "db"; // Can be specific database name or * for all databases
var defaultPrincipalsModificationKind = "Union"; 
var location = "North Central US";


TableLevelSharingProperties tls;
if (databaseName == "*")
{
    // Table level sharing properties are not supported when using '*' all databases notation.
    tls = null;
}
else
{
    // Set up the table level sharing properties - the following is just an example.
    var tablesToInclude = new List<string>
    {
        "table1",
        "table2",
        "table3"
    };
    var externalTablesToExclude = new List<string>
    {
        "Logs*"
    };
    var tls = new TableLevelSharingProperties(tablesToInclude: tablesToInclude, externalTablesToExclude: externalTablesToExclude);
}


AttachedDatabaseConfiguration attachedDatabaseConfigurationProperties = new AttachedDatabaseConfiguration()
{
    ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
    DatabaseName = databaseName,
    DefaultPrincipalsModificationKind = defaultPrincipalsModificationKind,
    Location = location,
    TableLevelSharingProperties = tls
};

var attachedDatabaseConfigurations = resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdate(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationName, attachedDatabaseConfigurationProperties);

Ověření úspěšného připojení databáze

Pokud chcete ověřit, že se databáze úspěšně připojila, vyhledejte připojené databáze v Azure Portal. Můžete ověřit, že databáze byly úspěšně připojeny v clusterech následovců nebo vedoucích clusterů.

Kontrola clusteru sledovačů

  1. Přejděte do následujícího clusteru a vyberte Databáze.

  2. V seznamu databází vyhledejte nové databáze jen pro čtení.

    Databáze sledovačů jen pro čtení.

Kontrola clusteru vedoucích uzlů

  1. Přejděte do clusteru s vedoucími uzly a vyberte Databáze.

  2. Zkontrolujte, jestli jsou příslušné databáze označené jako SDÍLENÉ S OSTATNÍMiAno.

    Čtení a zápis připojených databází

Odpojení následující databáze

Poznámka

Pokud chcete odpojit databázi od sledování nebo vedoucí strany, musíte mít uživatele, skupinu, objekt služby nebo spravovanou identitu s rolí přispěvatele alespoň v clusteru, od kterého databázi odpojíte. V následujícím příkladu používáme instanční objekt.

Odpojení připojené databáze sledovačů od následujícího clusteru pomocí jazyka C #

Následující cluster může odpojit jakoukoli připojenou databázi sledovačů následujícím způsobem:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = followerSubscriptionId
};

var followerResourceGroupName = "testrg";
//The cluster and database that are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "uniqueName";

resourceManagementClient.AttachedDatabaseConfigurations.Delete(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName);

Odpojení připojené databáze sledovačů od clusteru vedoucích uzlů pomocí jazyka C #

Cluster vedoucích uzlů může odpojit jakoukoli připojenou databázi následujícím způsobem:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";

var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
    SubscriptionId = leaderSubscriptionId
};

var leaderResourceGroupName = "testrg";
var followerResourceGroupName = "followerResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
//The cluster and database that are created as part of the Prerequisites
var followerDatabaseDefinition = new FollowerDatabaseDefinition()
    {
        AttachedDatabaseConfigurationName = "uniqueName",
        ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"
    };

resourceManagementClient.Clusters.DetachFollowerDatabases(leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition);

Správa objektů zabezpečení, oprávnění a zásad ukládání do mezipaměti

Správa objektů zabezpečení

Při připojování databáze zadejte "výchozí druh změny objektů zabezpečení". Ve výchozím nastavení se uchová kolekce autorizovaných objektů zabezpečení v databázi vedoucích objektů.

Druh Popis
Sjednocení Připojené objekty zabezpečení databáze budou vždy zahrnovat původní objekty zabezpečení databáze a další nové objekty zabezpečení přidané do následující databáze.
Nahrazení Žádná dědičnost objektů zabezpečení z původní databáze. Pro připojenou databázi musí být vytvořeny nové objekty zabezpečení.
Žádný Připojené objekty zabezpečení databáze obsahují pouze objekty zabezpečení původní databáze bez dalších objektů zabezpečení.

Další informace o použití řídicích příkazů ke konfiguraci autorizovaných objektů zabezpečení najdete v tématu Řídicí příkazy pro správu následujícího clusteru.

Správa oprávnění

Správa oprávnění k databázi jen pro čtení je stejná jako pro všechny typy databází. Viz správa oprávnění v Azure Portal.

Konfigurace zásad ukládání do mezipaměti

Správce následující databáze může upravit zásady ukládání do mezipaměti připojené databáze nebo jakékoli její tabulky v hostitelském clusteru. Ve výchozím nastavení se uchová kolekce databází vedoucích databází a zásad ukládání do mezipaměti na úrovni tabulky. Můžete mít například 30denní zásady ukládání do mezipaměti pro databázi vedoucích výsledků pro spouštění měsíčních sestav a třídenní zásady ukládání do mezipaměti pro následující databázi, abyste se mohli dotazovat pouze na nedávná data pro účely řešení potíží. Další informace o použití řídicích příkazů ke konfiguraci zásad ukládání do mezipaměti pro následující databázi nebo tabulku najdete v tématu Řídicí příkazy pro správu následujícího clusteru.

Poznámky

  • Pokud dojde ke konfliktům mezi databázemi clusterů vedoucích nebo sledovaných clusterů, vyřeší se to takto, když za všemi databázemi následuje následující cluster:
    • Databáze s názvem DB vytvořená v následujícím clusteru má přednost před databází se stejným názvem, který byl vytvořen v clusteru vedoucích uzlů. To je důvod, proč je potřeba odebrat nebo přejmenovat databázi databáze v následujícím clusteru, aby následující cluster zahrnoval databázi vedoucího uzlu.
    • Databáze s názvem DB následovaná dvěma nebo více clustery vedoucích uzlů bude libovolně zvolena z jednoho z clusterů vedoucích uzlů a nebude ji následovat více než jednou.
  • Příkazy pro zobrazení protokolu aktivit clusteru a historie spuštění v clusteru sledování zobrazí aktivitu a historii v následujícím clusteru a jejich sady výsledků nebudou zahrnovat výsledky clusteru vedoucích uzlů nebo clusterů.
    • Příklad: Příkaz spuštěný v následujícím clusteru zobrazí pouze dotazy běžící v databázích, za nímž následuje cluster, a ne dotazy běží na stejné databázi v clusteru vedoucích .show queries uzlů.

Omezení

  • Sledovaný a vedoucí cluster musí být ve stejné oblasti.
  • Příjem streamování není možné použít u databáze, kterou sledujete.
  • Šifrování dat pomocí klíčů spravovaných zákazníkem není podporováno na clusterech vedoucích i sledovačů.
  • Databázi, která je připojená k jinému clusteru, není možné před odpojením odstranit.
  • Před odpojením clusteru nemůžete odstranit cluster s databází připojenou k jinému clusteru.
  • Vlastnosti sdílení na úrovni tabulky se nepodporují, pokud postupuje podle všech databází.

Další kroky