50 votes

Meilleures pratiques NoSQL

Quelles sont les meilleures pratiques pour les Bases de données NoSQL, OODBs ou ce que d'autres acronymes peuvent exister pour eux?

Par exemple, j'ai souvent vu un champ "type" est utilisé pour déterminer la façon dont le DB document (dans couchDB/mongoDB) devrait être interprété par le client, l'application.

Le cas échéant, l'utilisation de PHP en tant que langue de référence. Lire: je suis aussi intéressé par la façon dont ces données peuvent être mieux traité sur le côté client, pas seulement strictement la structure DB. Cela signifie pratiquement que je suis également à la recherche de modèles comme "ORM"s pour SQL DBs (active record de mapper des données, etc).

N'hésitez pas de faire des déclarations au sujet de la façon dont un tel DB et les nouvelles fonctionnalités de PHP 5.3 pourrait mieux travailler ensemble.

38voto

Mark Embling Points 7337

Je pense qu'actuellement, l'idée de NoSQL magasins de données et la notion de document de bases de données est donc de nouveau et de différent à partir des idées qui lecteur relationnelle de stockage qu'il y a actuellement très peu (le cas échéant) les meilleures pratiques.

Nous savons à ce stade que les règles pour le stockage de vos données au sein dire CouchDB (ou tout autre document de la base de données) sont assez différentes de celles du relationnel. Par exemple, il est à peu près un fait que la normalisation et à l'objectif d'3FN n'est pas quelque chose que l'on devrait s'efforcer d'atteindre. L'un des exemples est celui d'un simple blog.

Dans un magasin relationnel, vous avez un tableau pour chaque "Poste", "Commentaires" et "Auteurs". Chaque Auteur de nombreux Postes, et chaque Post aurait beaucoup de Commentaires. C'est un modèle qui fonctionne assez bien, et les cartes de beau sur tout relationnel. Toutefois, le stockage les mêmes données dans un docDB serait le plus susceptible d'être assez différente. Vous auriez probablement quelque chose comme une collection d'afficher les documents, dont chacune aurait son propre Auteur et la collecte de Commentaires intégré. Bien sûr, ce n'est probablement pas la seule façon pour vous de le faire, et c'est un peu un compromis (maintenant l'interrogation d'un seul poste est rapide, vous ne faites qu'une opération et tout remettre), mais vous n'avez aucun moyen de maintenir la relation entre auteurs et des postes (puisque tout devient une partie de l'après document).

Moi aussi, j'ai vu des exemples de décisions utilisation d'un attribut "type" (dans un CouchDB exemple). Bien sûr, cela sonne comme une approche viable. Est-il le meilleur? Je n'ai pas la moindre idée. Certainement dans MongoDB que vous souhaitez utiliser séparée des collections au sein d'une base de données, le type de l'attribut non-sens total. Dans CouchDB si... peut-être que c' est mieux. Les autres alternatives? Bases de données distinctes pour chaque type de document? Cela semble un peu cinglé, alors je me penche vers le "type" de la solution moi-même. Mais c'est juste moi. Peut-être il y a quelque chose de mieux.

Je me rends compte que j'ai divaguait un peu ici et dit très peu, probablement rien de ce que vous ne connaissez pas déjà. Mon point est-ce que - je pense que c'est à nous de l'expérience avec les outils que nous avons et les données que nous travaillons avec et au fil du temps les bonnes idées se répandre et devenir les meilleures pratiques en la matière. Je pense juste que vous demandez un peu trop tôt dans le jeu.

7voto

Joel L Points 2209

"NoSQL" devrait plutôt concerner la construction du magasin de données pour répondre aux exigences de votre application, et non pas la construction de l'application pour suivre une certaine structure - cela ressemble davantage à une approche SQL traditionnelle.

Ne pas abandonner une base de données relationnelle "juste parce que"; ne le faites que si votre application en a vraiment besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X