Existe-t-il des sites Web de commerce électronique qui utilisent les bases de données NoSQL [fermé]
j'ai beaucoup lu dernièrement sur les bases de données 'NoSQL' comme CouchDB, MongoDB etc. La plupart des sites Web que j'ai vu utiliser ce sont principalement des sites textuels tels que le New York Times et Source forge.
je me demandais si vous pouviez appliquer ceci à des sites Web où le paiement est un problème énorme. Je pense aux questions suivantes:
- Comment pouvez-vous obtenir les données
- est-ce que ce système fournit un sauvegarde/restauration de mécanisme
- Comment les transactions sont traitées commit/rollback
j'ai lu les articles suivants qui couvrent certains aspects:
- puis-je effectuer des transactions et des serrures dans CouchDB?
- Avantages / Inconvénients d'une base de données fondée sur des documents par rapport à une base de données relationnelle
dans ces billets l'aspect de les transactions si elles sont couvertes. Toutefois, les questions de sécurité et de sauvegardes ne sont pas couvertes. Quelqu'un peut-il éclairer sur ce sujet?
et, si possible, est-ce que quelqu'un connaît certains sites Web de commerce électronique qui ont mis en œuvre avec succès la base de données documentaire?
8 réponses
EDIT: mars, 2013
j'avais initialement posté un lien vers un article que j'ai écrit sur MongoDB et e-commerce, mais je ne suis plus d'accord avec tous les points que j'ai fait là. Je crois toujours que le modèle de données de documents de MongoDB peut très bien fonctionner pour le côté de gestion de catalogue d'un site de commerce électronique et peut-être pour les chariots de magasinage. Mais il y a clairement des cas où les transactions sont importantes, et MongoDB ne vous les donne pas. La réponse à cette question avec le rang suivant nombre de voix fait beaucoup de points à considérer.
Voici l'article original pour ceux qui sont intéressés:
http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/ (archive.org link)
le rétroprojecteur qui rend le RDBMS si lent, garantit l'atomicité, la cohérence, l'isolation, la durabilité, également connu sous le nom acide . Certaines de ces propriétés sont assez critiques pour les applications qui traitent avec de l'argent. Vous ne voulez pas perdre une seule commande quand les lumières s'éteignent.
Les bases de données NoSQLsacrifient habituellement une partie ou la totalité des propriétés acides en échange d'une réduction importante des frais généraux. Pour de nombreuses applications, c'est bien, -- si quelques "diggs" disparaît quand les lumières s'éteignent, ce n'est pas grave.
pour un site de commerce électronique, vous devez vous demander ce dont vous avez vraiment besoin.
- avez-vous vraiment besoin d'un niveau de performance qu'un SGBDR ne pouvez pas livrer?
- avez-vous besoin de la fiabilité qu'offre un SGBDR?
honnêtement, la réponse à la question #2 est probablement "oui", ce qui exclut la plupart des solutions NoSQL. Et sauf si vous êtes traiter avec des niveaux de trafic comparables à amazon.com's, un RDBMs, même sur le matériel modeste sera probablement satisfaire vos besoins de performance juste très bien, surtout si vous vous limitez à des requêtes simples, et indexer correctement. Ce qui rend la réponse à la question 1 "non".
Vous pourrait cependant, envisager l'utilisation d'un SGBD pour les données de la transaction, et une base de données NoSQL pour les données non essentielles, comme les pages produits, avis des utilisateurs, etc. Mais vous en auriez deux fois plus. le logiciel datastore à installer, et toute relation entre les données dans les deux datastores devrait être gérée en code -- il n'y aurait pas de connexion de votre base de données NoSQL contre votre RDBMS. Il en résulterait probablement un niveau de complexité inutile.
en fin de compte, si un RDBMS offre des fonctionnalités que vous devez avoir pour la fiabilité, et qu'il fonctionne de manière acceptable pour les types de charge que vous rencontrerez, un RDBMS est probablement le meilleur pari.
traiter des informations financières est l'un des domaines où SQL est vraiment l'outil idéal pour le travail. La plupart des systèmes NOSQL ont été conçus pour améliorer l'évolutivité en acceptant un risque plus élevé de perte de données ou d'incohérence. Ils ont également tendance à avoir des capacités limitées pour exécuter des rapports sur tous les enregistrements, car sur un grand site web typique, vous avez seulement besoin de suffisamment de données dans l'index pour trouver et afficher un seul enregistrement - le reste peut être complètement inaccessible jusqu'à ce que vous connaissez l'enregistrement que vous êtes à la recherche pour.
lorsque vous avez affaire à de l'argent, toute incohérence de données est un gros problème, et si vous avez besoin de plus d'évolutivité qu'un seul serveur sql peut vous donner, vous avez assez d'argent que vous pouvez vous permettre le coût plus élevé de mise à l'échelle sql. En outre, les rapports ad-hoc disponibles à partir de sql est quelque chose que vous manqueriez si vous n'utilisez pas sql - à peu près toutes les informations que vous voulez sur l'histoire des ventes est trivial pour obtenir à partir de sql, mais nécessite potentiellement du code personnalisé complexe à partir d'un objet basé stocker.
Je ne pense pas que la sécurité serait différente sur une base de données NoSQL que sur une base relationnelle. En fin de compte, la sécurité est une question orthogonale à la façon dont les données sont effectivement stockées. En outre, ce n'est pas comme si vous autorisiez l'accès à la base de données à partir de n'importe quoi sauf vos serveurs de la couche affaires d'un point de vue réseau.
comme pour les sauvegardes, la plupart des bases de données NoSQL que je connais permettent des sauvegardes chaudes, tout comme une base de données régulière.
Le vrai la question, IMO, est de savoir si vous pouvez vivre avec les restrictions qu'une base de données NoSQL met sur vous - en particulier, le manque général de requêtes ad hoc. Par exemple, si vous avez déjà voulu connaître toutes les personnes qui ont acheté le produit "X", alors vous devez intégrer dans votre couche d'accès aux données un compteur pour cela dès le premier jour (ou exécuter un très cher recherche en série de chaque transaction passée). Dans une base de données SQL régulière, vous pouvez juste ajouter un index et faire une requête et vous avez terminé (ou même, n'ajoutez pas d'index s'il s'agit d'un cas isolé). Ou peut-être que vous voulez savoir toutes les personnes qui ont acheté le produit "Y" avant que la dernière version soit sortie (afin que vous puissiez leur envoyer un rappel de mise à niveau ou autre): encore une fois, vous devez planifier cela à l'avance avec une base de données NoSQL, mais c'est trivial avec une base de données relationnelle.
je pense qu'il est logique quand vous pouvez planifier votre schéma et votre modèle d'utilisation à l'avance, et où le re-scan occasionnel des enregistrements pour ajouter un nouveau champ ou métrique est acceptable. Mais pour un site Web de commerce électronique, je pense que les requêtes ad hoc sont tout simplement trop précieux une fonctionnalité à perdre. Bien sûr, c'est juste mon opinion, et il n'y a certainement aucune raison pour que vous ne puissiez pas mélanger des parties de l'application entre les deux bases de données. Je choisirais personnellement une base de données relationnelle avec une mémoire entre les deux pour des performances supplémentaires, cependant...
vous devriez vérifier ceci:
reconnaissance de réplication via getlasterror
MongoDB est sur le point de fournir des Écritures durables. Je pense que c'est le principal problème avec les gens discuter de ce sujet.w.r.t. de l'argent. La partie transactionnelle est moins importante en raison des caractéristiques du document imbriqué.
Gilt.com utilise Voldemort pour gérer panier / Inventaire sous énorme charge. Voir cette présentation de Londres QCon 2010 sur les détails - http://www.infoq.com/presentations/Project-Voldemort-at-Gilt-Groupe
je voudrais également réitérer le fait que" NoSQL "ne signifie pas" pas de SQL", mais" pas seulement SQL", et qu'au lieu de regarder n'importe quelle technologie pour un rip/replace complet de n'importe quel autre vous devriez être à la recherche du meilleur outil pour le travail. NoSQL les magasins de données ne font pas de très bons entrepôts de données, et ne sont probablement pas appropriés pour stocker les transactions des utilisateurs, mais ils sont très bons dans certains créneaux - voir L'exemple de Gilt Groupe ci-dessus.
un autre exemple important est la page d'accueil de la BBC - pas transactionnelle, mais intéressante néanmoins. Ils utilisent CouchDB pour stocker les préférences des utilisateurs. Malheureusement, ils semblent s'être écrasés sous la charge.
[mise à JOUR: je peux aussi confirmer que ASOS Marketplace utilise certains composants NoSQL - http://bagcheck.com/bag/9206-asos-marketplace-technology ]
voici un tas d'applications web commerciales qui utilisent MongoDB , qui est l'une des bases de données NoSQL les plus populaires.
http://www.mongodb.org/display/DOCS/Production + déploiements
ce ne sont pas exactement des sites de commerce électronique en soi, mais beaucoup sont des aspects alimentés par NoSQL sur lesquels les entreprises dépendent. Je peux confirmer que ChatPast est entièrement fait sur MongoDB. Nous n' e-commerce mais qui est déchargé à Chargify en raison de problèmes de sécurité / traitement plutôt que d'avoir peur de faire du commerce sur MongoDB.
Oui, http://myestoreapp.com utilise MongoDB pour tout. Consultez-le; n'hésitez pas à répondre à vos questions.