2013-09-21 5 views
2

Maintenant, je veux concevoir une base de données, et il y aura quelques tables dans certains attributs dynamiques. Je peux choisir un SGBD traditionnel comme MySQL pour les implémenter avec le modèle de conception EAV. Mais maintenant je veux essayer quelque chose de nouveau. J'ai entendu que la base de données NoSQL peut résoudre le problème des attributs dynamiques de manière simple, et je veux en choisir un entre MongoDB et Cassandra.Comment choisir la base de données entre MongoDB et Cassandra

Et voici quelques situations sur la base de données que je veux concevoir:

Il y aura environ 200 000 articles dans cette base de données et la base de données seront stockées dans un seul serveur. Lorsqu'un utilisateur souhaite utiliser cette base de données, la procédure principale est la suivante: l'utilisateur doit d'abord consulter la table A, la clé étrangère de la table B, puis consulter la table B et obtenir une clé étrangère du tableau C. Tableau C a beaucoup d'attributs fixes et quelques attributs dynamiques. Ensuite, l'utilisateur obtiendra un tuple à partir de la table C, lire certaines valeurs et ensuite modifier certaines valeurs de ce tuple, et peut ajouter quelques valeurs dynamiques de ce tuple. Je voudrais importer la quasi-totalité de ces tuples à partir d'une feuille de calcul Excel dans ma base de données en Java. Alors, lequel a un meilleur support pour Java? Après l'importation de ces données, il n'y aura plus d'opérations d'insertion ou de suppression. Presque toutes les opérations pour les utilisateurs externes sont lues et mises à jour. Alors quelle base de données est la meilleure pour ce scénario.

Je sais qu'il n'est pas nécessaire d'utiliser une base de données NoSQL dans ce petit projet, mais je veux vraiment essayer d'en apprendre une récemment. Alors merci pour vos réponses, et si vous avez d'autres options pour moi, ce serait très bien.

+0

Il est vraiment difficile de donner une bonne réponse, « un meilleur soutien » est très subjective. Le véritable problème que vous devez résoudre est de savoir quelle base de données correspond le mieux à vos besoins de stockage. – WiredPrairie

Répondre

2

Il n'y a pas de réponse évidente étant donné les informations que vous avez fournies.

Vous avez décrit des modèles de requête en termes de tables, de jointures et de clés étrangères. Au début, je conseillerais de penser s'il est possible de faire de l'intégration de données, plutôt que de faire référence entre les tables.

http://docs.mongodb.org/manual/core/data-modeling/

Pour notre projet stade précoce, nous avons choisi MongoDB et malgré nous déménageons certaines choses à Cassandra maintenant, je ne regrette pas de faire ce choix.

Mongo est vraiment simple, flexible. Très facile à développer, appliquer des changements de schéma, interroger. Il pardonne beaucoup. Je dirais que c'est presque inestimable pour les nouveaux arrivants NoSQL.

Cassandra est beaucoup plus avancé. Cela nécessite plus de réflexion sur la conception de schéma et les modèles de requête. L'évolutivité horizontale est l'un des meilleurs du marché NoSQL. Cassandra a aussi un gros avantage dans les opérations d'écriture.

De nombreux utilisateurs Mongodb viennent alors deux Cassandra. Mais seulement dans le cas où il existe de réelles raisons de performance et d'évolutivité

Mais puisque vous allez avoir une installation sur une seule machine - mongodb pourrait être suffisant. Il a une très bonne performance de lecture alors que les données correspondent à la RAM.

Ces deux bases de données disposent de pilotes bien pris en charge.

https://github.com/mongodb/mongo-java-driver

Pour Cassandra, il vaut la peine se référant au nouveau pilote DataStax

https://github.com/datastax/java-driver

Je sais qu'il est pas nécessaire d'utiliser une base de données NoSQL dans ce petit projet , mais je veux vraiment essayer et en apprendre un récemment.

Je recommande MongoDB puis ...

+0

Merci! C'est ce que je veux. Je pense que je peux simplement utiliser MongoDB pour construire la base de données parce que le but principal est maintenant d'importer toutes ces données et de mettre à jour quelques tuples. Comme la structure de la base de données n'est pas très complexe, je peux passer à Cassandra si nous avons vraiment besoin de très hautes performances et d'évolutivité. – Jane

Questions connexes