Temel farklılıklar veri modeli ve sorgulama yetenekleridir.
Anahtar-değer mağazaları
İlk tür çok basittir ve muhtemelen daha fazla açıklamaya gerek yoktur.
Veri modeli: anahtar-değer depolarından daha fazlası
Cassandra gibi veritabanları için doğru isim konusunda bazı tartışmalar olsa da, onlara sütun ailesi mağazaları olarak adlandırmak istiyorum . Anahtar / değer çiftleri Cassandra'nın önemli bir parçası olsa da, bununla sınırlı değil. Anahtar / değer çiftlerini iç içe yerleştirmenize olanak tanır, böylece bir anahtar birden çok alt anahtar / değer çiftine başvurabilir.
Yine de anahtar / değer çiftlerini süresiz olarak iç içe yerleştiremezsiniz. Üç düzey (sütun aileleri) veya dört yuvalama düzeyi (süper sütun aileleri) ile sınırlandırılırsınız. Sütun ailesi terimi bir zil çalmazsa , bkz. WTF bir SuperColumn makalesidir, Cassandra'nın veri modelinin iyi bir açıklamasıdır.
CouchDB ve MongoDB gibi belge veritabanları , tüm belgeleri JSON nesneleri biçiminde depolar . Bu nesneleri yuvalanmış anahtar / değer çiftleri olarak düşünebilirsiniz. Cassandra'nın aksine, anahtar / değer çiftlerini istediğiniz kadar iç içe yerleştirebilirsiniz. JSON ayrıca dizileri destekler ve dizeler, sayılar ve boole değerleri gibi farklı veri türlerini anlar.
Sorgulama
Sütun ailesi mağazalarının yalnızca anahtarla veya harita azaltma işlevleri yazarak sorgulanabileceğine inanıyorum. Değerleri bir SQL veritabanında olduğu gibi sorgulayamazsınız. Uygulamanızın daha karmaşık sorgulara ihtiyacı varsa, uygulamanızın istenen verilere erişmek için dizinler oluşturması ve sürdürmesi gerekecektir.
Belge veritabanları anahtar ve harita azaltma işlevlerine göre sorguları destekler, ancak aynı zamanda "Bana 10'dan fazla gönderi olan tüm kullanıcıları ver" gibi değere göre temel sorgular yapmanıza da olanak tanır. Belge veritabanları bu şekilde daha esnektir.