Nous offrons une plate-forme pour les clips vidéo et audio, les photos et les graphiques vectoriels. Nous avons commencé avec MySQL comme backend de base de données et avons récemment inclus MongoDB pour stocker toutes les méta-informations des fichiers, car MongoDB correspond mieux aux exigences. Par exemple: les photos peuvent avoir des informations Exif , les vidéos peuvent avoir des pistes audio sur lesquelles nous voulons également stocker les méta-informations. Les vidéos et les graphiques vectoriels ne partagent aucune méta-information commune, etc., donc je sais que MongoDB est parfait pour stocker ces données non structurées et les garder consultables.
Cependant, nous continuons à développer notre plateforme et à ajouter des fonctionnalités. Maintenant, l'une des prochaines étapes consistera à fournir un forum à nos utilisateurs. La question qui se pose maintenant est: utiliser la base de données MySQL, qui serait un bon choix pour stocker des forums et des messages de forum, etc. ou utiliser MongoDB pour cela aussi?
La question est donc: quand utiliser MongoDB et quand utiliser un SGBDR. Que prendriez-vous, mongoDB ou MySQL, si vous aviez le choix et pourquoi le feriez-vous?
Réponses:
Dans NoSQL: si seulement c'était aussi simple que cela , l'auteur écrit sur MongoDB:
Puis, en conclusion:
J'aime cet article, je le trouve très informatif, il donne un bon aperçu du paysage et du battage médiatique NoSQL. Mais, et c'est la partie la plus importante, cela aide vraiment de se poser les bonnes questions quand il s'agit de choisir entre RDBMS et NoSQL. Vaut la lecture à mon humble avis.
Lien alternatif vers l'article
la source
/dev/null
, ce sera très rapide" : DAprès deux ans d'utilisation de MongoDb pour une application sociale, j'ai été témoin de ce que signifie vraiment vivre sans SGBDR SQL.
Je crois que 98% de tous les projets sont probablement bien meilleurs avec un SGBDR SQL typique qu'avec NoSQL.
la source
Comme vous l'avez dit, MongoDB est le mieux adapté pour stocker des données non structurées. Et cela peut organiser vos données en format de document. Ces variantes du SGBDR appelées magasins de données NoSQL ( MongoDB , CouchDB , Voldemort ) sont très utiles pour les applications qui évoluent massivement et nécessitent un accès plus rapide aux données à partir de ces magasins de données volumineuses.
Et la mise en œuvre de ces bases de données est plus simple que le SGBDR ordinaire. Comme ce sont de simples objets binaires à valeur clé ou de style de document directement sérialisés en disque. Ces magasins de données n'appliquent pas les propriétés ACID et les schémas . Cela ne fournit aucune capacité de transaction . Cela peut donc évoluer à grande échelle et nous pouvons obtenir un accès plus rapide (en lecture et en écriture).
Mais en revanche, RDBM applique ACID et les schémas sur les données. Si vous souhaitez travailler avec des données structurées, vous pouvez continuer avec RDBM.
Je choisirais MySQL pour créer des forums pour ce genre de choses. Parce que cela ne va pas grandir. Et ceci est une application très simple (commune) qui a structuré les relations entre les données.
la source
Notez que Mongo stocke essentiellement JSON. Si votre application traite de nombreux objets JS (avec imbrication) et que vous souhaitez conserver ces objets, il existe un argument très solide pour utiliser Mongo. Cela rend vos couches DAL et MVC ultra minces, car elles ne déballent pas toutes les propriétés des objets JS et n'essaient pas de les forcer dans une structure (schéma) dans laquelle elles ne s'insèrent pas naturellement.
Nous avons un système qui a plusieurs objets JS complexes en son cœur, et nous aimons Mongo parce que nous pouvons tout persister vraiment, très facilement. Nos objets sont également plutôt amorphes et non structurés, et Mongo s'imprègne de cette complication sans ciller. Nous avons une couche de rapport personnalisée qui déchiffre les données amorphes pour la consommation humaine, et ce n'était pas si difficile à développer.
la source
Je dirais utiliser un SGBDR si vous avez besoin de transactions complexes. Sinon, j'irais avec MongoDB - plus flexible pour travailler avec et vous savez qu'il peut évoluer quand vous en avez besoin. (Je suis biaisé cependant - je travaille sur le projet MongoDB)
la source
Qui a besoin de forums distribués et partagés? Peut-être Facebook, mais à moins que vous ne créiez un concurrent Facebook, utilisez simplement Mysql, Postgres ou tout ce qui vous convient le mieux. Si vous voulez essayer MongoDB, ok, mais ne vous attendez pas à ce qu'il fasse de la magie pour vous. Il aura ses caprices et sa méchanceté générale, comme tout le reste, comme je suis sûr que vous avez déjà découvert si vous y avez déjà vraiment travaillé.
Bien sûr, MongoDB peut être excité et sembler facile à la surface, mais vous rencontrerez des problèmes que les produits plus matures ont déjà surmontés. Ne vous laissez pas attirer si facilement, mais attendez plutôt que "nosql" mûrisse ou meure.
Personnellement, je pense que "nosql" se fanera et mourra de la fragmentation, car il n'y a pas de normes établies (presque par définition). Je ne parierai donc pas personnellement pour des projets à long terme.
La seule chose qui peut enregistrer "nosql" dans mon livre, c'est s'il peut s'intégrer de manière transparente dans Ruby ou des langages similaires, et rendre le langage "persistant", presque sans frais généraux de codage et de conception. Cela peut arriver, mais j'attendrai jusque-là, pas maintenant, ET cela doit être plus mature bien sûr.
Btw, pourquoi créez-vous un forum à partir de zéro? Il existe des tonnes de forums open source qui peuvent être modifiés pour répondre à la plupart des exigences, à moins que vous ne créiez vraiment la prochaine génération de forums (ce dont je doute).
la source
J'ai vu que de nombreuses entreprises utilisent MongoDB pour des analyses en temps réel à partir des journaux d'applications. Son absence de schéma convient vraiment aux journaux d'application, où le schéma d'enregistrement a tendance à changer de temps à autre. En outre, sa fonction de collecte plafonnée est utile car elle purge automatiquement les anciennes données pour conserver les données dans la mémoire.
C'est un domaine auquel je pense vraiment que MongoDB convient, mais MySQL / PostgreSQL est plus recommandé en général. Il existe de nombreuses documentations et ressources de développement sur le Web, ainsi que leurs fonctionnalités et leur robustesse.
la source
Les 2 principales raisons pour lesquelles vous voudrez peut-être préférer Mongo sont
Il convient aux applications Big Data. RDBMS n'est pas bon pour les mégadonnées.
la source
Vous savez, toutes ces choses sur les jointures et les «transactions complexes» - mais c'est Monty lui-même qui, il y a de nombreuses années, a expliqué le «besoin» de COMMIT / ROLLBACK, disant que «tout ce qui se fait dans les classes logiques (et pas la base de données) de toute façon '- c'est donc à nouveau la même chose. Ce dont nous avons besoin, c'est d'un moteur de stockage / récupération de données stupide mais incroyablement bien rangé et rapide, pour 99% de ce que font les applications Web.
la source
Comme dit précédemment, vous pouvez choisir entre beaucoup de choix, jetez un œil à tous ces choix: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Ce que je suggère est de trouver votre meilleure combinaison: MySQL + Memcache est vraiment génial si vous avez besoin d'ACID et que vous souhaitez rejoindre certaines tables MongoDB + Redis est parfait pour le magasin de documents Neo4J est parfait pour la base de données de graphiques
Ce que je fais: je commence avec MySQl + Memcache parce que j'y suis habitué, puis je commence à utiliser d'autres frameworks de base de données. Dans un seul projet, vous pouvez combiner MySQL et MongoDB par exemple!
la source