Guida introduttiva: Creare un'app Cassandra con Node.js SDK e Azure Cosmos DB

SI APPLICA A: Cassandra

In questa guida introduttiva si crea un account Azure Cosmos DB per Apache Cassandra e si usa un'app Cassandra Node.js clonata da GitHub per creare un database e un contenitore Cassandra. Azure Cosmos DB è un servizio di database modello che consente di creare ed eseguire rapidamente query su database di documenti, tabelle, valori chiave e grafi, con funzionalità di scalabilità orizzontale e distribuzione globale.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare. In alternativa, è possibile provare gratuitamente Microsoft Azure Cosmos DB senza una sottoscrizione di Azure e senza impegno

È anche necessario:

Creare un account di database

Prima di poter creare un database di documenti, è necessario creare un account di Cassandra con Azure Cosmos DB.

  1. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.

  2. Nella pagina Nuovo cercare e selezionare Azure Cosmos DB.

  3. Nella pagina Azure Cosmos DB selezionare Crea.

  4. Nella pagina API selezionare Crea nella sezione Cassandra .

    L'API determina il tipo di account da creare. Azure Cosmos DB offre cinque API: NoSQL per database di documenti, Gremlin per database a grafo, MongoDB per database di documenti, Tabelle di Azure e Cassandra. È necessario creare un account separato per ogni API.

    Selezionare Cassandra, perché in questa guida introduttiva si sta creando una tabella che funziona con l'API per Cassandra.

    Altre informazioni sull'API per Cassandra.

  5. Nella pagina Crea account Azure Cosmos DB immettere le impostazioni di base per il nuovo account Azure Cosmos DB.

    Impostazione valore Descrizione
    Subscription Sottoscrizione in uso Selezionare la sottoscrizione di Azure da usare per l'account Azure Cosmos DB.
    Gruppo di risorse Crea nuovo

    Immettere quindi lo stesso nome specificato nome dell'account.
    Selezionare Crea nuovo. Immettere quindi il nome di un nuovo gruppo di risorse per l'account. Per semplicità, usare lo stesso nome usato come nome dell'account Azure Cosmos DB.
    Account Name: Immettere un nome univoco Immettere un nome univoco per identificare l'account Azure Cosmos DB. L'URI dell'account sarà cassandra.cosmos.azure.com e verrà aggiunto al nome dell'account univoco.

    Il nome dell'account può contenere solo lettere minuscole, numeri e trattini e deve avere una lunghezza compresa tra 3 e 31 caratteri.
    Titolo Area più vicina ai propri utenti Selezionare una posizione geografica in cui ospitare l'account Azure Cosmos DB. Usare la località più vicina agli utenti per offrire loro la massima velocità di accesso ai dati.
    Modalità di capacità Provisioning velocità effettiva o Serverless Selezionare Provisioning velocità effettiva per creare un account in modalità Provisioning velocità effettiva. Selezionare Serverless per creare un account in modalità Serverless.
    Applicare lo sconto in base al livello gratuito di Azure Cosmos DB Applicare o non applicare Il livello gratuito di Azure Cosmos DB offre i primi 1000 UR/s e 25 GB di spazio di archiviazione gratuiti per account. Altre informazioni sul livello gratuito.
    Limitare la velocità effettiva totale dell'account Selezionare questa opzione per limitare la velocità effettiva dell'account Ciò è utile se si vuole limitare la velocità effettiva totale dell'account a un valore specifico.

    Nota

    È possibile avere fino a un account Azure Cosmos DB del livello gratuito per ogni sottoscrizione di Azure ed è necessario acconsentire esplicitamente durante la creazione dell'account. Se l'opzione per l'applicazione dello sconto per il livello gratuito non è visualizzata, un altro account nella sottoscrizione è già stato abilitato per il livello gratuito.

    The new account page for Azure Cosmos DB for Apache Cassandra

  6. Nella scheda Distribuzione globale configurare i dettagli seguenti. Ai fini di questa guida introduttiva è possibile lasciare i valori predefiniti:

    Impostazione valore Descrizione
    Ridondanza geografica Disabilita Abilitare o disabilitare la distribuzione globale nell'account associando la propria area a un'altra area. È possibile aggiungere altre aree al proprio account in un secondo momento.
    Scritture in più aree Disabilita La funzionalità Scritture in più aree consente di sfruttare la velocità effettiva di cui è stato effettuato il provisioning per i database e i contenitori in tutto il mondo.
    Zone di disponibilità Disabilita zone di disponibilità sono posizioni isolate all'interno di un'area di Azure. Ogni zona è costituita da uno o più data center dotati di impianti indipendenti per l'alimentazione, il raffreddamento e la connettività di rete.

    Nota

    Le opzioni seguenti non sono disponibili se si seleziona Serverless come modalità di capacità:

    • Applica sconto livello gratuito
    • Ridondanza geografica
    • Scritture in più aree
  7. Facoltativamente, è possibile configurare i dettagli aggiuntivi nelle schede seguenti:

    • Rete: consente di configurare l'accesso da una rete virtuale.
    • Criteri di backup: consente di configurare i criteri di backup periodici o continui.
    • Crittografia: consente di usare una chiave gestita dal servizio o una chiave gestita dal cliente.
    • Tag: i tag sono coppie nome-valore che consentono di classificare le risorse e visualizzare dati di fatturazione consolidati tramite l'applicazione dello stesso tag a più risorse e gruppi di risorse.
  8. Selezionare Rivedi e crea.

  9. Esaminare le impostazioni dell'account e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale visualizzi La distribuzione è stata completata.

    The Azure portal Notifications pane

  10. Selezionare Vai alla risorsa per passare alla pagina dell'account Azure Cosmos DB.

