2010-07-16 8 views
3
  1. Puis-je savoir dans 'nosql' il y a une limitation comme bigtable où nous devrions 'dénormaliser' notre table/entité?BigTable vs noSQL

  2. tout emballage api qui nous permet d'écrire du code une fois et peut être utilisé pour google app engine bigtable et nosql? (Quelque chose comme hiberanate)

+1

bigtable * est * un exemple de base de données nosql. bien sûr, "nosql" n'a pas de définition précise de toute façon :) –

Répondre

3

Oui, par exemple dans MongoDB vous n'avez pas rejoint, car il est non-relationnelle, donc il ne change la façon dont nous stockons et parcourir les données.

Comme MongoDB est non-relationnelle (pas rejoint), les références ("clés étrangères") entre documents sont généralement résolus côté client par supplémentaires requêtes au serveur. Deux conventions sont communs pour les références dans MongoDB: premières références manuelles simples, et deuxième, la norme DBRef, que de nombreux pilotes prennent en charge explicitement.

Il semble que le consensus est de dénormaliser et en double pour accélérer le lit pour éviter le coût de l'adhésion des données distribuées tous toghether, avec la jointure et la fusion logique fait au niveau de l'application. Quant à savoir s'il est absolument nécessaire de dénormaliser la base de données, je ne suis pas sûr (d'autres membres de l'OS peuvent probablement nous éclairer). Mais je pense que la base de données devrait être modélisée avec ces "limitations" dans l'esprit avec une bonne étude de comment les données vont être interrogées. Cela devrait donner la moindre impédance au processus.

Voir aussi:

Bigtable database design theory

GAE - How to live with no joins?


Toute wrapper API qui permettent nous d'écrire code une seule fois et peut être utilisé pour le moteur Google App BigTable et nosql? (quelque chose comme Hibernate)

JDO est datastore-agnostique, il pourrait simplement fournir ce que vous voulez dans une certaine mesure.

Il semble qu'il y ait beaucoup de projets récents pour utiliser JDO et JPA avec des produits "NoSQL".

Voir:

Datanucleus-Cassandra

Datanucleus-Cassandra-Plugin

+0

Vous pouvez également ajouter un autre plugin DataNucleus Cassandra http://github.com/tnine/Datanucleus-Cassandra-Plugin L'idée est que ceux-ci seront fusionnés à un stade ultérieur (celui que je cite comprend certaines choses de la version de Pedro Gomes). – DataNucleus

2

Toute wrapper API qui permettent nous d'écrire du code une fois et peut être utilisé pour le moteur Google App BigTable et NoSQL?(quelque chose comme Hibernate)

Alors que les bibliothèques d'abstraction aident définitivement à la portabilité, vous devez prendre en compte la plate-forme particulière sur laquelle vous travaillez. Si vous voulez utiliser Google App Engine, vous devez connaître le incurred startup costs inherent with additional abstraction libraries.

Vous devriez peser les avantages et les inconvénients de l'utilisation de quelque chose comme JDO ou JPA. Jetez également un coup d'œil au Objectify library qui offre une interface plus native qui présente l'inconvénient d'être couplée à la banque de données App Engine.

+0

Je ne connais pas de bibliothèque de wrapper abstraite existe – cometta