Schemaless est idéal pour deux raisons:
- Le cerveau d'optimiser l'intuitivité de stockage de document
- Résout Rares-de la Matrice et de l'Entité-Attribut-Valeur de problèmes de stockage.
J'ai utilisé à la fois SQL et No-SQL pour les applications de production en Ruby on Rails. Je ne suis pas un expert base de données, et je dois avouer à googler ACIDE et d'autres termes similaires comme ils ne sont pas familier pour moi.
"Ah ha! Un autre savoir-rien suiveur de tendance à sauter sur la dernière boule de neige" vous pouvez dire. Mais, en fait, je suis vraiment content de ma décision d'utiliser MongoDB notre plus récente de 2 ans d'application, et voici pourquoi...
L'envers de la médaille de cerveau-l'optimisation de l'intuitivité a été mon expérience avec Magento e-commerce. Je ne veux pas bash, car il m'a bien servi à l'époque mais il a vraiment touché le processeur dur pour essayer de calculer les attributs de chaque produit. La raison sous-jacente est l'Entité-Attribut-Valeur de stocker des données produit. Cache ou être damné était la solution.
Le principal avantage pour moi, c'est l'optimisation dans le seul endroit qui est vraiment important - votre propre cerveau. De nombreuses technologies sont critiqués sur leur efficacité dans la mémoire, processeurs, de matériel et d'avoir encore une DB qui est extrêmement intuitive de comprendre apporte ses propres mérites. Nous avons trouvé qu'elle s'empresse d'ajouter des fonctionnalités à notre code, car la base de données a tout simplement l'air beaucoup comme le monde réel, nous sommes à la modélisation. Quand j'ai demandé aux clients de e-commerce pour me présenter leur liste de produits qu'ils auront naturellement tendance à utiliser Excel (pensez à la table du magasin). Les premières colonnes sont faciles:
- Nom Du Produit
- Prix
- Type De Produit (
Ensuite, il devient plus difficile et couverts dans les notes, les codes de couleur et des liens vers d'autres tables (et oui.. les relations)
- Couleur (Seulement certains produits)
- Taille (X Grand, Grand, Petit) - uniquement pour les produits 8'9'10, les clubs de golf de l'utilisation d'une échelle différente
- Couleur 2. Les colliers pour chat ont deux choix de couleurs.
- Puissance en watts
- Type de fixation (Masculin, Féminin)
De sorte qu'il se termine par un terrible gâchis de tableaux Excel qui n'ont pas de sens pour moi et pas beaucoup de sens pour les personnes qui travaillent avec les produits de jour en jour. Nous jeter les bras en l'air et décident d'aller à travers le catalogue, et puis il me frappe! Ne serait-il pas génial si vous pouviez stocker les données comme il apparaît dans le catalogue!? Juste une collection de données sur chaque produit que des listes de l'attribut de ce produit. Vous pouvez ensuite choisir les attributs communs à l'index pour la récupération à une date ultérieure. Bien sûr, c'est une banque de document.
En résumé, le document magasins sont grands quand vous avez une matrice creuse problème ou des objets qui muter leurs attributs au fil du temps. Ayant vécu dans un No-SQL monde pendant 2 ans, je ne peux pas penser à une application du monde réel qui n'ont pas de ces fonctionnalités, car le monde lui-même ressemble à un magasin de documents.