Clonare l'applicazione di esempio

Clonare un'API per l'app Cassandra da GitHub, impostare il stringa di connessione ed eseguirlo.

  1. Aprire una finestra del prompt dei comandi. Creare una nuova cartella denominata git-samples, Chiudere quindi la finestra.

    md "C:\git-samples"
    
  2. Aprire una finestra del terminale Git, ad esempio Git Bash. Usare il comando cd per passare alla nuova cartella e installare l'app di esempio.

    cd "C:\git-samples"
    
  3. Eseguire il comando seguente per clonare l'archivio di esempio. Questo comando crea una copia dell'app di esempio nel computer in uso.

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-nodejs-getting-started.git
    
  4. Installare le dipendenze Node.js con npm.

    npm install
    

Esaminare il codice

Questo passaggio è facoltativo. Per comprendere in che modo il codice crea le risorse del database, è possibile esaminare i frammenti di codice seguenti. I frammenti di codice provengono tutti dal file uprofile.js nella cartella C:\git-samples\azure-cosmos-db-cassandra-nodejs-getting-started. In caso contrario, passare a Aggiorna il stringa di connessione.

  • I valori di nome utente e password sono stati impostati usando la pagina della stringa di connessione nel portale di Azure.

    let authProvider = new cassandra.auth.PlainTextAuthProvider(
        config.username,
        config.password
    );
    
  • client viene inizializzato con le informazioni di contactPoint. Il valore di contactPoint viene recuperato dal portale di Azure.

    let client = new cassandra.Client({
        contactPoints: [`${config.contactPoint}:10350`],
        authProvider: authProvider,
        localDataCenter: config.localDataCenter,
        sslOptions: {
            secureProtocol: "TLSv1_2_method"
        },
    });
    
  • client Si connette ad Azure Cosmos DB per Apache Cassandra.

    client.connect();
    
  • Viene creato un nuovo keyspace.

    var query =
        `CREATE KEYSPACE IF NOT EXISTS ${config.keySpace} WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter' : '1' }`;
    await client.execute(query);
    
  • Viene creata una nuova tabella.

    query =
        `CREATE TABLE IF NOT EXISTS ${config.keySpace}.user (user_id int PRIMARY KEY, user_name text, user_bcity text)`;
    await client.execute(query);
    
  • Le entità chiave/valore vengono inserite.

    const arr = [
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (1, 'AdrianaS', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (2, 'JiriK', 'Toronto')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (3, 'IvanH', 'Mumbai')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (4, 'IvanH', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (5, 'IvanaV', 'Belgaum')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (6, 'LiliyaB', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (7, 'JindrichH', 'Buenos Aires')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (8, 'AdrianaS', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (9, 'JozefM', 'Seattle')`,
    ];
    for (const element of arr) {
        await client.execute(element);
    }
    
  • Eseguire una query per ottenere tutti i valori di chiave.

    query = `SELECT * FROM ${config.keySpace}.user`;
    const resultSelect = await client.execute(query);
    
    for (const row of resultSelect.rows) {
        console.log(
            "Obtained row: %d | %s | %s ",
            row.user_id,
            row.user_name,
            row.user_bcity
        );
    }
    
  • Eseguire una query per ottenere un valore di chiave.

    query = `SELECT * FROM ${config.keySpace}.user where user_id=1`;
    const resultSelectWhere = await client.execute(query);
    
    for (const row of resultSelectWhere.rows) {
        console.log(
            "Obtained row: %d | %s | %s ",
            row.user_id,
            row.user_name,
            row.user_bcity
        );
    }
    
  • Chiudere la connessione.

    client.shutdown();
    

Aggiornare la stringa di connessione

Passare al portale di Azure per ottenere le informazioni sul stringa di connessione e copiarlo nell'app. La stringa di connessione consente all'app di comunicare con il database ospitato.

  1. Nell'account Azure Cosmos DB nel portale di Azure selezionare Stringa di connessione.

  2. Usare il pulsante sul lato destro dello schermo per copiare il valore superiore, CONTACT POINT.

    Screenshot showing how to view and copy the CONTACT POINT, USERNAME,and PASSWORD from the Connection String page.

  3. Aprire il file config.js.

  4. Incollare il valore di CONTACT POINT dal portale CONTACT-POINT alla riga 9.

    La riga 9 dovrebbe ora essere simile a questo valore:

    contactPoint: "cosmos-db-quickstarts.cassandra.cosmosdb.azure.com",

  5. Copiare il valore U edizione Standard RNAME dal portale e incollarlo <FillMEIN> nella riga 2.

    La riga 2 dovrebbe ora essere simile a questo valore:

    username: 'cosmos-db-quickstart',

  6. Copiare il valore PASSWORD dal portale e incollarlo USERNAME alla riga 8.

    La riga 8 dovrebbe ora essere simile a questo valore:

    password: '2Ggkr662ifxz2Mg==',

  7. Sostituire REGION con l'area di Azure in cui è stata creata questa risorsa.

  8. Salvare il file config.js .

Eseguire l'app Node.js

  1. Nella finestra del terminale bash assicurarsi di essere nella directory di esempio clonata in precedenza:

    cd azure-cosmos-db-cassandra-nodejs-getting-started
    
  2. Eseguire l'applicazione del nodo:

    npm start
    
  3. Verificare i risultati previsti dalla riga di comando.

    Screenshot shows a Command Prompt window where you can view and verify the output.

    Premere CTRL+C per arrestare il programma e chiudere la finestra della console.

  4. Nel portale di Azure aprire Esplora dati per modificare e usare questi nuovi dati, nonché eseguire query su di essi.

    Screenshot shows the Data Explorer page, where you can view the data.

Esaminare i contratti di servizio nel portale di Azure

Il portale di Azure monitora la velocità effettiva dell'account Azure Cosmos DB, l'archiviazione, la disponibilità, la latenza e la coerenza. I grafici per le metriche associate a un contratto di servizio di Azure Cosmos DB indicano il valore previsto dal contratto di servizio rispetto alle prestazioni effettive. Questo gruppo di metriche garantisce la trasparenza nel monitoraggio dei contratti di servizio.

Per esaminare le metriche e i contratti di servizio:

  1. Selezionare Metriche nel menu di spostamento dell'account Azure Cosmos DB.

  2. Selezionare una scheda, ad esempio Latenza, e quindi un intervallo di tempo sulla destra. Confrontare le righe relative ai valori effettivi e ai valori del contratto di servizio nei grafici.

    Azure Cosmos DB metrics suite

  3. Esaminare le metriche nelle altre schede.

Pulire le risorse

Dopo aver completato le operazioni con l'app e l'account Azure Cosmos DB, è possibile eliminare le risorse di Azure create in modo da non incorrere in altri costi. Per eliminare le risorse:

  1. Nella barra di ricerca del portale di Azure cercare e selezionare Gruppi di risorse.

  2. Selezionare nell'elenco il gruppo di risorse creato in questa guida di avvio rapido.

    Select the resource group to delete

  3. Nella pagina Panoramica del gruppo di risorse selezionare Elimina gruppo di risorse.

    Delete the resource group

  4. Nella finestra successiva immettere il nome del gruppo di risorse da eliminare e quindi selezionare Elimina.

Passaggi successivi

In questa guida introduttiva si è appreso come creare un account Azure Cosmos DB con l'API per Cassandra ed eseguire un'app Cassandra Node.js che crea un database e un contenitore Cassandra. È ora possibile importare altri dati nell'account Azure Cosmos DB.