Início Rápido: Criar uma aplicação Java para gerir dados do Azure Cosmos DB para Apache Cassandra (controlador v3)

APLICA-SE A: Cassandra

Neste início rápido, vai criar uma conta do Azure Cosmos DB para o Apache Cassandra e utilizar uma aplicação Java para Cassandra clonada a partir do GitHub para criar uma base de dados e um contentor para Cassandra com os controladores do Apache Cassandra v3.x para Java. O Azure Cosmos DB é um serviço de base de dados de vários modelos que lhe permite criar e consultar rapidamente as bases de dados de documentos, tabelas, chave-valor e grafos com capacidades globais de distribuição e dimensionamento horizontal.

Pré-requisitos

Nota

Este é um início rápido simples que utiliza a versão 3 do controlador Apache Cassandra open source para Java. Na maioria dos casos, deve conseguir ligar uma aplicação Java dependente do Apache Cassandra existente ao Azure Cosmos DB para Apache Cassandra sem quaisquer alterações ao código existente. No entanto, recomendamos que adicione a nossa extensão Java personalizada, que inclui políticas personalizadas de repetição e balanceamento de carga, para uma melhor experiência geral. Trata-se de processar a limitação de taxas e a ativação pós-falha ao nível da aplicação no Azure Cosmos DB, respetivamente. Pode encontrar um exemplo abrangente que implementa a extensão aqui.

Criar uma conta de base de dados

Antes de poder criar uma base de dados de documentos, tem de criar uma conta do Cassandra com o Azure Cosmos DB.

  1. No menu portal do Azure ou na Home page, selecione Criar um recurso.

  2. Na página Novo , procure e selecione Azure Cosmos DB.

  3. Na página do Azure Cosmos DB , selecione Criar.

  4. Na página API , selecione Criar na secção Cassandra .

    A API determina o tipo de conta a criar. O Azure Cosmos DB fornece cinco APIs: NoSQL para bases de dados de documentos, Gremlin para bases de dados de grafos, MongoDB para bases de dados de documentos, Tabela do Azure e Cassandra. Tem de criar uma conta separada para cada API.

    Selecione Cassandra, porque neste início rápido está a criar uma tabela que funciona com a API para Cassandra.

    Saiba mais sobre a API para Cassandra.

  5. Na página Criar Conta do Azure Cosmos DB , introduza as definições básicas da nova conta do Azure Cosmos DB.

    Definição Valor Descrição
    Subscrição A sua subscrição Selecione a subscrição do Azure que quer utilizar para esta conta do Azure Cosmos DB.
    Grupo de Recursos Criar novo

    Em seguida, introduza o mesmo nome que Nome da Conta
    Selecione Criar novo. Em seguida, introduza um novo nome de grupo de recursos para a sua conta. Para simplificar, utilize o mesmo nome que o nome da conta do Azure Cosmos DB.
    Nome da Conta Introduza um nome exclusivo Introduza um nome exclusivo para identificar a sua conta do Azure Cosmos DB. O URI da sua conta será cassandra.cosmos.azure.com anexado ao nome exclusivo da sua conta.

    O nome da conta só pode utilizar letras minúsculas, números e hífenes (-) e tem de ter entre 3 e 31 carateres de comprimento.
    Localização A região mais próxima dos seus utilizadores Selecione a localização geográfica para alojar a sua conta do Azure Cosmos DB. Utilize a localização mais próxima dos utilizadores para lhes dar o acesso mais rápido aos dados.
    Modo de capacidade Débito aprovisionado ou Sem Servidor Selecione Débito aprovisionado para criar uma conta no modo de débito aprovisionado . Selecione Sem servidor para criar uma conta no modo sem servidor .
    Aplicar desconto de escalão gratuito do Azure Cosmos DB Aplicar ou Não aplicar Com o escalão gratuito do Azure Cosmos DB, obterá gratuitamente as primeiras 1000 RU/s e 25 GB de armazenamento numa conta. Saiba mais sobre o escalão gratuito.
    Limitar o débito total da conta Selecione para limitar o débito da conta Isto é útil se quiser limitar o débito total da conta a um valor específico.

    Nota

    Pode ter até uma conta do Azure Cosmos DB de escalão gratuito por subscrição do Azure e tem de optar ativamente por participar ao criar a conta. Se não vir a opção para aplicar o desconto de escalão gratuito, significa que outra conta na subscrição já foi ativada com o escalão gratuito.

    A nova página de conta do Azure Cosmos DB para Apache Cassandra

  6. No separador Distribuição Global , configure os seguintes detalhes. Pode deixar os valores predefinidos para efeitos deste início rápido:

    Definição Valor Descrição
    Redundância Geográfica Desativar Ative ou desative a distribuição global na sua conta ao emparelhar a sua região com uma região de par. Pode adicionar mais regiões à sua conta mais tarde.
    Escritas de várias regiões Desativar A capacidade de escrita de várias regiões permite-lhe tirar partido do débito aprovisionado para as suas bases de dados e contentores em todo o mundo.
    Zonas de Disponibilidade Desativar Zonas de Disponibilidade são localizações isoladas numa região do Azure. Cada zona é composta por um ou mais datacenters equipados com energia, refrigeração e rede independentes.

    Nota

    As seguintes opções não estão disponíveis se selecionar Sem servidor como modo de Capacidade:

    • Aplicar Desconto de Escalão Gratuito
    • Georredundância
    • Escritas de várias regiões
  7. Opcionalmente, pode configurar detalhes adicionais nos seguintes separadores:

    • Rede – configurar o acesso a partir de uma rede virtual.
    • Política de Cópia de Segurança – configure uma política de cópia de segurança periódica ou contínua .
    • Encriptação – utilize uma chave gerida pelo serviço ou uma chave gerida pelo cliente.
    • Etiquetas – as etiquetas são pares de nomes/valores que lhe permitem categorizar recursos e ver a faturação consolidada ao aplicar a mesma etiqueta a vários recursos e grupos de recursos.
  8. Selecione Rever + criar.

  9. Reveja as definições da conta e, em seguida, selecione Criar. A criação da conta demora alguns minutos. Aguarde até que a página do portal apresente A implementação está concluída.

    O painel Notificações do portal do Azure

  10. Selecione Ir para recurso para aceder à página da conta do Azure Cosmos DB.

