2010-02-12 13 views
1

Comment puis-je implémenter un schéma de base de données relationnelle important dans un magasin de valeurs clés?Comment puis-je implémenter un schéma de base de données relationnelle important dans un magasin de valeurs de clé de base?

Voici les exigences:

1) utilise pas les procédures stockées ou fournisseur de base de données spéciale caractéristiques spécifiques

2) utilise les index

3) Utilise rejoint

4) De nombreux complexes types dans les tables (VARCHAR, INT, BLOB, etc)

5) Des milliards d'enregistrements

6) recherche plein texte

7) sauvegarde horodatés possible

8) Transactions non nécessaire (seule atomique rangée/mises à jour sur le terrain uniquement)

+0

Ça me semble être une très mauvaise idée. Vous avez évidemment besoin de beaucoup de fonctionnalités RDBMS, alors s'il vous plaît, pour l'amour de Dieu, utilisez un RDMBS. –

+0

J'ai essayé le SGBDR, mais les performances commencent vraiment à atteindre ce niveau après quelques dizaines de millions de lignes. Le problème est que nous devons faire du sharding et beaucoup d'autres trucs spéciaux qui finissent par coûter très cher en raison de la complexité de la création de ces solutions et de la maintenance. Je suppose qu'il n'y a pas d'alternatives à un SGBDR alors. – Zubair

Répondre

1

Vous devrez, en substance, construire votre propre système de base de données relationnelle. Sans cela, les jointures seront horriblement lentes (pas d'optimiseur de requêtes). Vous pouvez obtenir une recherche en texte intégral en greffant sur Lucene.

Avez-vous considéré un SGBDR open source (par exemple, Derby)?

+0

J'ai jeté un coup d'œil à Derby, mais il ne s'échelonne pas sur plusieurs nœuds – Zubair

+0

Eh bien, je n'ai pas besoin de transactions, ce qui constitue une grande partie de ce que font les bases de données. Mais Lucene a l'air d'avoir une place dans ce que je veux faire. – Zubair

+0

@Zubair L'optimisation des requêtes est une autre grande partie de ce qu'ils font. Si vous n'avez que des jointures simples, vous n'en aurez peut-être pas besoin. – bmargulies

1

Souvent, le but d'un magasin de valeurs-clés est de s'éloigner des contraintes des bases de données relationnelles, mais on dirait que vous voulez les récupérer ici. Tout le monde veut avoir son gâteau et le manger aussi, mais je suis confus au sujet de ce que vous essayez d'accomplir ici. Si vous voulez la puissance d'une base de données relationnelle, vous devez utiliser une base de données relationnelle.

Cela dit, vous voudrez peut-être jeter un oeil à MongoDB, ce qui représente un très bon compromis entre la nature rigide, structuré de bases de données relationnelles et l'approche plus libre sous forme d'un magasin clé-valeur.

+0

Oui, j'ai vu Mongo. En ce moment, je vois MongoDB, Cassandra et Riak comme prétendants possibles. Mais je dois toujours utiliser des pratiques solides quel que soit le magasin que je choisis. – Zubair

+0

Et, oui, je veux mon gâteau et le manger :) – Zubair