O CosmosDB é a oferta NoSQL da Microsoft que é exclusiva do Microsoft Azure. Costumava ser chamado de DocumentDB, mas o nome foi alterado e foram adicionados alguns novos recursos interessantes. Vamos nos aprofundar um pouco mais e explorar sua estratégia, documentação, o que os desenvolvedores têm falado sobre ele e como ele se compara ao Couchbase Capella.
Um banco de dados para governar todos eles?
A Microsoft afirma que o CosmosDB é um banco de dados NoSQL capaz de fazer literalmente tudo: É um banco de dados de documentos, armazenamento colunar, um armazenamento de valores-chave e um banco de dados de gráficos. Tudo isso é obtido graças a uma abstração do formato de dados chamada sequência de registro de átomos (ARS).
Vamos dar uma olhada em como os dados são organizados de acordo com cada modelo. Primeiro, você precisa escolher a API que gostaria de usar (SQL, API do MongoDB, Microsoft Azure Table, Cassandra ou Gremlin) e mantê-la, pois ela não pode ser alterada posteriormente. Mas, nos bastidores, parece ser uma formato JSON personalizado.
O CosmosDB está tentando competir com todos os principais bancos de dados NoSQL, o que pode ser uma estratégia arriscada. Por um lado, essa abordagem pode limitar os recursos que o CosmosDB pode oferecer. Há um único denominador comum, e isso não pode se desviar muito. Além disso, APIs como MongoDB e Cassandra não são definidas ou planejadas pela Microsoft. Isso significa que a Microsoft sempre estará se atualizando com as versões mais recentes e, em última análise, nunca alcançará a compatibilidade 100%. A Microsoft mantém documentação sobre quais recursos do MongoDB são suportados e quais não são (e a mesma coisa para Cassandra). Um tudo em um Uma solução como o CosmosDB pode ser boa para aplicativos simples com poucas demandas de funcionalidade, mas todas essas abstrações têm um custo e, em última análise, afetarão a simplicidade, o desempenho e serão limitadas em termos de recursos.
Couchbase vs CosmosDB - Comparando maçãs com "maçãs"
Essa comparação se concentrará principalmente nos cenários que fazem sentido para comparar as duas tecnologias (por exemplo, o Couchbase não é um banco de dados de gráficos, portanto, a comparação não faria sentido).
Uma outra observação importante: o Couchbase Capella é a oferta de DBaaS (banco de dados como serviço) do Couchbase, disponível no AWS e no GCP (em breve também no Azure). Ele é basicamente uma versão gerenciada do Couchbase Server, que ainda está disponível para download, portanto, são muito semelhantes. Salvo indicação em contrário, a coluna "Couchbase" se aplica tanto ao Capella quanto ao Server.
Recurso | CosmosDB | Couchbase Capella |
Licenciamento | Proprietário, de código fechado, mas está disponível em versão gratuita. | Teste gratuito disponível para o Capella, Couchbase Community e Enterprise disponíveis para download, BSL |
Tipo |
|
|
Modelo |
|
|
Pesquisa |
|
|
Indexação |
|
|
Integridade dos dados | Cinco opções estão disponíveis na configuração:
|
|
Escalabilidade | Altamente escalável | Altamente escalável |
Celular | Não há planos para o CosmosDB para celulares ou dispositivos ou qualquer suporte off-line |
|
Implantação | Somente Azure, totalmente gerenciado.
Há uma versão de desenvolvimento disponível (atualmente somente para Windows). |
Pode ser implantado em qualquer lugar, incluindo Azure, no local, Kubernetes, Docker, VM, bare-metal.
O Couchbase Capella oferece um DBaaS totalmente gerenciado |
Travamento | Bloqueio otimista e pessimista disponível | Bloqueio otimista e pessimista disponível |
Backup e restauração | Modo de backup contínuo por 30 dias
Modo de backup periódico (padrão) |
Automático backup e restauração serviço com assistente de backup configurável
Backup contínuo disponível usando o XDCR |
Consulta | Com base no modo escolhido.
Exemplo 1: a API do SQL é um subconjunto extremamente limitado do SQL padrão Exemplo 2: a API do MongoDB é um subconjunto não 100% da API do Mongo |
Implementação completa de SQL chamado SQL++ (com JOIN, agregação, CTE, funções de janela, operações CRUD, etc.) - anteriormente conhecido como "N1QL" |
Replicação de data center | Replicação mestre-mestre global por botão entre os data centers do Azure compatíveis | XDCR permite qualquer combinação de replicação unidirecional e bidirecional entre qualquer implantação do Couchbase, incluindo filtragem de dados |
Velocidade/desempenho | Só é possível obter mais velocidade e desempenho aumentando a RUsque, muitas vezes, é proibitivamente caro | Operações de leitura e gravação que priorizam a memória.
Camada de cache integrada. Pode ser ajustado aumentando a memória, o disco ou adicionando um novo nó. Índices otimizados para memória disponíveis |
Sharding / particionamento | As chaves de partição devem ser criadas e gerenciadas manualmente, exigindo um especialista dedicado para definir e projetar corretamente a fim de atingir as metas de desempenho/escala | Sharding é completamente automático |
Arquitetura | Desconhecido / proprietário | Cada nó é um mestre no Couchbase, fazendo uso mais eficiente dos recursos |
SDKs compatíveis | .NET (principal, mais completo em termos de recursos)
Outros SDKs:
(Outros por meio do Mongo/Cassandra) |
.NETC / C++
Ir Java Node.js PHP Python Rubi Scala Kotlin |
Sucesso no mundo real
Essa comparação lado a lado pode favorecer o Couchbase, mas o que dizer das experiências reais de uma organização que estava usando o CosmosDB e passou a usar o Couchbase?
A Facet Digital reduziu os custos de seu banco de dados por 50%, e melhorou seu desempenho em 100 vezes ao mudar para o Couchbase Capella.
Como isso foi possível?
- Tempo de implementação mais rápido
- Fácil integração de pesquisa
- Indexação mais rápida
- Melhor automação de DevOps (definições de índice de CI/CD)
- Sintaxe SQL familiar e completa
Resumo
O CosmosDB tem uma visão única, mas como consequência natural da criação de algo que se concentra em vários campos ao mesmo tempo, o suporte do CosmosDB para todos os recursos desejados pode ser desigual.
Um dos recursos mais importantes é a capacidade de escolher entre vários níveis de consistência eventual: Estabilidade limitada, Sessão, Prefixo consistente e Eventualmente consistente. O fato de que Sessão é definido como a consistência padrão diz muito sobre a maneira recomendada de usar o CosmosDB. Isso pode significar que ele pode não ser a melhor solução se você precisar de uma forte consistência de dados (e talvez a Microsoft queira direcioná-lo de volta ao seu principal banco de dados, o SQL Server).
O fato de priorizar a memória é um dos motivos pelos quais o Couchbase é tão rápido. O CosmosDB tem um cache integrado (atualmente em versão prévia), mas, como no caso da pesquisa, é um produto separado que deve ser adicionado. O Couchbase tem priorizado a memória desde sua criação.
Com o CosmosDB, todos os campos são indexados em seus índices secundários globais (GSI). Isso parece um exagero. Pode ser mais fácil especificar quais campos indexar do que especificar quais campos não para indexar. Assim que seu JSON se tornar muito maior do que um punhado de propriedades (e especialmente ao aninhar objetos JSON), esses índices serão definitivamente um exagero, com os custos repassados por padrão. Um número excessivo de índices significa um número excessivo de RUs, o que significa um número excessivo de dólares.
A fragmentação parece ser uma das coisas mais complicadas no CosmosDB. As partições são movidas automaticamente entre os nós, mas você ainda precisa especificar uma chave de partição. Uma desvantagem dessa abordagem é que cada partição é indivisível com um tamanho máximo de 10 Gb. Se você escolher uma chave de partição ruim, muitos documentos acessados com frequência podem acabar na mesma partição, o que limita a taxa de transferência de suas leituras/gravações pela capacidade do nó em que a partição está armazenada.
A chave de partição também é imutável, portanto, para alterá-la, será necessário copiar todos os dados para outra coleção. No Couchbase, os documentos são distribuídos igualmente entre os vBuckets para evitar esse problema e também para aumentar seu desempenho de leitura/gravação.
Com o CosmosDB, a aceleração é feita apenas pelo aumento das unidades de solicitação (RUs). O desafio dessa abordagem é que ela não é um indicador muito bom do desempenho da consulta e torna ainda mais difícil aumentar um específico como aumentar apenas a capacidade de gravação. Em alguns casos de uso, pode ser que uma equipe precise de uma pessoa para trabalhar com as RUs em tempo integral para descobrir e manter as consultas adequadamente.
A Microsoft tem se esforçado muito para tentar tornar as RUs mais fáceis de entender, mas é comum que os desenvolvedores subestimem suas RUs (consulte aqui ou aqui) e eles acabam tendo que pagar uma conta muito maior do que o esperado. No Couchbase, a aceleração é muito flexível e pode ser feita por meio de escalonamento vertical e/ou horizontal, executando serviços específicos de acordo com o hardware do nó, mantendo os índices na memória etc.
O CosmosDB também oferece uma distribuição global de dados com botão de pressão que simplifica muito a replicação de dados em vários data centers em todo o mundo. No entanto, isso também pode ser feito facilmente em questão de minutos no Couchbase Server, sem a limitação de ser executado somente no Azure.
O benchmarking é difícil, devido ao modelo de RUs do CosmosDB, mas um benchmark de terceiros usando a abordagem YCSB mostra a clara vantagem do Couchbase Capella em termos de taxa de transferência e latência.
O preço do CosmosDB é atraente se você tiver um banco de dados pequeno com poucas leituras/gravações por segundo. Mas qualquer coisa acima disso pode custar muito caro. A calculadora de preços do CosmosDB mostra que, com uma combinação de 50/50 de leituras e gravações, além de um punhado de consultas por segundo, pode chegar a milhares por mês. O CosmosDB fornece um Calculadora útilmas não é confiável, devido à dificuldade de prever as RUs (conforme mencionado anteriormente). Além disso, a calculadora não considera o modelo de consistência que você vai usar, portanto, é preciso adicionar alguns dólares a mais a esse número para a consistência forte.
Preços do Couchbase Capella é muito mais previsível e, com frequência, terá um custo menor, especialmente para casos de uso maiores e de missão crítica.