Inicio rápido: Creación de una aplicación de Cassandra con Node.js SDK y Azure Cosmos DB

SE APLICA A: Cassandra

En este inicio rápido se crea una cuenta de Azure Cosmos DB for Apache Cassandra y se utiliza una aplicación Node.js de Cassandra clonada desde GitHub para crear un contenedor y una base de datos de Cassandra. Azure Cosmos DB es un servicio de base de datos multimodelo que permite crear y consultar rápidamente bases de datos de documentos, tablas, claves-valores y grafos con funcionalidades de distribución global y escala horizontal.

Prerrequisitos

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar. También tiene la alternativa de probar gratis Azure Cosmos DB sin una suscripción de Azure, sin cargos y sin compromiso.

Además, necesita:

Creación de una cuenta de base de datos

Para poder crear una base de datos de documentos, debe crear una cuenta de Cassandra con Azure Cosmos DB.

  1. En el menú de Azure Portal o en la página principal, seleccione Crear un recurso.

  2. En la página Nuevos, busque y seleccione Azure Cosmos DB.

  3. En la página Azure Cosmos DB, seleccione Crear.

  4. En la página API, seleccione Crear en la sección Cassandra.

    La API determina el tipo de cuenta que se va a crear. Azure Cosmos DB proporciona cinco API: NoSQL para bases de datos de documentos, Gremlin para bases de datos de grafos, MongoDB para bases de datos de documentos, Azure Table y Cassandra. Debe crear una cuenta independiente para cada API.

    Seleccione Cassandra, ya que en este inicio rápido va a crear una tabla que funciona con la API para Cassandra.

    Más información acerca de la API para Cassandra.

  5. En la página Crear una cuenta de Azure Cosmos DB, especifique la configuración básica de la nueva cuenta de Azure Cosmos DB.

    Configuración valor Descripción
    Suscripción Su suscripción Seleccione la suscripción de Azure que quiere usar para esta cuenta de Azure Cosmos DB.
    Grupo de recursos Crear nuevo

    A continuación, escriba el mismo nombre que el nombre de cuenta.
    Seleccione Crear nuevo. Luego, escriba un nombre nuevo de grupo de recursos para la cuenta. Para simplificar, use el mismo nombre que el de la cuenta de Azure Cosmos DB.
    Nombre de cuenta Escriba un nombre único. Escriba un nombre único para identificar la cuenta de Azure Cosmos DB. El URI de la cuenta será cassandra.cosmos.azure.com y se anexará al nombre único de la cuenta.

    El nombre de la cuenta solo puede utilizar letras minúsculas, números y guiones (-), y debe tener entre 3 y 31 caracteres de longitud.
    Location Región más cercana a los usuarios Seleccione una ubicación geográfica para hospedar la cuenta de Azure Cosmos DB. Use la ubicación más cercana a los usuarios para que puedan acceder de la forma más rápida posible a los datos.
    Capacity mode (Modo de capacidad) Rendimiento aprovisionado o sin servidor Seleccione Provisioned throughput (Rendimiento aprovisionado) para crear una cuenta en modo de rendimiento aprovisionado. Seleccione Serverless (Sin servidor) para crear una cuenta en modo sin servidor.
    Aplicar el descuento del nivel Gratis de Azure Cosmos DB Aplicar o No aplicar Con el nivel Gratis de Azure Cosmos DB, recibirá los primeros 1000 RU/s y 25 GB de almacenamiento gratis en una cuenta. Más información acerca del nivel Gratis.
    Límite del rendimiento total de la cuenta Seleccione esta opción para limitar el rendimiento de la cuenta Esto resultará útil si desea limitar el rendimiento total de la cuenta a un valor específico.

    Nota

    Puede tener una cuenta de Azure Cosmos DB de nivel Gratis por cada suscripción de Azure y debe optar por tenerla al crear la cuenta. Si no ve la opción para aplicar el descuento por nivel Gratis, significará que en otra cuenta de la suscripción ya se ha habilitado el nivel Gratis.

    Página de la nueva cuenta de Azure Cosmos DB for Apache Cassandra

  6. En la pestaña Distribución global, configure los detalles siguientes. Puede dejar los valores predeterminados para este inicio rápido:

    Configuración valor Descripción
    Redundancia geográfica Deshabilitar Habilite o deshabilite la distribución global en su cuenta. Para ello, debe emparejar su región con una región de par. Puede agregar más regiones a su cuenta más adelante.
    Escrituras en varias regiones Deshabilitar La funcionalidad de escrituras en varias regiones le permite aprovechar el rendimiento aprovisionado para sus bases de datos y contenedores de todo el mundo.
    Zonas de disponibilidad Deshabilitar Las zona de disponibilidad son ubicaciones aisladas dentro de una región de Azure. Cada zona de disponibilidad consta de uno o varios centros de datos equipados con alimentación, refrigeración y redes independientes.

    Nota

    Las siguientes opciones no están disponibles si selecciona Serverless (Sin servidor) en Capacity mode (Modo de capacidad):

    • Aplicación de descuento por nivel Gratis
    • Redundancia geográfica
    • Escrituras en varias regiones
  7. Opcionalmente, puede configurar detalles adicionales en las pestañas siguientes:

    • Redes: configure el acceso desde una red virtual.
    • Directiva de copia de seguridad: configure una directiva de copia de seguridad periódica o continua.
    • Cifrado: use una clave administrada por el servicio o una clave administrada por el cliente.
    • Etiquetas: son pares nombre-valor que permiten categorizar los recursos y ver una facturación consolidada mediante la aplicación de la misma etiqueta en varios recursos y grupos de recursos.
  8. Seleccione Revisar + crear.

  9. Revise la configuración de la cuenta y seleccione Crear. La operación de creación de la cuenta tarda unos minutos. Espere hasta que la página del portal muestre Se completó la implementación .

    Panel de notificaciones de Azure Portal

  10. Seleccione Ir al recurso para ir a la página de la cuenta de Azure Cosmos DB.

