Meilleures pratiques NoSQL

Quelles sont les meilleures pratiques pour les bases de données NoSQL, les OODB ou tout autre acronyme pouvant exister pour eux?

Par exemple, j’ai souvent vu un champ “type” être utilisé pour décider comment le document de firebase database (dans les termes couchDB / mongoDB) devait être interprété par le client, l’application.

Le cas échéant, utilisez PHP comme langage de référence. Lire: Je suis également intéressé par la manière dont ces données peuvent être mieux traitées du côté client, pas uniquement la structure de la firebase database. Cela signifie pratiquement que je recherche également des modèles tels que “ORM” pour les bases de données SQL (enregistrement actif, mappeur de données, etc.).

N’hésitez pas à faire des déclarations sur la manière dont une telle firebase database et les nouvelles fonctionnalités de PHP 5.3 pourraient fonctionner ensemble.

Je pense qu’à l’heure actuelle, l’idée générale des magasins de données NoSQL et du concept de bases de données documentaires est tellement nouvelle et différente des idées établies qui conduisent au stockage relationnel qu’il existe actuellement très peu de bonnes pratiques (voire aucune).

Nous soaps à ce stade que les règles de stockage de vos données, disons CouchDB (ou toute autre firebase database de documents), sont plutôt différentes de celles d’une relation. Par exemple, il ne fait aucun doute que la normalisation et la recherche de 3NF ne devraient pas être recherchées. Un des exemples les plus courants serait celui d’un simple blog.

Dans un magasin relationnel, vous disposeriez chacun d’un tableau pour “Posts”, “Comments” et “Authors”. Chaque auteur aurait de nombreux messages et chaque message aurait de nombreux commentaires. Ceci est un modèle qui fonctionne assez bien, et cartographie bien sur toute firebase database relationnelle. Cependant, le stockage des mêmes données dans un docDB serait probablement très différent. Vous auriez probablement quelque chose comme une collection de documents Post, chacun ayant son propre auteur et une collection de commentaires intégrés. Bien sûr, ce n’est probablement pas la seule façon de le faire, et c’est un peu un compromis (maintenant l’interrogation d’un seul article est rapide – vous ne faites qu’une seule opération et récupérez tout), mais vous n’avez aucun moyen de maintenir la relation entre les auteurs et les publications (car tout devient partie intégrante du document de publication).

J’ai aussi vu des exemples utilisant un atsortingbut “type” (dans un exemple CouchDB). Bien sûr, cela semble être une approche viable. Est-ce le meilleur? Je n’ai pas la moindre idée Certainement, dans MongoDB, vous utiliseriez des collections séparées dans une firebase database, ce qui rendait le type d’atsortingbut totalement insensé. En CouchDB cependant … c’est peut-être mieux. Les autres alternatives? Séparer les bases de données pour chaque type de document? Cela me semble un peu compliqué, alors je me penche vers la solution “type” moi-même. Mais c’est juste moi. Peut-être qu’il y a quelque chose de mieux.

Je me rends compte que je me suis promené pas mal ici et que j’ai dit très peu, probablement rien que vous ne sachiez déjà. Ce que je veux dire, c’est que – je pense que c’est à nous d’expérimenter les outils que nous avons et les données avec lesquelles nous travaillons et au fil du temps les bonnes idées seront diffusées et deviendront les meilleures pratiques. Je pense juste que tu demandes un peu trop tôt dans le jeu.

“NoSQL” devrait être plus sur la construction de la banque de données pour suivre les exigences de votre application, pas sur la construction de l’application pour suivre une certaine structure – c’est plus comme une approche SQL traditionnelle.

Ne pas abandonner une firebase database relationnelle “juste parce que”; ne le faites que si votre application en a vraiment besoin.