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 Node.js pro ukládání, správu a dotazování nestrukturovaných dat. Postupujte podle kroků v tomto průvodci a vytvořte nový účet, nainstalujte Node.js klientskou knihovnu, připojte se k účtu, proveďte běžné operace a dotazujte se na konečná ukázková data.
Referenční dokumentace k | rozhraní API – Balíček zdrojového kódu | knihovny (npm)
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í
- Node.js 22 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 keyspace a tabulky.
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é složce.
Inicializace nového modulu
npm init es6 --yescassandra-driverNainstalujte balíček z Node Package Manageru (npm).npm install --save cassandra-driverVytvořte soubor index.js .
Začněte v prázdném adresáři.
Inicializace nového modulu
npm init es6 --yestypescriptNainstalujte balíček z Node Package Manageru (npm).npm install --save-dev typescripttsxNainstalujte balíček z npm.npm install --save-dev tsxcassandra-driverNainstalujte balíček z npm.npm install --save cassandra-driverInicializace projektu TypeScript pomocí kompilátoru (
tsc).npx tsc --init --target es2017 --module es2022 --moduleResolution nodenextVytvořte soubor index.ts .
Objektový model
| Popis | |
|---|---|
Client |
Představuje konkrétní připojení ke 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 index.js v integrovaném vývojovém prostředí (IDE).
Importujte z
cassandra-drivermodulu následující typy:cassandracassandra.Clientcassandra.mapping.Mappercassandra.auth.PlainTextAuthProvider
import cassandra from 'cassandra-driver'; const { Client } = cassandra; const { Mapper } = cassandra.mapping; const { PlainTextAuthProvider } = cassandra.auth;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 username = '<username>'; const password = '<password>'; const contactPoint = '<contact-point>';Vytvořte další řetězcovou proměnnou pro oblast, ve které jste vytvořili účet Azure Cosmos DB for Apache Cassandra. Pojmenujte tuto proměnnou
region.const region = '<azure-region>';Vytvořte nový
PlainTextAuthProviderobjekt s přihlašovacími údaji zadanými v předchozích krocích.let authProvider = new PlainTextAuthProvider( username, password );Vytvořte
Clientobjekt pomocí přihlašovacích údajů a konfiguračních proměnných vytvořených v předchozích krocích.let client = new Client({ contactPoints: [`${contactPoint}:10350`], authProvider: authProvider, localDataCenter: region, sslOptions: { secureProtocol: 'TLSv1_2_method' }, });Asynchronně se připojte ke clusteru.
await client.connect();Vytvořte nový mapovač, který cílí na
cosmicworksprostor klíčů aproducttabulku. Pojmenujte mapovačProduct.const mapper = new Mapper(client, { models: { 'Product': { tables: ['product'], keyspace: 'cosmicworks' } } });Vygenerujte instanci mapperu
forModelpomocí funkce a názvu mapperuProduct.const productMapper = mapper.forModel('Product');
Otevřete soubor index.ts v integrovaném vývojovém prostředí (IDE).
Importujte z
cassandra-drivermodulu následující typy:cassandra.authcassandra.mappingcassandra.typescassandra.Clientcassandra.ClientOptionscassandra.mapping.Mappercassandra.auth.PlainTextAuthProvider
import { auth, mapping, types, Client, ClientOptions } from 'cassandra-driver'; const { Mapper } = mapping; const { PlainTextAuthProvider } = auth;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 username: string = '<username>'; const password: string = '<password>'; const contactPoint: string = '<contact-point>';Vytvořte další řetězcovou proměnnou pro oblast, ve které jste vytvořili účet Azure Cosmos DB for Apache Cassandra. Pojmenujte tuto proměnnou
region.const region: string = '<azure-region>';Vytvořte nový
PlainTextAuthProviderobjekt s přihlašovacími údaji zadanými v předchozích krocích.let authProvider = new PlainTextAuthProvider( username, password );Vytvořte anonymní objekt s možnostmi, které zajistí, že používáte protokol TLS (Transport Layer Security) 1.2.
let sslOptions = { secureProtocol: 'TLSv1_2_method' };Vytvořte
ClientOptionsobjekt pomocí přihlašovacích údajů a konfiguračních proměnných vytvořených v předchozích krocích.let clientOptions: ClientOptions = { contactPoints: [`${contactPoint}:10350`], authProvider: authProvider, localDataCenter: region, sslOptions: sslOptions };Vytvořte
Clientobjekt pomocíclientOptionsproměnné v konstruktoru.let client = new Client(clientOptions);Asynchronně se připojte ke clusteru.
await client.connect();Vytvořte nový mapovač, který cílí na
cosmicworksprostor klíčů aproducttabulku. Pojmenujte mapovačProduct.const mapper = new Mapper( client, { models: { 'Product': { tables: ['product'], keyspace: 'cosmicworks' } } });Vygenerujte instanci mapperu
forModelpomocí funkce a názvu mapperuProduct.const productMapper = mapper.forModel('Product');
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í.
Vytvořte nový objekt v proměnné s názvem
product.const product = { id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', name: 'Yamba Surfboard', category: 'gear-surf-surfboards', quantity: 12, price: 850.00, clearance: false };Asynchronně vyvolejte funkci
inserta předejte proměnnouproductvytvořenou v předchozím kroku.await productMapper.insert(product);
Definujte nové rozhraní s
Productpoli odpovídajícími tabulce vytvořené dříve v této příručce.Typ IdstringNamestringCategorystringQuantityintPricedecimalClearanceboolinterface Product { id: string; name: string; category: string; quantity: number; price: number; clearance: boolean; }Návod
V Node.jsmůž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.const product: Product = { id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', name: 'Yamba Surfboard', category: 'gear-surf-surfboards', quantity: 12, price: 850.00, clearance: false };Asynchronně vyvolejte funkci
inserta předejte proměnnouproductvytvořenou v předchozím kroku.await productMapper.insert(product);
Čtení dat
Potom načtěte data, která byla dříve převedena do tabulky.
Vytvořte anonymní objekt s názvem
filter. V tomto objektu uveďte vlastnost s názvemidse stejnou hodnotou jako produkt vytvořený dříve v této příručce.const filter = { id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' };Vyvolejte funkci
getmapperu a předejte proměnnoufilter. Uložte výsledek do proměnné s názvemmatchedProduct.let matchedProduct = await productMapper.get(filter);
Vytvořte anonymní objekt s názvem
filter. V tomto objektu uveďte vlastnost s názvemidse stejnou hodnotou jako produkt vytvořený dříve v této příručce.const filter = { id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' };Vyvolejte funkci
getmapperu a předejte proměnnoufilter. Uložte výsledek do proměnné s názvemmatchedProducttypuProduct.let matchedProduct: Product = await productMapper.get(filter);
Dotaz k datům
Nakonec pomocí dotazu najděte všechna data, která odpovídají určitému filtru v tabulce.
Vytvořte novou řetězcovou proměnnou pojmenovanou
querys dotazem CQL, který vyhledává položky se stejným polemcategory.const query = ` SELECT * FROM cosmicworks.product WHERE category = :category ALLOW FILTERING `;Vytvořte anonymní objekt s názvem
params. V tomto objektu uveďte vlastnost s názvemcategoryse stejnou hodnotou jako produkt vytvořený dříve v této příručce.const params = { category: 'gear-surf-surfboards' };Asynchronně zavolejte funkci
executes proměnnýmiqueryaparamsjako argumenty. Uložte vlastnost výsledkurowsjako proměnnou s názvemmatchedProducts.let { rows: matchedProducts } = await client.execute(query, params);Iterujte výsledky dotazu vyvoláním
foreachmetody v poli produktů.matchedProducts.forEach(product => { // Do something here with each result });
Vytvořte novou řetězcovou proměnnou pojmenovanou
querys dotazem CQL, který vyhledává položky se stejným polemcategory.const query: string = ` SELECT * FROM cosmicworks.product WHERE category = :category ALLOW FILTERING `;Vytvořte anonymní objekt s názvem
params. V tomto objektu uveďte vlastnost s názvemcategoryse stejnou hodnotou jako produkt vytvořený dříve v této příručce.const params = { category: 'gear-surf-surfboards' };Asynchronně zavolejte funkci
executes proměnnýmiqueryaparamsjako argumenty. Uložte výsledek do proměnné s názvemresulttyputypes.ResultSet.let result: types.ResultSet = await client.execute(query, params);Uložte vlastnost výsledku
rowsjako proměnnou s názvemmatchedProductstypuProduct[].let matchedProducts: Product[] = result.rows;Iterujte výsledky dotazu vyvoláním
foreachmetody v poli produktů.matchedProducts.forEach((product: Product) => { // 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.
node index.js
npx tsx index.ts
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>"