2011-07-22 4 views
4

J'ai une table de données composée d'un grand nombre (disons, un milliard) de vecteurs [ x1, x2, x3 ] et je veux poser des questions OLAP typiques comme "pour tous les vecteurs avec x1 dans une plage donnée, quelle est la valeur moyenne de v3? " Contrairement à vrai OLAP, les questions ne sont pas ad-hoc: Je n'ai qu'une poignée de questions prédéfinies.Comment est CouchDB à OLAP?

Dans une base de données SQL, vous pouvez dire que si les colonnes ne sont pas indexées, l'espace requis est O (n), tout comme l'heure; l'indexation vous donne O (log n) pour le temps au prix de O (n log n) pour l'espace.

Donc, CouchDB est-il à peu près équivalent, en termes de performances? Beaucoup mieux? Bien pire?

+0

Si vous avez une poignée de requêtes ET que vous pouvez les exprimer avec Map/Reduce, le divan sera plus rapide car la valeur de v3 serait précalculée et la réponse mise à jour à chaque mise à jour. Je le mets en commentaire parce que je n'ai pas fait ce style particulier dans la pratique et j'espère que quelqu'un d'autre avec de l'expérience y répondra. – manku

+0

Cette question est très similaire à http://stackoverflow.com/questions/1296741/performance-benchmark-couchdb-x-relational-databases – Soren

Répondre

4

CouchDB sera généralement pire si vous voulez faire des requêtes ad-hoc, et mieux si vous avez des requêtes pré-cuites.

Ceci est juste un point technique sur CouchDB, pas NOSQL vs. SQL.

CouchDB est un peu plus lent dans les requêtes ad-hoc, ce qui nécessite des scans de table. Cependant, les vues sont mises à jour de manière incrémentielle lorsque vous ajoutez des données de manière incrémentielle, ce qui permet de conserver des éléments tels que "Somme", "Compte" ou tout autre élément pouvant être réduit par carte.

+3

+1 very pithy. La façon dont je le dis, SQL est bon quand vous en savez plus sur les données et moins sur les questions que vous poserez; CouchDB est bon quand vous en savez moins sur les données et plus sur les questions que vous posez. – JasonSmith