Clonación de la aplicación de ejemplo

Clonación de una aplicación de la API para Cassandra desde GitHub, establecer la cadena de conexión y ejecutarla.

  1. Abra una ventana de símbolo del sistema. Cree una carpeta nueva denominada git-samples. A continuación, cierre la ventana.

    md "C:\git-samples"
    
  2. Abra una ventana de terminal de Git, como Git Bash. Use el comando cd para cambiar a la nueva carpeta e instalar la aplicación de ejemplo.

    cd "C:\git-samples"
    
  3. Ejecute el comando siguiente para clonar el repositorio de ejemplo. Este comando crea una copia de la aplicación de ejemplo en el equipo.

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-nodejs-getting-started.git
    
  4. Instale las dependencias de Node.js con npm.

    npm install
    

Revisión del código

Este paso es opcional. Si le interesa aprender cómo el código crea los recursos de base de datos, puede revisar los siguientes fragmentos de código. Los fragmentos de código se toman del archivo uprofile.js de la carpeta C:\git-samples\azure-cosmos-db-cassandra-nodejs-getting-started. En caso contrario, vaya directamente a Actualización de la cadena de conexión.

  • Se establecieron los valores de nombre de usuario y contraseña utilizando la página de la cadena de conexión en el Azure Portal.

    let authProvider = new cassandra.auth.PlainTextAuthProvider(
        config.username,
        config.password
    );
    
  • El objeto client se inicializa con la información de contactPoint. contactPoint se recupera de Azure Portal.

    let client = new cassandra.Client({
        contactPoints: [`${config.contactPoint}:10350`],
        authProvider: authProvider,
        localDataCenter: config.localDataCenter,
        sslOptions: {
            secureProtocol: "TLSv1_2_method"
        },
    });
    
  • El client se conecta a Azure Cosmos DB for Apache Cassandra.

    client.connect();
    
  • Se crea un espacio de claves.

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

    query =
        `CREATE TABLE IF NOT EXISTS ${config.keySpace}.user (user_id int PRIMARY KEY, user_name text, user_bcity text)`;
    await client.execute(query);
    
  • Se insertan entidades de clave/valor.

    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);
    }
    
  • Realice una consulta para obtener todos los valores de clave.

    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
        );
    }
    
  • Realice una consulta para obtener un valor de clave.

    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
        );
    }
    
  • Cierre la conexión.

    client.shutdown();
    

