2012-02-05 7 views
2

Donc j'écris une application qui permettrait à un utilisateur de créer un type de quiz. Chaque quiz peut être différent, IE ils auront des questions et réponses uniques. Je n'ai jamais joué avec une base de données nosql et j'essaie de comprendre comment une base de données nosql (canapé, mongo, etc ...) organise réellement les données. Il semble que ce type de stockage de données pourrait bien se prêter à ce type d'application (IE pas de tables qui définissent le nombre de questions à poser) mais je ne suis toujours pas sûr du fonctionnement d'une base de données nosql.nosql et l'organisation des données

J'ai tendance à être plus un apprenant visuel, quelqu'un peut-il me diriger vers de bons visuels ou décrire comment les bases de données nosql organisent réellement les données qu'elles contiennent?

+2

Cela semble être une situation où une solution SQL a plus de sens. Il y a une structure définie pour chaque objet représenté (questions, réponses, utilisateurs, etc.) qui se prête bien aux tables. N'appliquez pas simplement le dernier engouement de technologie parce qu'il est là. – Polynomial

+0

Aussi semble-t-il que le travail de sql db ne soit pas passionnant car il est assez facile de construire des tables pour répondre à autant de questions et de réponses à chaque question que vous le souhaitez avec sql et en réalité moins facile avec say mongodb. Je suis d'accord avec Poly, mauvaise idée de choisir une technologie et ensuite l'appliquer à un problème indépendamment et beaucoup mieux analyser le problème et ensuite choisir la meilleure technologie pour le résoudre. – PurplePilot

+0

Je ne pouvais pas être plus d'accord avec ces commentaires. J'utilise en fait rdb (mysql) depuis dix ans. Je pense qu'ils fonctionnent très bien pour beaucoup de choses différentes. Il s'agit davantage d'un projet d'apprentissage, et je veux voir comment les choses fonctionnent pour que je puisse déterminer par moi-même ce pour quoi elles seraient bonnes. Ça va être un projet de nœud, donc ça a semblé être un ajustement facile, json me plaît. Mais en ce qui concerne votre commentaire, je suis entièrement d'accord. – Greg

Répondre

3

Je parlerai de monogdb. Mongodb stocke ses données au format bson (binaire json). Vous pouvez continuer à penser qu'il stocke les données au format json.

Mongodb contient un grand avantage que vous pouvez utiliser - capacité à embedd documents. Vous pouvez utiliser cette fonction dans votre application:

Vous pouvez donc embedd réponses dans votre collection de questions comme celle-ci:

questions { 
    _id: 1, 
    text: "What is your name", 
    answers: [ 
    { 
     order: 1, 
     text: "Andrew" 
    }, 
    { 
     order: 1, 
     text: "Greg" 
    } 
    ] 
} 

Intégration habituelle permet de maintenir votre schéma de base de données plus simple et permettent d'éviter des jointures et des données en général semble plus naturellement. Par exemple, dans les mondes sql, vous n'avez pas d'autre solution pour créer des tables séparées pour les questions et les réponses.

Un autre avantage que vous pouvez utiliser est - l'évolutivité. Mongodb a été conçu pour être entièrement évolutif, il prend en charge les ensembles de sharding et de réplicas.

Vous pouvez commencer à lire à propos de la description de schéma plus here. Aussi, vous pouvez regarder dans little monogdb book, il ya seulement 30 pages, mais il devrait aider à comprendre plus profondément comment fonctionne mongodb.

Choisissez simplement une base de données nosql et essayez de jouer avec, vous avez un projet assez simple pour commencer. Et je suis sûr que vous allez l'adorer une fois essayer.

+0

L'idée de travailler avec JSON me plaît vraiment. Cela va être un projet de noeud, donc il semble qu'ils fonctionneraient très bien ensemble. L'équivalent d'une table "users" serait-il simplement l'objet d'un utilisateur? comme les utilisateurs: [{id: 1, nom: foo}, ...] Et puis l'objet du quiz serait juste des quiz: [{}, {}] avec chaque entrée étant un quiz unique lié à l'ID de certains utilisateurs? De cette façon, je vois cela comme relationnel, mais je sais que ces types de db's s'éloignent de ce concept ... – Greg

+0

"et la plupart des bases de données nosql en général" sont des formats de document. Non non Non.Un nombre sont paire de valeur clé et un nombre sont basés sur une grande table (comme un tableur) et en effet c'est une différence majeure dans le domaine NoSQL car ils ne sont pas homogènes et vous devez vraiment savoir quel est le problème que vous résolvez avant commencer à coder de sorte que vous adaptez le magasin de données au problème. Document basé sur des paires de valeurs clés OU une grande table et vous devez comprendre le théorème CAP et l'appliquer à votre problème afin de pouvoir prendre une décision rationnelle. – PurplePilot

+0

@PurplePilot: Oui, je suis d'accord. –