Inicio rápido: Compilación de una aplicación Java para administrar los datos de Azure Cosmos DB for Apache Cassandra (controlador v4)

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 Java de Cassandra clonada desde GitHub para crear un contenedor y una base de datos de Cassandra mediante los controladores de Apache Cassandra v4.x para Java. 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

Nota:

Se trata de un sencillo inicio rápido que usa la versión 4 del controlador Apache Cassandra de código abierto para Java. En la mayoría de los casos, debería poder conectar una aplicación de Java dependiente de Apache Cassandra existente en Azure Cosmos DB for Apache Cassandra sin realizar ningún cambio en el código existente. Sin embargo, se recomienda agregar la extensión personalizada de Java, que incluye directivas de reintento y equilibrio de carga personalizadas, así como la configuración de conexión recomendada, para una mejor experiencia en general. Esto se hace para controlar la limitación de velocidad y la conmutación por error en el nivel de aplicación en Azure Cosmos DB en los casos en que es necesario. Puede encontrar un ejemplo completo en el que se implementa la extensión aquí.

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
    Subscription 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

Ahora vamos a empezar a trabajar con el código. Vamos a clonar una aplicación de Cassandra desde GitHub, establecer la cadena de conexión y ejecutarla. Verá lo fácil que es trabajar con datos mediante programación.

  1. Abra un símbolo del sistema. Cree una carpeta nueva denominada git-samples. Después cierre el símbolo del sistema.

    md "C:\git-samples"
    
  2. Abra una ventana de terminal de Git, como git bash y utilice el comando cd para cambiar a la nueva carpeta para 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-java-getting-started-v4.git
    

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. En caso contrario, puede ir directamente a Actualización de la cadena de conexión. Estos fragmentos de código se han tomado del archivo src/main/java/com/azure/cosmosdb/cassandra/util/CassandraUtils.java.

  • CqlSession se conecta a Azure Cosmos DB for Apache Cassandra y devuelve una sesión a la que se accede (el objeto Cluster de la versión 3 del controlador ya está obsoleto). El host, puerto, nombre de usuario y contraseña de Cassandra se establecen en la página de la cadena de conexión de Azure Portal.

        this.session = CqlSession.builder().withSslContext(sc)
                .addContactPoint(new InetSocketAddress(cassandraHost, cassandraPort)).withLocalDatacenter(region)
                .withAuthCredentials(cassandraUsername, cassandraPassword).build();
    

Los fragmentos de código siguientes son del archivo src/main/java/com/azure/cosmosdb/cassandra/repository/UserRepository.java.

  • Quite el espacio de claves si ya existe de una ejecución anterior.

    public void dropKeyspace() {
        String query = "DROP KEYSPACE IF EXISTS "+keyspace+"";
        session.execute(query);
        LOGGER.info("dropped keyspace '"+keyspace+"'");
    } 
    
  • Se crea un espacio de claves.

    public void createKeyspace() {
        String query = "CREATE KEYSPACE "+keyspace+" WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }";
        session.execute(query);
        LOGGER.info("Created keyspace '"+keyspace+"'");
    }
    
  • Se crea una tabla.

      public void createTable() {
          String query = "CREATE TABLE "+keyspace+"."+table+" (user_id int PRIMARY KEY, user_name text, user_bcity text)";
          session.execute(query);
          LOGGER.info("Created table '"+table+"'");
      }
    
  • Las entidades de usuario se insertan mediante un objeto de instrucción preparado.

    public String prepareInsertStatement() {
        final String insertStatement = "INSERT INTO  "+keyspace+"."+table+" (user_id, user_name , user_bcity) VALUES (?,?,?)";
        return insertStatement;
    }
    
    public void insertUser(String preparedStatement, int id, String name, String city) {
        PreparedStatement prepared = session.prepare(preparedStatement);
        BoundStatement bound = prepared.bind(id, city, name).setIdempotent(true);
        session.execute(bound);
    }
    
  • Realice una consulta para obtener la información de todos los usuarios.

    public void selectAllUsers() {
        final String query = "SELECT * FROM "+keyspace+"."+table+"";
        List<Row> rows = session.execute(query).all();
    
        for (Row row : rows) {
            LOGGER.info("Obtained row: {} | {} | {} ", row.getInt("user_id"), row.getString("user_name"), row.getString("user_bcity"));
        }
    }
    
  • Realice una consulta para obtener la información de un único usuario.

    public void selectUser(int id) {
        final String query = "SELECT * FROM "+keyspace+"."+table+" where user_id = 3";
        Row row = session.execute(query).one();
    
        LOGGER.info("Obtained row: {} | {} | {} ", row.getInt("user_id"), row.getString("user_name"), row.getString("user_bcity"));
    }
    