Actualización de la cadena de conexión

Vuelva a Azure Portal para obtener la información de la cadena de conexión y cópiela en la aplicación. La cadena de conexión permite a la aplicación comunicarse con la base de datos hospedada.

  1. En la cuenta de Azure Cosmos DB, en Azure Portal, seleccione Cadena de conexión.

  2. Use el botón del lado derecho de la pantalla para copiar el valor superior (PUNTO DE CONTACTO).

    Captura de pantalla que muestra cómo ver y copiar el PUNTO DE CONTACTO, el NOMBRE DE USUARIO y la CONTRASEÑA en la página Cadena de conexión.

  3. Abra el archivo config.js.

  4. Pegue el valor de PUNTO DE CONTACTO del portal sobre CONTACT-POINT en la línea 9.

    La línea 9 debe tener un aspecto similar a este valor:

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

  5. Copie el valor de NOMBRE DE USUARIO del portal y péguelo sobre <FillMEIN> en la línea 2.

    La línea 2 debe tener un aspecto similar a este valor:

    username: 'cosmos-db-quickstart',

  6. Copie el valor de CONTRASEÑA del portal y péguelo sobre USERNAME en la línea 8.

    La línea 8 debe tener un aspecto similar a este valor:

    password: '2Ggkr662ifxz2Mg==',

  7. Reemplace REGIÓN por la región de Azure en la que creó este recurso.

  8. Guarde el archivo config.js.

Ejecute la aplicación Node.js

  1. En la ventana de terminal de Bash, asegúrese de que se encuentra en el directorio de ejemplo que clonó anteriormente:

    cd azure-cosmos-db-cassandra-nodejs-getting-started
    
  2. Ejecute la aplicación del nodo:

    npm start
    
  3. Compruebe los resultados previstos desde la línea de comandos.

    Captura de pantalla que muestra la ventana del símbolo del sistema donde puede ver y comprobar la salida.

    Presione CTRL+C para detener el programa y cerrar la ventana de la consola.

  4. En Azure Portal abra Explorador de datos para consultar, modificar y trabajar con estos nuevos datos.

    Captura de pantalla que muestra la página Data Explorer, donde puede ver los datos.

Revisión de los SLA en Azure Portal

Azure Portal supervisa el rendimiento, capacidad de almacenamiento, disponibilidad, latencia y coherencia de su cuenta de Azure Cosmos DB. Los gráficos de las métricas asociadas con un Acuerdo de Nivel de Servicio (SLA) de Azure Cosmos DB muestran el rendimiento real en comparación con el valor de este acuerdo. Este conjunto de métricas hace que la supervisión de los Acuerdos de Nivel de Servicio sea transparente.

Para revisar las métricas y los Acuerdos de Nivel de Servicio:

  1. Seleccione Métricas en el menú de navegación de la cuenta de Azure Cosmos DB.

  2. Seleccione una pestaña como Latencia y seleccione un período de tiempo a la derecha. Compare las líneas Real y SLA de los gráficos.

    Conjunto de métricas de Azure Cosmos DB

  3. Revise las métricas de las otras pestañas.

Limpieza de recursos

Cuando haya terminado tanto con la aplicación como con la cuenta de Azure Cosmos DB, puede eliminar los recursos de Azure que creó para no tener más gastos. Para eliminar los recursos:

  1. En la barra de búsqueda de Azure Portal, busque y seleccione Grupos de recursos.

  2. En la lista, seleccione el grupo de recursos que creó para este inicio rápido.

    Selección del grupo de recursos que se eliminará

  3. En la página Información general del grupo de recursos, seleccione Eliminar grupo de recursos.

    Eliminar el grupo de recursos

  4. En la ventana siguiente, escriba el nombre del grupo de recursos que desea eliminar y, después, seleccione Eliminar.

Pasos siguientes

En este inicio rápido ha aprendido a crear una cuenta de Azure Cosmos DB con la API para Cassandra y a ejecutar una aplicación Node.js de Cassandra que cree un contenedor y una base de datos de Cassandra. Ya puede importar más datos en la cuenta de Azure Cosmos DB.