J'entends beaucoup sur Couchdb , mais après avoir lu certains documents à ce sujet, je ne reçois toujours pas Pourquoi utiliser et comment. P>
Pourriez-vous clarifier ce mystère pour moi? P>
5 Réponses :
C'est une base de données non relationnelle, une source ouverte, distribuée (réplication progressive, bidirectionnelle), sans schéma. Une base de données CouchDB est une collection de documents; Chaque document est un tas de chaînes "clés" et "valeurs" correspondantes (qui peuvent être des chiffres, des chaînes, des listes, des dates, ...). Vous pouvez avoir des indices, des requêtes, des vues. P>
Si un DB relationnel vous semble vous confinquant (vous trouvez des schémas trop rigides, vous ne pouvez pas diffuser le moteur de DB du moteur autour d'un très grand nombre de serveurs, etc.), CouchDB mérite d'être envisagé (c'est l'un des plus intéressants de la de nombreux DB non relationnels émergent ces jours-ci). P>
Mais si tout votre travail convient heureux dans une base de données relationnelle, c'est ce que vous voulez probablement continuer à utiliser pour des travaux de production (même si «jouer» avec un DB non relationnel vaut toujours votre temps, juste pour personnels Croissance et édification, c'est très différent de transférer d'énormes systèmes de production à partir d'un dB relationnel! -). P>
Notez également que CouchDB est en version version: chaque version de chaque document est conservée et vous pouvez revenir facilement à une version précédente.
@Delroth, vous avez tort de renvoyer aux versions précédentes. De CouchDB API Référence: "Vous ne pouvez pas compter sur les révisions de document à un autre but que le contrôle de la concurrence. En raison du compactage, les révisions peuvent disparaître à tout moment. Vous ne pouvez pas les utiliser pour un système de révision de client."
On dirait que vous devriez lire Pourquoi Couchdb P>
Cela devrait être un commentaire à la place
Pour citer de Wikipedia P>
Ce n'est pas un système de gestion de la base de données relationnelle. Au lieu de stocker des données dans des lignes et des colonnes, la base de données gère une collection de documents JSON. Les documents d'une collection n'ont pas besoin de partager un schéma, mais de conserver les capacités de requête via des vues. P> blockQuote>
Couchdb fournit un modèle différent de stockage de données qu'une base de données relationnelle traditionnelle en ce sens qu'elle ne représente pas de données en tant que lignes dans les tableaux, elle stocke plutôt des données comme des "documents" au format JSON. P>
Cette différence dans le modèle de stockage de données est ce qui différencie CouchDB à partir de produits comme MySQL et SQL Server. P>
En termes d'accès programmatique à CouchDB, il expose une API de repos que vous pouvez accéder en envoyant des demandes HTTP à partir de votre code P>
J'espère que cela a été quelque peu utile, bien que je reconnaisse que cela ne peut pas recevoir ma familiarité minimale avec le produit P>
Ok, mais auquel cas devrais-je utiliser une base de données non relationnelle sur un site Web?
@Natim Lorsque vous avez des données à stocker, mais ce n'est pas très relationnel et n'est pas facilement conforme à un schéma rigide.
Pourriez-vous me donner un exemple? n'est pas facilement conforme à un schéma rigide code>
Je suis loin d'un expert (tout ce que j'ai fait, c'est jouer avec elle ...) Mais voici comment je pense à l'utiliser: P>
Habituellement, lorsque je concevons une application, j'ai un groupe de serveurs d'applications derrière un équilibreur de charge. Souvent, j'ai des sessions collantes afin que chaque utilisateur redevienne sur le même serveur d'applications pendant cette session. Ce que je pense faire, c'est avoir une instance CouchDB liée à chaque serveur d'applications. p>
De cette façon, vous pouvez utiliser ce CouchDB local pour accéder aux préférences des utilisateurs, les données de produits ... quelles que soient les données que vous avez obtenues qui ne doivent pas être parfaitement à jour. P>
Alors ... Maintenant, vous avez des données sur ces CouchdBs locaux. Couchdb permet une réplication. Donc, chaque période de temps fixe, fusionner les données en arrière (toutes les x secondes?) Dans ses pairs pour les garder à jour. P>
Dans son ensemble, vous ne devriez pas avoir à vous soucier des conflits B / C, chaque AppServer a sa propre CouchDB et que les utilisateurs sont attachés à l'Appserver, et vous avez une consistance éventuelle car vous avez une réplication. P>
Est-ce que cela répond à votre question? P>
Si je comprends bien, Couchdb est construit à l'intérieur de Apache? Donc, dès que vous obtenez une connexion à un serveur Apache, vous êtes sûr d'être connecté au bon serveur CouchDB? Pourquoi est-il plus difficile de le faire avec un serveur SQL?
1) Non, Couchdb n'est pas construit à l'intérieur de Apache ... mais ce que je pense à attacher un Couchdb à une instance Appserver. Comme les nœuds Couchdb seront répliqués, en théorie, nous voulons empêcher tout conflit. Les équilibreurs de chargement et les sessions collantes sont un moyen de vous assurer que les modifications de données restent dans un nœud jusqu'à ce qu'elle soit propagée au reste des nœuds. 2) Bien, dans mon esprit, oui. Je n'exposerais pas Couchdb à l'extérieur de votre pare-feu car à l'heure actuelle, aucune sécurité n'empêche aucune personne de traverser et de jouer avec des données CouchDB. 3) Ce n'est pas plus difficile ... je dirais qu'ils sont tous deux faciles.
Un bon exemple est que lorsque vous dites avoir à traiter des données de personnes dans un site Web ou une application. Si vous éteignez souhaitant de concevoir les données et de conserver les informations des individus séparées, cela fait un bon cas pour CouchDB, qui stocke des données dans des documents plutôt que des tableaux relationnels. Dans un déploiement de production, mes utilisateurs peuvent finir par ajouter des données adhoc environ 10% de la population et d'autres détails amusants pour un autre de 5% sélectionné. Dans un contexte relationnel, cela pourrait ajouter des charges de redondance mais non pour Couchdb. p>
Et il ne s'agit pas seulement du fait que CouchDB est non relationnel: si vous êtes trop concentré sur cela, vous manquez le point. CouchDB est branché sur le Web, tout ce que vous devez commencer par HTTP pour la création et la création de requêtes (get / Met / Met / Post / Supprimer ...), et il est reposant, ainsi que le fait que c'est portable et idéal pour les pairs de pair . Il peut également servir des applications Web dans ce qui est appelé «Couchapps», où CouchDB détient totalement les images, CSS, balisage en tant que données stockées dans des documents spéciaux appelés documents de conception. p>
S'il vous plaît ne nous adressez pas comme ceci est un poste de forum ou un courrier électronique.
J'ai essayé d'être gentil, mais si tu n'aimes pas ça 没 关系.
Je suppose que cela ne se sent pas comme "intemporel" lorsque votre question est adressée comme un email poli. De toute façon, c'était un bon geste.