Actualización de la cadena de conexión

Ahora vuelva a Azure Portal para obtener la información de la cadena de conexión y cópiela en la aplicación. Los detalles de la cadena de conexión permiten 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.

    Visualizar y copiar un nombre de usuario de Azure Portal, página Cadena de conexión

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

  3. Abra el archivo config.properties desde la carpeta C:\git-samples\azure-cosmosdb-cassandra-java-getting-started\java-examples\src\main\resources.

  4. Pegue el valor de CONTACT POINT (PUNTO DE CONTACTO) del portal sobre <Cassandra endpoint host> en la línea 2.

    La línea 2 de config.properties debería ser similar a esta:

    cassandra_host=cosmos-db-quickstart.cassandra.cosmosdb.azure.com

  5. Vuelva al portal y copie el valor de NOMBRE DE USUARIO. Pegue el valor de NOMBRE DE USUARIO del portal sobre <cassandra endpoint username> en la línea 4.

    La línea 4 de config.properties debería parecerse a esta:

    cassandra_username=cosmos-db-quickstart

  6. Vuelva al portal y copie el valor de CONTRASEÑA. Pegue el valor de CONTRASEÑA del portal sobre <cassandra endpoint password> en la línea 5.

    La línea 5 de config.properties debería parecerse a esta:

    cassandra_password=2Ggkr662ifxz2Mg...==

  7. En la línea 6, si quiere usar un certificado TLS/SSL específico, reemplace <SSL key store file location> por la ubicación del certificado TLS/SSL. Si no se proporciona ningún valor, se usará el certificado JDK instalado en <JAVA_HOME/>jre/lib/security/cacerts.

  8. Si cambió la línea 6 para usar un certificado TLS/SSL específico, actualice la línea 7 para usar la contraseña para ese certificado.

  9. Tenga en cuenta que tendrá que agregar la región predeterminada (p. ej., West US) del punto de contacto, p.ej.

    region=West US

    Esto se debe a que la versión 4x del controlador solo admite emparejar un controlador de dominio local con el punto de contacto. Si desea agregar una región que no sea la predeterminada (que es la que se especificó al crear la cuenta de Azure Cosmos DB), deberá usar un sufijo regional al agregar el punto de contacto, por ejemplo host-westus.cassandra.cosmos.azure.com.

  10. Guarde el archivo config.properties.

Ejecución de la aplicación Java

  1. En la ventana de terminal de GIT, cd a la carpeta azure-cosmosdb-cassandra-java-getting-started-v4.

    cd "C:\git-samples\azure-cosmosdb-cassandra-java-getting-started-v4"
    
  2. En la ventana de terminal de GIT, use el siguiente comando para generar el archivo cosmosdb-cassandra-examples.jar.

    mvn clean install
    
  3. En la ventana de terminal de Git, ejecute el siguiente comando para iniciar la aplicación de Java.

    java -cp target/cosmosdb-cassandra-examples.jar com.azure.cosmosdb.cassandra.examples.UserProfile
    

    En la ventana de terminal se notifica que se ha creado el espacio de claves y la tabla. A continuación, se seleccionan y devuelven todos los usuarios de la tabla y se muestra la salida. Seguidamente, se selecciona una fila por identificador y se muestra el valor.

    Presione Ctrl+C para detener la ejecución del 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.

    Visualizar los datos en el Explorador de datos: Azure Cosmos DB

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 Java de Cassandra que cree un contenedor y una base de datos de Cassandra. Ya puede importar datos adicionales en la cuenta de Azure Cosmos DB.