SQL (MySQL) vs NoSQL (CouchDB) [fermé]

126

Je suis en train de concevoir une application hautement évolutive qui doit stocker beaucoup de données. Juste par exemple, il stockera beaucoup sur les utilisateurs et ensuite des choses comme beaucoup de leurs messages, commentaires, etc. J'ai toujours utilisé MySQL avant mais maintenant je suis prêt à essayer quelque chose de nouveau comme couchdb ou similaire qui n'est pas SQL.

Quelqu'un a-t-il des idées ou des conseils à ce sujet?

christophmccann
la source
3
Gah, CW. Et j'espérais avoir un vrai représentant et un crédit de rue ici. :-)
Franci Penov
1
pouvez-vous expliquer un peu plus votre ensemble de données?
mikeal
4
Je souhaite que cela ne soit pas fermé. Ces questions sont importantes à poser, mais pour une raison quelconque, elles n'appartiennent pas à SO.
Neil Chowdhury

Réponses:

191

Voici une citation d'un récent article de blog de Dare Obasanjo .

Les bases de données SQL sont comme une transmission automatique et les bases de données NoSQL sont comme une transmission manuelle. Une fois que vous passez à NoSQL, vous devenez responsable de beaucoup de travail que le système prend en charge automatiquement dans un système de base de données relationnelle. Similaire à ce qui se passe lorsque vous choisissez une transmission manuelle plutôt qu'une transmission automatique. Deuxièmement, NoSQL vous permet d'optimiser les performances du système en éliminant de nombreux contrôles d'intégrité effectués par les bases de données relationnelles du niveau base de données. Encore une fois, c'est similaire à la façon dont vous pouvez obtenir plus de performances de votre voiture en conduisant une transmission manuelle par rapport à un véhicule à transmission automatique.

Cependant, la similitude la plus notable est que, tout comme la plupart d'entre nous ne pouvons pas vraiment profiter des avantages d'un véhicule à transmission manuelle, car la majorité de notre conduite se déroule dans la circulation sur le chemin du travail, il existe une dure réalité similaire. en ce que la plupart des sites ne sont pas à l'échelle de Google ou de Facebook et n'ont donc pas besoin de Bigtable ou de Cassandra.

À quoi je ne peux ajouter que le passage de MySQL, où vous avez au moins une certaine expérience, à CouchDB, où vous n'avez aucune expérience, signifie que vous devrez faire face à un tout nouvel ensemble de problèmes et apprendre différents concepts et meilleures pratiques. Bien que cela soit merveilleux en soi (je joue à la maison avec MongoDB et l'aime beaucoup), ce sera un coût que vous devrez calculer lors de l'estimation du travail pour ce projet, et comporte des risques inconnus tout en promettant des avantages inconnus. Il sera très difficile de juger si vous pouvez réaliser le projet à temps et avec la qualité que vous voulez / avez besoin pour réussir, s'il est basé sur une technologie que vous ne connaissez pas.

Maintenant, si vous avez dans l'équipe un expert dans le domaine NoSQL, alors jetez-y un coup d'œil. Mais sans aucune expertise de l'équipe, ne sautez pas sur NoSQL pour un nouveau projet commercial.

Mise à jour : Juste pour jeter de l'essence dans le feu ouvert que vous avez allumé, voici deux articles intéressants de personnes du camp SQL. :-)

Je ne peux pas attendre pour NoSQL to Die (article original est allé, voici une copie ) La
lutte contre la NoSQL Mindset, sans que cela soit une pièce anti-NoSQL
Mise à jour : Eh bien est ici un article intéressant sur NoSQL
Making Sense of NoSQL

Franci Penov
la source
2
Le processus de mise à l'échelle des solutions SQL consiste à supprimer des fonctionnalités et des relations. Je ne pense donc pas que ce soit une évaluation tout à fait juste. En outre, je ne voudrais pas les bases de données NoSQL groupe ensemble comme celui - ci, par exemple Cassanda se concentre uniquement sur l' extension des tout CouchDB concerne l' extension du api vers le bas et le rendre facile à utiliser et les tentatives pour permettre que api à l' échelle aussi loin que possible.
mikeal
Serait-ce le lien vers le devis? 25hoursaday.com/weblog/2010/03/29/…
edosoft
Ah, oui en effet. J'ai manqué qu'il en ait également fait un article de blog public. Je mettrai à jour le message.
Franci Penov
1
Merci pour le post! Le lien "Je ne peux pas attendre que NoSQL meure" ne fonctionne pas pour moi, vous voudrez peut-être le vérifier.
kbpontius
"vous avez échangé une liste bien énumérée de limitations et de verrues contre une liste plus récente et mal comprise de limitations et de verrues" - Je ne peux pas attendre que NoSQL meure
Yarin
3

Il semble que seules les vraies solutions aujourd'hui tournent autour de la mise à l'échelle ou du partitionnement. Toutes les bases de données modernes (NoSQL et NewSQL) prennent en charge la mise à l'échelle horizontale dès la sortie de la boîte, au niveau de la couche de base de données, sans que l'application ait besoin d'un code de partitionnement ou quelque chose.

Malheureusement, pour le bon vieux MySQL de confiance, le sharding n'est pas fourni «prêt à l'emploi». ScaleBase (avertissement: j'y travaille) est un fabricant d'une solution complète de scale-out, une "machine de partitionnement automatique" si vous le souhaitez. ScaleBae analyse vos données et votre flux SQL, répartit les données entre les nœuds de base de données et les agrège au moment de l'exécution - vous n'aurez donc pas à le faire! Et c'est un téléchargement gratuit.

Ne vous méprenez pas, les NoSQL sont excellents, ils sont nouveaux, le nouveau est plus de choix et le choix est toujours bon !! Mais choisir NoSQL a un prix, assurez-vous de pouvoir le payer ...

Vous pouvez voir ici quelques données supplémentaires sur MySQL, NoSQL ...: http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding

J'espère que cela a aidé.

Doron Levari
la source
0

L'une des meilleures options est d'opter pour MongoDB (NOSql dB) qui prend en charge l'évolutivité.Stocke de grandes quantités de données, rien que des données volumineuses sous la forme de documents contrairement aux lignes et aux tables en sql.C'est plus rapide qui suit le partage des données. pour garantir la garantie des données qui maintient plusieurs serveurs ayant le serveur de base de données principal comme base. Indépendant de la langue. Utilisation flexible

Kiranmai Harshi
la source
Vous devriez sauvegarder votre opinion sur «meilleur» parce que Couchbase, Cassandra, AeroSpike, etc. et toutes les bases de données qui prennent en charge les fonctionnalités que vous mentionnez.
OneCricketeer