Sdílet prostřednictvím


Rychlý průvodce: Klientská knihovna Azure Cosmos DB for Apache Cassandra pro Go

Začínáme s klientskou knihovnou Azure Cosmos DB for Apache Cassandra pro Go 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 klientskou knihovnu Go, připojte se k účtu, proveďte běžné operace a dotazujte se na konečná ukázková data.

Referenční dokumentace API | Zdrojový kód knihovny | Balíček (Go)

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 login příkazu.
  • Go 1.24 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.

  1. Pokud ještě nemáte cílovou skupinu prostředků, použijte az group create příkaz k vytvoření nové skupiny prostředků ve vašem předplatném.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create Pomocí 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"
    
  3. 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"
    
  4. Vytvořte nový objekt JSON, který bude reprezentovat schéma pomocí příkazu Bash s více řádky. Potom pomocí az cosmosdb cassandra table create příkazu vytvořte novou tabulku s názvem products.

    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.

  1. Slouží az cosmosdb show k 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}"
    
  2. Poznamenejte si hodnotu contactPoint a username vlastnosti 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.

  3. Slouží az cosmosdb keys list k získání klíčů pro účet.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Poznamenejte si hodnotu primaryMasterKey vlastnosti 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.

  1. Začněte v prázdném adresáři.

  2. Vytvořte nový modul Go.

    go mod init quickstart
    
  3. Importujte github.com/apache/cassandra-gocql-driver/v2 balíček z Go.

    go get github.com/apache/cassandra-gocql-driver/v2
    
  4. Vytvořte soubor main.go .

  5. Přidejte základní šablonu aplikace Go.

    package main
    
    func main() {    
    }
    

    Důležité

    Zbývající kroky v této příručce předpokládají, že do funkce přidáváte svůj kód main .

Objektový model

Popis
Cluster Představuje konkrétní připojení ke clusteru.
Session Entity, které mají konkrétní připojení ke clusteru

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.

  1. Otevřete soubor main.go v integrovaném vývojovém prostředí (IDE).

  2. V rámci main funkce naimportujte spolu s balíčkem github.com/apache/cassandra-gocql-driver/v2 následující balíčky:

    • context
    • crypto/tls
    import (
        "context"
        "crypto/tls"
        "github.com/apache/cassandra-gocql-driver/v2"
    )
    
  3. Vytvořte řetězcové proměnné pro přihlašovací údaje shromážděné dříve v této příručce. Pojmenujte proměnné username, passworda contactPoint.

    username := "<username>"
    password := "<password>"
    contactPoint := "<contact-point>"
    
  4. Nakonfigurujte instanci typu PasswordAuthenticator s přihlašovacími údaji zadanými v předchozích krocích. Uložte výsledek do proměnné s názvem authentication.

    authentication := gocql.PasswordAuthenticator{
        Username: username,
        Password: password,
    }
    
  5. Nakonfigurujte instanci SslOptions s minimální verzí protokolu TLS (Transport Layer Security) 1.2 a proměnnou contactPoint jako název cílového serveru. Uložte výsledek do proměnné s názvem sslOptions.

    sslOptions := &gocql.SslOptions{
        Config: &tls.Config{
            MinVersion: tls.VersionTLS12,
            ServerName: contactPoint,
        },
    }
    
  6. Vytvořte novou specifikaci clusteru pomocí NewCluster a proměnné contactPoint.

    cluster := gocql.NewCluster(contactPoint)
    
  7. Nakonfigurujte objekt specifikace clusteru pomocí přihlašovacích údajů a konfiguračních proměnných vytvořených v předchozích krocích.

    cluster.SslOpts = sslOptions
    cluster.Authenticator = authentication
    
  8. Nakonfigurujte zbytek objektu specifikace clusteru s těmito statickými hodnotami.

    cluster.Keyspace = "cosmicworks"
    cluster.Port = 10350
    cluster.ProtoVersion = 4    
    
  9. Vytvořte novou relaci, která se připojí ke clusteru pomocí CreateSession.

    session, _ := cluster.CreateSession()
    
  10. Nakonfigurujte relace tak, aby vyvolala funkci Close po návratu z funkce main.

    defer session.Close()
    
  11. Vytvořte nový Background kontextový objekt a uložte ho ctx do proměnné.

    ctx := context.Background()
    

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í.

  1. Definujte nový typ s názvem Product s poli odpovídajícími tabulce vytvořené dříve v této příručce.

    type Product struct {
        id        string
        name      string
        category  string
        quantity  int
        clearance bool
    }
    

    Návod

    V go můžete tento typ vytvořit v jiném souboru nebo ho vytvořit na konci existujícího souboru.

  2. Vytvořte nový objekt typu Product. Uložte objekt do proměnné s názvem product.

    product := Product {
        id:        "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        name:      "Yamba Surfboard",
        category:  "gear-surf-surfboards",
        quantity:  12,
        clearance: false,
    }
    
  3. Vytvořte novou řetězcovou proměnnou s názvem insertQuery dotazu Cassandra Query Language (CQL) pro vložení nového řádku.

    insertQuery := `
        INSERT INTO
            product (id, name, category, quantity, clearance)
        VALUES
            (?, ?, ?, ?, ?)
    `
    
  4. Použijte funkce Query a ExecContext ke spuštění dotazu. Předejte různé vlastnosti product proměnné jako parametry dotazu.

    _ = session.Query(
        insertQuery,
        product.id, 
        product.name, 
        product.category, 
        product.quantity, 
        product.clearance,
    ).ExecContext(ctx)
    

