NoSQL a suscité beaucoup d'attention dans notre secteur récemment. J'aimerais connaître l'avis des gens sur les meilleurs cas d'utilisation par rapport au stockage dans une base de données relationnelle. Qu'est-ce qui devrait inciter un développeur à penser que certains ensembles de données sont mieux adaptés à une solution NoSQL ? Je suis particulièrement intéressé par MongoDB y CouchDB car ils semblent bénéficier de la plus grande couverture en ce qui concerne le développement de PHP, ce qui est mon objectif.
Réponses
Trop de publicités?Promettez-vous simplement de ne jamais essayer de faire correspondre un modèle de données relationnel à une base de données NoSQL comme MongoDB ou CouchDB... C'est l'erreur la plus courante que font les développeurs lorsqu'ils évaluent les technologies émergentes.
Cette approche est analogue à celle qui consiste à prendre une voiture et à essayer de l'utiliser pour tirer son chariot sur la route comme un cheval.
C'est une réaction naturelle due à l'expérience de chacun bien sûr, mais la véritable valeur de l'utilisation d'une base de données documentaire est de pouvoir simplifier votre modèle de données et de minimiser votre souffrance en tant que développeur. Votre base de code se réduira, vos bogues seront moins nombreux et plus faciles à trouver, les performances seront impressionnantes et la mise à l'échelle sera beaucoup plus simple.
En tant que fondateur de Joomla, je suis partial :-) mais si l'on vient de l'espace CMS, quelque chose comme MongoDB est une solution miracle car le contenu s'adapte très naturellement aux systèmes documentaires.
L'analyse en temps réel est un autre domaine d'application privilégié de MongoDB, qui offre des performances et une évolutivité très élevées, notamment en ce qui concerne la concurrence. Vous trouverez des études de cas sur le site MongoDB.org qui démontrent ces attributs.
Je suis d'accord avec l'idée que chaque base de données a ses propres objectifs et cas d'utilisation ; prenez l'objectif de chaque base de données pour l'évaluer en conséquence.
Certains cas d'utilisation intéressants - pour MongoDB en tout cas - sont mentionnés sur le site de MongoDB. Les exemples donnés sont l'analyse en temps réel, la journalisation et la recherche en texte intégral. Ces articles valent tous la peine d'être lus http://www.mongodb.com/use-cases
Il existe également un excellent article sur les bases de données NoSQL les mieux adaptées à chaque type de projet : http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Je vous suggère cet article de Rick Cattell sur les divers magasins de données (alias NoSQL), leurs différences et certains de leurs cas d'utilisation : http://www.cattell.net/datastores/index.html
Ce que j'aime dans le NoSQL n'a rien à voir avec les performances et tout à voir avec la facilité d'utilisation. Les magasins de documents sont tout simplement plus faciles à utiliser lorsque vos unités de données atomiques ressemblent à des documents, parce qu'il est trivial de sérialiser à partir et vers des objets. C'est tout simplement plus amusant, et c'est un facteur important pour les projets personnels ou secondaires.