As principais diferenças são o modelo de dados e os recursos de consulta.
Armazenamentos de valores-chave
O primeiro tipo é muito simples e provavelmente não precisa de nenhuma explicação adicional.
Modelo de dados: mais do que armazenamentos de valores-chave
Embora haja algum debate sobre o nome correto para bancos de dados como Cassandra, gostaria de chamá-los de lojas de família de colunas . Embora os pares de valores-chave sejam uma parte essencial do Cassandra, não se limita apenas a isso. Ele permite que você aninhe pares de valores-chave, de forma que uma chave possa se referir a vários pares de valores-chave.
No entanto, você não pode aninhar pares de valores-chave indefinidamente. Você está limitado a três níveis (famílias de colunas) ou quatro níveis de aninhamento (famílias de supercolunas). No caso do termo família de colunas não soar como um sino, consulte o WTF é um artigo do SuperColumn , é uma boa explicação do modelo de dados do Cassandra.
Bancos de dados de documentos , como CouchDB e MongoDB, armazenam documentos inteiros na forma de objetos JSON . Você pode pensar nesses objetos como pares de valores-chave aninhados. Ao contrário do Cassandra, você pode aninhar pares de valor-chave o quanto quiser. JSON também oferece suporte a matrizes e entende diferentes tipos de dados, como strings, números e valores booleanos.
Consultando
Acredito que as lojas de famílias de colunas só podem ser consultadas por chave ou escrevendo funções de redução de mapa. Você não pode consultar os valores como faria em um banco de dados SQL. Se seu aplicativo precisa de consultas mais complexas, ele terá que criar e manter índices para acessar os dados desejados.
Os bancos de dados de documentos também oferecem suporte a consultas por chave e funções de redução de mapa, mas também permitem que você faça consultas básicas por valor, como "Dê-me todos os usuários com mais de 10 postagens". Bancos de dados de documentos são mais flexíveis dessa maneira.