Čtení dat

Potom načtěte data, která byla dříve převedena do tabulky.

  1. Vytvořte novou řetězcovou proměnnou pojmenovanou readQuery s dotazem CQL, který odpovídá položkám se stejným polem id.

    readQuery := `
        SELECT
            id,
            name,
            category,
            quantity,
            clearance
        FROM
            product
        WHERE id = ?
        LIMIT 1
    `
    
  2. Vytvořte řetězcovou proměnnou s názvem id se stejnou hodnotou jako produkt vytvořený dříve v této příručce.

    id := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" 
    
  3. Vytvořte další proměnnou s názvem matchedProduct pro uložení výsledku této operace.

    var matchedProduct Product
    
  4. Pomocí funkcí Query, Consistency, IterContext a Scan společně najděte jednu položku, která odpovídá dotazu, a nastavte její vlastnosti proměnné matchedProduct.

    session.Query(
        readQuery,
        &id,
    ).Consistency(gocql.One).IterContext(ctx).Scan(
        &matchedProduct.id,
        &matchedProduct.name,
        &matchedProduct.category,
        &matchedProduct.quantity,
        &matchedProduct.clearance,
    )
    

Dotaz k datům

Nakonec pomocí dotazu najděte všechna data, která odpovídají určitému filtru v tabulce.

  1. Vytvořte řetězcové proměnné pojmenované findQuery a category pomocí dotazu CQL a požadovaného parametru.

    findQuery := `
        SELECT
            id,
            name,
            category,
            quantity,
            clearance
        FROM
            product
        WHERE
            category = ?
        ALLOW FILTERING
    `
    
    category := "gear-surf-surfboards"
    
  2. Pomocí funkcí Query, Consistency, IterContext a Scanner společně vytvořte skener, který může iterovat přes více položek, které odpovídají dotazu.

    queriedProducts := session.Query(
        findQuery, 
        &category,
    ).Consistency(gocql.All).IterContext(ctx).Scanner()
    
  3. Použijte funkce Next a Scan k iteraci přes výsledky dotazu a přiřaďte vlastnosti každého výsledku vnitřní proměnné queriedProduct.

    for queriedProducts.Next() {
        var queriedProduct Product
        queriedProducts.Scan(
            &queriedProduct.id,
            &queriedProduct.name,
            &queriedProduct.category,
            &queriedProduct.quantity,
            &queriedProduct.clearance,
        )
        // 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.

go run .

Vyčistěte zdroje

Teď získejte heslo pro klientskou knihovnu, které se má použít k vytvoření připojení k nedávno vytvořenému účtu.

  1. Slouží az cosmosdb show k 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}"
    
  2. Poznamenejte si hodnotu contactPoint a username vlastnosti 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.

  3. Slouží az cosmosdb keys list k získání klíčů pro účet.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Poznamenejte si hodnotu primaryMasterKey vlastnosti 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.

Další krok