Clonar a aplicação de exemplo

Agora, vamos trabalhar com código. Vamos clonar uma aplicação do Cassandra a partir do GitHub, definir a cadeia de ligação e executá-la. Vai ver como é fácil trabalhar com dados programaticamente.

  1. Abra uma linha de comandos. Crie uma nova pasta com o nome git-samples. Em seguida, feche a linha de comandos.

    md "C:\git-samples"
    
  2. Abra uma janela de terminal do git, como o git bash e utilize o comando cd para alterar para uma nova pasta e instalar a aplicação de exemplo.

    cd "C:\git-samples"
    
  3. Execute o seguinte comando para clonar o repositório de exemplo. Este comando cria uma cópia da aplicação de exemplo no seu computador.

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-java-getting-started.git
    

Rever o código

Este passo é opcional. Se estiver interessado em saber de que forma o código cria os recursos da base de dados, pode rever os fragmentos seguintes. Caso contrário, pode avançar diretamente para Update your connection string (Atualizar a cadeia de ligação). Estes fragmentos são todos retirados do ficheiro src/main/java/com/azure/cosmosdb/cassandra/util/CassandraUtils.java .

  • As opções anfitrião, porta, nome de utilizador, palavra-passe e TLS/SSL do Cassandra estão definidas. As informações de cadeia de ligação provêm da página da cadeia de ligação no portal do Azure.

    cluster = Cluster.builder().addContactPoint(cassandraHost).withPort(cassandraPort).withCredentials(cassandraUsername, cassandraPassword).withSSL(sslOptions).build();
    
  • O cluster liga ao Azure Cosmos DB para Apache Cassandra e devolve uma sessão para aceder.

    return cluster.connect();
    

Os fragmentos seguintes são do ficheiro src/main/java/com/azure/cosmosdb/cassandra/repository/UserRepository.java .

  • Criar um keyspace novo.

    public void createKeyspace() {
        final String query = "CREATE KEYSPACE IF NOT EXISTS uprofile WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3' } ";
        session.execute(query);
        LOGGER.info("Created keyspace 'uprofile'");
    }
    
  • Crie uma nova tabela.

    public void createTable() {
          final String query = "CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)";
          session.execute(query);
          LOGGER.info("Created table 'user'");
    }
    
  • Insira entidades de utilizador utilizando um objeto de instrução preparado.

    public PreparedStatement prepareInsertStatement() {
        final String insertStatement = "INSERT INTO  uprofile.user (user_id, user_name, user_bcity) VALUES (?,?,?)";
        return session.prepare(insertStatement);
    }
    
    public void insertUser(PreparedStatement statement, int id, String name, String city) {
        BoundStatement boundStatement = new BoundStatement(statement);
        session.execute(boundStatement.bind(id, name, city));
    }
    
  • Efetue uma consulta para obter as informações de todos os utilizadores.

    public void selectAllUsers() {
        final String query = "SELECT * FROM uprofile.user";
        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"));
        }
    }
    
  • Efetue uma consulta para obter as informações de um único utilizador.

    public void selectUser(int id) {
        final String query = "SELECT * FROM uprofile.user 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"));
    }
    

