Escolher uma API no Azure Cosmos DB
APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin Table PostgreSQL
O Azure Cosmos DB é um banco de dados NoSQL, relacional e vetorial totalmente gerenciado para o desenvolvimento de aplicativos modernos. O Azure Cosmos DB remove a administração do banco de dados de suas mãos com o gerenciamento, as atualizações e a aplicação de patches automáticos. Ele também lida com o gerenciamento de capacidade com opções econômicas de escala automática e sem servidor que respondem às necessidades do aplicativo para corresponder à capacidade com demanda.
APIs do Azure Cosmos DB
O Azure Cosmos DB oferece várias APIs de banco de dados, que incluem NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Tabela. Usando essas APIs, você pode modelar dados do mundo real usando modelos de dados de família de colunas, documentos, chave-valor e grafo. Essas APIs permitem que seus aplicativos tratem o Azure Cosmos DB como se ele fosse várias outras tecnologias de bancos de dados, sem a sobrecarga do gerenciamento e das abordagens de escala. O Azure Cosmos DB ajuda você a usar os ecossistemas, as ferramentas e as habilidades que já tem para modelagem e consulta de dados com as diferentes APIs.
Todas as APIs oferecem escala automática de armazenamento e taxa de transferência, flexibilidade e garantias de desempenho. Não há uma API melhor, e você pode escolher qualquer uma delas para criar seu aplicativo. Este artigo ajudará você a escolher uma API de acordo com sua carga de trabalho e seus requisitos de equipe.
Considerações a serem feitas ao escolher uma API
A API para NoSQL é nativa do Azure Cosmos DB.
A API para MongoDB, PostgreSQL, Cassandra, Gremlin e Tabela implementam o protocolo de transmissão de mecanismos de banco de dados de código aberto. Essas APIs serão mais adequadas se as seguintes condições forem verdadeiras:
- Se você já tiver aplicativos do MongoDB, do PostgreSQL, do Cassandra ou do Gremlin
- Você não quer regenerar toda a camada de acesso a dados
- Você quer usar o ecossistema de desenvolvedores de código aberto, os drivers de cliente, os conhecimentos e os recursos de seu banco de dados
- Você quer usar os principais recursos do Azure Cosmos DB, como:
- Distribuição global
- Escala elástica de armazenamento e taxa de transferência
- Alto desempenho em escala
- Baixa latência
- Capacidade de executar cargas de trabalho transacionais e analíticas
- Plataforma totalmente gerenciada
- Você está desenvolvendo aplicativos modernizados em um ambiente multinuvem
Você pode criar aplicativos com essas APIs ou migrar seus dados existentes. Para executar os aplicativos migrados, altere a cadeia de conexão do aplicativo e continue a execução como antes. Ao migrar os aplicativos existentes, avalie o suporte a recursos dessas APIs.
Com base na carga de trabalho, você precisa escolher a API que atende às suas necessidades. A seguinte imagem mostra um fluxograma sobre como escolher a API certa ao criar aplicativos ou migrar os aplicativos existentes para o Azure Cosmos DB:
Diagrama da árvore de decisão para escolha de uma API no Azure Cosmos DB. Metade do diagrama ilustra quantas cargas de trabalho de banco de dados de software livre existentes podem usar as APIs correspondentes para o Azure Cosmos DB. A outra metade do diagrama ilustra como novos aplicativos podem usar a API para NoSQL ou usar suas habilidades existentes com APIs para bancos de dados de software livre.
API de NoSQL
A API do Azure Cosmos DB para NoSQL armazena dados em formato de documento. Ela oferece a melhor experiência de ponta a ponta, pois temos controle total sobre a interface, o serviço e as bibliotecas de cliente do SDK. Qualquer novo recurso distribuído para o Azure Cosmos DB fica disponível primeiro nas contas da API para NoSQL. As contas de NoSQL dão suporte para consulta de itens usando a sintaxe de linguagem SQL, uma das mais conhecidas e populares linguagens de consulta de objetos JSON. Para saber mais, confira o módulo de treinamento API do Azure Cosmos DB para NoSQL e o artigo Introdução a consultas SQL.
Se você está migrando de outros bancos de dados como Oracle, DynamoDB, HBase etc. e quer usar as tecnologias modernizadas para criar aplicativos, a API para NoSQL é a opção recomendada. A API para NoSQL dá suporte à análise e oferece isolamento de desempenho entre cargas de trabalho operacionais e analíticas.
API para MongoDB
A API do Azure Cosmos DB para MongoDB armazena dados em uma estrutura de documentos, por meio do formato BSON. Ela é compatível com o protocolo de transmissão do MongoDB, mas não usa nenhum código nativo relacionado ao MongoDB. A API para MongoDB é uma ótima opção quando você deseja usar o ecossistema e as habilidades mais amplos do MongoDB sem comprometer o uso de recursos do Azure Cosmos DB.
Os recursos que o Azure Cosmos DB fornece e que você não precisa comprometer incluem:
- Scaling
- Alta disponibilidade
- Replicação geográfica
- Vários locais de gravação
- Gerenciamento de fragmentos automático e transparente
- Replicação transparente entre repositórios operacionais e analíticos
Você pode usar seus aplicativos existentes do MongoDB com a API para MongoDB apenas alterando a cadeia de conexão. Você pode mover os dados existentes usando as ferramentas nativas do MongoDB, como mongodump e mongorestore, ou nossa ferramenta de migração de banco de dados do Azure. Ferramentas, como o shell do MongoDB, o MongoDB Compass e o Robo3T, podem executar consultas e trabalhar com os dados como fazem com o MongoDB nativo. Para saber mais, confira o artigo API para MongoDB.
API para PostgreSQL
O Azure Cosmos DB for PostgreSQL é um serviço gerenciado para executar o PostgreSQL em qualquer escala, com a superpotência das tabelas distribuídas do Citus de código aberto. Ele armazena os dados em um único nó ou os distribui em uma configuração de diversos nós.
O Azure Cosmos DB for PostgreSQL foi criado no PostgreSQL nativo, em vez de em uma bifurcação do PostgreSQL, e permite escolher as principais versões de banco de dados com suporte da comunidade do PostgreSQL. É ideal para começar em um banco de dados de nó único com indexação avançada, recursos geoespaciais e suporte a JSONB. Mais tarde, se precisar de mais desempenho, você poderá adicionar nós ao cluster sem tempo de inatividade.
Se você precisa de um banco de dados relacional, de código aberto, gerenciado e com alto desempenho e replicação geográfica, o Azure Cosmos DB for PostgreSQL é a escolha certa para você. Para saber mais, confira a Introdução ao Azure Cosmos DB for PostgreSQL.
API para Apache Cassandra
A API do Azure Cosmos DB para Cassandra armazena dados em um esquema orientado por colunas. O Apache Cassandra oferece uma abordagem de escala horizontal altamente distribuída para armazenar grandes volumes de dados, oferecendo uma abordagem flexível a um esquema orientado a colunas. A API para Cassandra no Azure Cosmos DB alinha-se a essa filosofia de abordagem de bancos de dados NoSQL distribuídos. Essa API para Cassandra é compatível, em termos do protocolo de transmissão, com o Apache Cassandra nativo. Considere a API para Cassandra quando você deseja se beneficiar da elasticidade e da natureza totalmente gerenciada do Azure Cosmos DB e ainda usar a maioria dos recursos, as ferramentas e o ecossistema nativos do Apache Cassandra. Essa natureza totalmente gerenciada significa que, na API para Cassandra, você não precisa gerenciar o sistema operacional, a VM do Java, o coletor de lixo, o desempenho de leitura/gravação, os nós, os clusters etc.
Você pode usar drivers de cliente do Apache Cassandra para se conectar à API pata Cassandra. A API para Cassandra permite interagir com os dados usando CQL (Linguagem de Consulta do Cassandra), bem como ferramentas como o shell do CQL e os drivers de cliente do Cassandra com os quais você já está familiarizado. Atualmente, a API para Cassandra dá suporte apenas a cenários de OLTP. Usando a API para Cassandra, você também pode usar os recursos exclusivos do Azure Cosmos DB, como o feed de alterações. Para saber mais, confira o artigo API para Cassandra. Para obter mais informações se você já está familiarizado com o Apache Cassandra, mas é novo no Azure Cosmos DB, veja como se adaptar à API para Cassandra.
API para Apache Gremlin
A API do Azure Cosmos DB para Gremlin permite que os usuários façam consultas de grafo e armazenem dados como bordas e vértices.
Use a API para Gremlin para cenários:
- Envolvendo dados dinâmicos
- Envolvendo dados com relações complexas
- Envolvendo dados complexos demais para serem modelados com bancos de dados relacionais
- Se você deseja usar o ecossistema e as habilidades existentes do Gremlin
A API para Gremlin combina o poder dos algoritmos de banco de dados de grafo com a infraestrutura gerenciada altamente escalonável. Essa API fornece uma solução exclusiva e flexível para problemas de dados comuns associados à falta de flexibilidade e às abordagens relacionais. Atualmente, a API para Gremlin dá suporte apenas a cenários de OLTP.
A API para Gremlin é baseada na estrutura de computação de grafo Apache TinkerPop. Ela usa a mesma linguagem de consulta do Graph para ingerir e consultar dados. Ela usa a estratégia de partição do Azure Cosmos DB para executar as operações de leitura/gravação do mecanismo de banco de dados do Graph. A API para Gremlin tem suporte para protocolo de transmissão com o Gremlin de código aberto, portanto, você pode usar os SDKs do Gremlin de código aberto para criar seu aplicativo. A API para Gremlin também funciona com o Apache Spark e o GraphFrames em cenários de grafos analíticos complexos. Para saber mais, confira o artigo API para Gremlin.
API para Tabela
A API do Azure Cosmos DB para Tabela armazena dados no formato chave/valor. Se estiver usando o Armazenamento de Tabelas do Azure, você poderá ver algumas limitações de latência, escala, taxa de transferência, distribuição global, gerenciamento de índice e baixo desempenho de consulta. A API para Tabela supera essas limitações, e recomendamos migrar seu aplicativo se você deseja usar os benefícios do Azure Cosmos DB. A API para Tabela dá suporte apenas a cenários de OLTP.
Os aplicativos escritos para o Armazenamento de Tabelas do Azure podem ser migrados para a API para Tabela com poucas alterações de código e aproveitar as funcionalidades premium. Para saber mais, confira o artigo API para Tabela.
Planejamento de capacidade ao migrar dados
Tentando fazer o planejamento de capacidade para uma migração para o Azure Cosmos DB for NoSQL ou MongoDB de um cluster de banco de dados existente? Você pode usar informações sobre o cluster de banco de dados existente para fazer isso.
- Para obter mais informações sobre como estimar as unidades de solicitação quando tudo o que você sabe é o número de vCores e servidores no cluster fragmentado e replicado de banco de dados existente, leia sobre estimar unidades de solicitação usando vCores ou vCPUs.
- Para obter mais informações sobre como estimar unidades de solicitação quando você conhece as taxas de solicitação típicas para a carga de trabalho de banco de dados atual, consulte planejador de capacidade para a API para NoSQL e a API para MongoDB