Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Začínáme s klientskou knihovnou Azure Cosmos DB for Apache Cassandra pro .NET pro ukládání, správu a dotazování nestrukturovaných dat Podle kroků v tomto průvodci vytvořte nový účet, nainstalujte klientskou knihovnu .NET, připojte se k účtu, proveďte běžné operace a dotazujte se na konečná ukázková data.
Dokumentace k referenci API | Zdrojový kód knihovny | Balíček (NuGet)
Požadavky
Předplatné Azure
- Pokud nemáte předplatné Azure, vytvořte si bezplatný účet před zahájením.
Nejnovější verze Azure CLI v Azure Cloud Shellu
- Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, přihlaste se k Azure CLI pomocí
az loginpříkazu.
- Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, přihlaste se k Azure CLI pomocí
- .NET SDK 9.0 nebo novější
Instalace
Nejprve pro tuto příručku nastavte účet a vývojové prostředí. Tato část vás provede procesem vytvoření účtu, získáním jeho přihlašovacích údajů a následnou přípravou vývojového prostředí.
Vytvoření účtu
Začněte vytvořením rozhraní API pro účet Apache Cassandra. Po vytvoření účtu vytvořte klíčový prostor a tabulkové zdroje.
Pokud ještě nemáte cílovou skupinu prostředků, použijte
az group createpříkaz k vytvoření nové skupiny prostředků ve vašem předplatném.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createPomocí příkazu vytvořte nový účet Azure Cosmos DB pro Apache Cassandra s výchozím nastavením.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Vytvořte nový keyspace pojmenovaný
az cosmosdb cassandra keyspace createcosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Vytvořte nový objekt JSON, který bude reprezentovat schéma pomocí příkazu Bash s více řádky. Potom pomocí
az cosmosdb cassandra table createpříkazu vytvořte novou tabulku s názvemproducts.schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
Získání přihlašovacích údajů
Teď získejte heslo pro klientskou knihovnu, které se má použít k vytvoření připojení k nedávno vytvořenému účtu.
Slouží
az cosmosdb showk získání kontaktního bodu a uživatelského jména pro účet.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Poznamenejte si hodnotu
contactPointausernamevlastnosti z výstupu předchozích příkazů. Hodnoty těchto vlastností jsou kontaktní bod a uživatelské jméno , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.Slouží
az cosmosdb keys listk získání klíčů pro účet.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Poznamenejte si hodnotu
primaryMasterKeyvlastnosti z výstupu předchozích příkazů. Hodnota této vlastnosti je heslo , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.
Příprava vývojového prostředí
Potom nakonfigurujte vývojové prostředí s novým projektem a klientskou knihovnou. Tento krok je posledním požadovaným předpokladem před přechodem na zbytek této příručky.
Začněte v prázdném adresáři.
Vytvoření nové konzolové aplikace .NET
dotnet new consoleCassandraCSharpDriverPřidejte balíček z NuGetu.dotnet add package CassandraCSharpDriverZkompilujte projekt.
dotnet build
Objektový model
| Popis | |
|---|---|
Cluster |
Představuje stav připojení ke clusteru. |
ISession |
Entity vláknově bezpečné, které obsahují určité připojení k clusteru |
Mapper |
Klient Cassandra Query Language (CQL) používaný ke spouštění dotazů |
Příklady kódu
Ověření klienta
Začněte ověřením klienta pomocí přihlašovacích údajů shromážděných dříve v této příručce.
Otevřete soubor Program.cs v integrovaném vývojovém prostředí (IDE).
Odstraňte veškerý existující obsah v souboru.
Přidejte direktivy using pro následující obory názvů:
System.Security.AuthenticationCassandraCassandra.Mapping
using System.Security.Authentication; using Cassandra; using Cassandra.Mapping;Vytvořte proměnné řetězcové konstanty pro přihlašovací údaje shromážděné dříve v tomto průvodci. Pojmenujte proměnné
username,passwordacontactPoint.const string username = "<username>"; const string password = "<password>"; const string contactPoint = "<contact-point>";Vytvořte nový
SSLoptionsobjekt, abyste zajistili, že používáte protokol TLS (Transport Layer Security) 1.2, kontrolujete odvolání certifikátu a neprovádíte žádné další ověření certifikace na straně klienta.SSLOptions sslOptions = new( sslProtocol: SslProtocols.Tls12, checkCertificateRevocation: true, remoteCertValidationCallback: (_, _, _, _) => true);Vytvořte nový
Clusterobjekt pomocí fluentCluster.Builder()syntaxe. Použijte přihlašovací údaje a konfigurační proměnné vytvořené v předchozích krocích.Cluster cluster = Cluster.Builder() .WithCredentials(username, password) .WithPort(10350) .AddContactPoint(contactPoint) .WithSSL(sslOptions) .Build();Vytvořte novou
sessionproměnnou pomocíConnectAsyncmetody, která předává název cílového prostoru klíčů (cosmicworks).using ISession session = await cluster.ConnectAsync("cosmicworks");Vytvořte novou
mapperproměnnou pomocí konstruktoruMappertřídy, který předává nedávno vytvořenousessionproměnnou.Mapper mapper = new(session);
Výstraha
Úplné ověření protokolu TLS (Transport Layer Security) je v tomto průvodci zakázané, aby se zjednodušilo ověřování. Pro produkční nasazení plně povolte ověřování.
Vložit nebo aktualizovat data
V dalším kroku přepište nová data do tabulky. Přenesení zajistí, že se data vytvoří nebo nahradí odpovídajícím způsobem v závislosti na tom, jestli stejná data již v tabulce existují.
Definujte nový typ záznamu s
Productpoli odpovídajícími tabulce vytvořené dříve v této příručce.Typ IdstringNamestringCategorystringQuantityintPricedecimalClearanceboolrecord Product { public required string Id { get; init; } public required string Name { get; init; } public required string Category { get; init; } public required int Quantity { get; init; } public required decimal Price { get; init; } public required bool Clearance { get; init; } }Návod
V .NET můžete tento typ vytvořit v jiném souboru nebo ho vytvořit na konci existujícího souboru.
Vytvořte nový objekt typu
Product. Uložte objekt do proměnné s názvemproduct.Product product = new() { Id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", Name = "Yamba Surfboard", Category = "gear-surf-surfboards", Quantity = 12, Price = 850.00m, Clearance = false };Asynchronně vyvoláte metodu
InsertAsync, která předává proměnnouproductvytvořenou v předchozím kroku.await mapper.InsertAsync(product);
Čtení dat
Potom načtěte data, která byla dříve převedena do tabulky.
Vytvořte novou řetězcovou proměnnou pojmenovanou
readQuerys dotazem CQL, který odpovídá položkám se stejným polemid.string readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";Vytvořte řetězcovou proměnnou s názvem
idse stejnou hodnotou jako produkt vytvořený dříve v této příručce.string id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";SingleAsync<>Pomocí obecné metody spusťte dotaz uložený vreadQuery, předejteidproměnnou jako argument a namapujte výstup naProducttyp. Uložte výsledek této operace do proměnné typuProduct.Product matchedProduct = await mapper.SingleAsync<Product>(readQuery, [id]);
Dotaz k datům
Nakonec pomocí dotazu najděte všechna data, která odpovídají určitému filtru v tabulce.
Vytvořte řetězcové proměnné pojmenované
findQueryacategorypomocí dotazu CQL a požadovaného parametru.string findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING"; string category = "gear-surf-surfboards";Pomocí dvou řetězcových proměnných a
FetchAsync<>obecné metody můžete asynchronně dotazovat více výsledků. Uložte výsledek tohoto dotazu do proměnné typuIEnumerable<Product>s názvemqueriedProducts.IEnumerable<Product> queriedProducts = await mapper.FetchAsync<Product>(findQuery, [category]);foreachPomocí smyčky iterujte výsledky dotazu.foreach (Product queriedProduct in queriedProducts) { // Do something here with each result }
Spuštění kódu
Spusťte nově vytvořenou aplikaci pomocí terminálu v adresáři vaší aplikace.
dotnet run
Vyčistěte zdroje
Pokud účet už nepotřebujete, odeberte ho z předplatného Azure odstraněním prostředku.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"