Atualizar a cadeia de ligação

Agora, regresse ao portal do Azure para obter as informações da cadeia de ligação e copie-as para a aplicação. Os detalhes da cadeia de ligação permitem que a aplicação comunique com a base de dados alojada.

  1. Na sua conta do Azure Cosmos DB no portal do Azure, selecione Cadeia de Ligação.

    Ver e copiar um nome de utilizador no portal do Azure, página Cadeia de ligação

  2. Utilize o botão no lado direito do ecrã para copiar o valor PONTO DE CONTACTO.

  3. Abra o ficheiro config.properties a partir da pasta C:\git-samples\azure-cosmosdb-cassandra-java-getting-started\java-examples\src\main\resources .

  4. Cole o valor do PONTO DE CONTACTO do portal em <Cassandra endpoint host> na linha 2.

    A linha 2 de config.properties deve agora ter um aspeto semelhante a

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

  5. Voltar para o portal e copie o valor USERNAME. Cole o valor do NOME DE UTILIZADOR do portal em <cassandra endpoint username> na linha 4.

    A linha 4 de config.properties deve agora ter um aspeto semelhante a

    cassandra_username=cosmos-db-quickstart

  6. Voltar para o portal e copie o valor PASSWORD. Cole o valor da PALAVRA-PASSE do portal em <cassandra endpoint password> na linha 5.

    A linha 5 de config.properties deve agora ter um aspeto semelhante a

    cassandra_password=2Ggkr662ifxz2Mg...==

  7. Na linha 6, se quiser utilizar um certificado TLS/SSL específico, substitua <SSL key store file location> pela localização do certificado TLS/SSL. Se não for fornecido um valor, é utilizado o certificado JDK instalado em <JAVA_HOME>/jre/lib/security/cacerts.

  8. Se alterou a linha 6 para utilizar um certificado TLS/SSL específico, atualize a linha 7 para utilizar a palavra-passe desse certificado.

  9. Guarde o ficheiro config.properties .

Executar a aplicação Java

  1. Na janela de terminal do git, cd para a pasta azure-cosmosdb-cassandra-java-getting-started.

    cd "C:\git-samples\azure-cosmosdb-cassandra-java-getting-started"
    
  2. Na janela de terminal do git, utilize o comando seguinte para gerar o ficheiro cosmosdb-cassandra-examples.jar.

    mvn clean install
    
  3. Na janela de terminal do git, execute o seguinte comando para iniciar a aplicação do Java.

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

    A janela de terminal apresenta notificações quando o keyspace e a tabela estão criados. A seguir, seleciona e devolve todos os utilizadores da tabela e apresenta a saída e, em seguida, seleciona uma linha por ID e apresenta o valor.

    Prima Ctrl+C para parar a execução do programa e fechar a janela da consola.

  4. No portal do Azure, abra o Data Explorer para consultar, modificar e trabalhar com estes dados novos.

    Ver os dados no Data Explorer – Azure Cosmos DB

Rever os SLAs no portal do Azure

O portal do Azure monitoriza o débito, armazenamento, disponibilidade, latência e consistência da conta do Azure Cosmos DB. Os gráficos para métricas associadas a um Contrato de Nível de Serviço (SLA) do Azure Cosmos DB mostram o valor SLA em comparação com o desempenho real. Este conjunto de métricas torna a monitorização dos SLAs transparente.

Para rever métricas e SLAs:

  1. Selecione Métricas no menu de navegação da sua conta do Azure Cosmos DB.

  2. Selecione um separador como Latência e selecione um período de tempo à direita. Compare as linhas Real e SLA nos gráficos.

    Conjunto de métricas do Azure Cosmos DB

  3. Reveja as métricas nos outros separadores.

Limpar os recursos

Quando terminar a aplicação e a conta do Azure Cosmos DB, pode eliminar os recursos do Azure que criou para não incorrer em mais custos. Para eliminar os recursos:

  1. Na barra de pesquisa portal do Azure, procure e selecione Grupos de recursos.

  2. Na lista, selecione o grupo de recursos que criou para este início rápido.

    Selecione o grupo de recursos a eliminar

  3. Na página Descrição geral do grupo de recursos, selecione Eliminar grupo de recursos.

    Eliminar o grupo de recursos

  4. Na janela seguinte, introduza o nome do grupo de recursos a eliminar e, em seguida, selecione Eliminar.

Passos seguintes

Neste início rápido, aprendeu a criar uma conta do Azure Cosmos DB com a API para Cassandra e a executar uma aplicação Java para Cassandra que cria uma base de dados e um contentor para Cassandra. Agora pode importar dados adicionais para a sua conta do Azure Cosmos DB.