it-swarm.com.de

Gibt es E-Commerce-Websites, die NoSQL-Datenbanken verwenden?

Ich habe in letzter Zeit viel über 'NoSQL'-Datenbanken wie CouchDB, MongoDB usw. gelesen. Die meisten Websites, auf denen ich dies gesehen habe, sind hauptsächlich textbasierte Websites wie die New York Times und Source Forge.

Ich habe mich gefragt, ob Sie dies auf Websites anwenden können, bei denen die Bezahlung ein großes Problem darstellt. Ich denke an folgende Punkte:

  • Wie gut können Sie die Daten sichern?
  • Bieten diese Systeme einen einfachen Backup/Restore-Mechanismus?
  • Wie werden Transaktionen durchgeführt?

Ich habe die folgenden Artikel gelesen, die einige Aspekte behandeln:

In diesen Beiträgen wird der Aspekt von Transaktionen behandelt, sofern er abgedeckt ist. Sicherheits- und Backup-Fragen werden jedoch nicht behandelt. Kann jemand etwas Licht in dieses Thema bringen?

Und wenn möglich, kennt jemand einige E-Commerce-Websites, die die dokumentbasierte Datenbank erfolgreich implementiert haben.

75
Saif Bechan

EDIT: März 2013

Ich hatte ursprünglich einen Link zu einem Artikel gepostet, den ich über MongoDB und E-Commerce geschrieben habe, aber ich stimme nicht mehr mit allen Punkten überein, die ich dort gemacht habe. Ich bin immer noch der Meinung, dass das Dokumentdatenmodell von MongoDB sehr gut für die Katalogverwaltung einer E-Commerce-Site und möglicherweise für Warenkörbe geeignet ist. Aber es gibt eindeutig Fälle, in denen Transaktionen wichtig sind, und MongoDB gibt Ihnen diese nicht. Die Beantwortung dieser Frage mit der nächsthöheren Stimmenzahl macht viele Punkte bedenkenswert.

Hier ist der Originalartikel für Interessierte:

http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/ (archive.org link)

68
Kyle Banker

Der Overhead, der RDBMS so langsam macht, garantiert Atomizität, Konsistenz, Isolation und Haltbarkeit, auch bekannt als ACID . Einige dieser Eigenschaften sind für Anwendungen, die mit Geld zu tun haben, sehr wichtig. Sie möchten keine einzige Bestellung verlieren, wenn die Lichter ausgehen.

NoSQL-Datenbanken opfern normalerweise einige oder alle ACID-Eigenschaften, um den Overhead erheblich zu reduzieren. Für viele Anwendungen ist dies in Ordnung - wenn ein paar "Diggs" fehlen, wenn die Lichter ausgehen, ist das keine große Sache.

Für eine E-Commerce-Website müssen Sie sich fragen, was Sie wirklich benötigen.

  1. Benötigen Sie wirklich ein Leistungsniveau, das ein RDBMS nicht liefern kann?
  2. Benötigen Sie die Zuverlässigkeit, die ein RDBMS bietet?

Ehrlich gesagt lautet die Antwort auf # 2 wahrscheinlich "Ja", was die meisten NoSQL-Lösungen ausschließt. Und wenn Sie nicht mit Datenverkehr zu tun haben, der mit Amazon.com vergleichbar ist, werden RDBMs auch auf bescheidener Hardware Ihren Leistungsanforderungen wahrscheinlich gerecht, insbesondere wenn Sie sich auf einfache Abfragen beschränken und ordnungsgemäß indizieren. Womit die Antwort auf # 1 "nein" lautet.

Sie könnten jedoch in Betracht ziehen, ein RDBMS für Transaktionsdaten und eine NoSQL-Datenbank für nicht kritische Daten wie Produktseiten, Benutzerrezensionen usw. zu verwenden Dann müsste doppelt so viel Datenspeicher-Software installiert werden, und alle Beziehungen zwischen den Daten in den beiden Datenspeichern müssten im Code verwaltet werden. Eine Verknüpfung Ihrer NoSQL-Datenbank mit Ihrem RDBMS wäre nicht möglich. Dies würde wahrscheinlich zu einer unnötigen Komplexität führen.

Wenn ein RDBMS Funktionen bietet, die Sie für die Zuverlässigkeit benötigen, und eine akzeptable Leistung für die Art der Belastung erbringt, ist ein RDBMS wahrscheinlich die beste Wahl.

54
Frank Farmer

Der Umgang mit Finanzinformationen ist einer der Bereiche, in denen SQL wirklich das richtige Werkzeug für diesen Job ist. Die meisten NOSQL-Systeme wurden entwickelt, um die Skalierbarkeit zu verbessern, indem ein höheres Risiko für Datenverlust oder Inkonsistenz in Kauf genommen wurde. Darüber hinaus verfügen sie in der Regel nur über eingeschränkte Funktionen zum Ausführen von Berichten über alle Datensätze, da auf einer typischen großen Website nur genügend Daten im Index vorhanden sind, um einen einzelnen Datensatz zu finden und anzuzeigen. Der Rest ist möglicherweise vollständig unzugänglich, bis Sie den gesuchten Datensatz kennen zum.

Beim Umgang mit Geld ist jede Dateninkonsistenz ein großes Problem. Wenn Sie mehr Skalierbarkeit benötigen, als ein einzelner SQL-Server Ihnen bieten kann, haben Sie genug Geld, um sich die höheren Kosten für die Skalierung von SQL leisten zu können. Auch die Ad-hoc-Berichterstellung von SQL ist etwas, das Sie verpassen würden, wenn Sie SQL nicht verwenden - so ziemlich alle Informationen, die Sie über den Verkaufsverlauf benötigen, sind von SQL trivial abzurufen, erfordern jedoch möglicherweise komplexen benutzerdefinierten Code von einem Objekt aus Geschäft.

18
Tom Clarkson

Ich glaube nicht, dass die Sicherheit in einer NoSQL-Datenbank anders ist als in einer relationalen Datenbank. Letztendlich ist Sicherheit eine orthogonale Frage, wie Daten tatsächlich gespeichert werden. Außerdem ist es nicht so, als würden Sie den Zugriff auf die Datenbank nur von Ihren Business-Layer-Servern aus Netzwerkgesichtspunkten zulassen.

Was Backups betrifft, so ermöglichen die meisten mir bekannten NoSQL-Datenbanken, genau wie eine reguläre Datenbank, Hot-Backups.

Die eigentliche Frage, IMO, ist, ob Sie mit den Einschränkungen, die Ihnen eine NoSQL-Datenbank auferlegt, zurechtkommen können - insbesondere mit dem allgemeinen Mangel an Ad-hoc-Abfragen. Wenn Sie beispielsweise jemals alle Personen kennenlernen wollten, die jemals das Produkt "X" gekauft haben, müssen Sie in Ihre Datenzugriffsebene vom ersten Tag an einen Zähler einbauen (oder ein sehr teuer serielle Suche nach jeder vergangenen Transaktion). In einer regulären SQL-Datenbank können Sie einfach einen Index hinzufügen und eine Abfrage durchführen, und schon sind Sie fertig (oder Sie fügen keinen Index hinzu, wenn es sich um einen einmaligen handelt). Oder möchten Sie vielleicht alle Personen herausfinden, die das Produkt "Y" gekauft haben, bevor die neueste Version herauskam (damit Sie sie daran erinnern können, ein Upgrade durchzuführen oder was auch immer): Auch dies müssen Sie mit einer NoSQL-Datenbank im Voraus planen, aber Es ist trivial mit einer relationalen Datenbank.

Ich denke, es ist sinnvoll, wenn Sie Ihr Schema und Ihr Verwendungsmuster im Voraus planen können und wenn das gelegentliche erneute Scannen von Datensätzen zum Hinzufügen eines neuen Felds oder einer neuen Metrik akzeptabel ist. Für eine E-Commerce-Website sind Ad-hoc-Abfragen jedoch zu wertvoll, um sie zu verlieren. Das ist natürlich nur meine Meinung, und es gibt sicherlich keinen Grund, warum Sie Teile der Anwendung nicht zwischen den beiden Datenbanken mischen könnten. Ich würde persönlich eine relationale Datenbank mit zwischengespeichertem Speicher auswählen, um die Leistung zu verbessern ...

8
Dean Harding

Gilt.com verwendet Voldemort, um den Einkaufskorb/das Inventar unter großer Last zu verwalten. Siehe diese Präsentation von der London QCon 2010 zu den Details - http://www.infoq.com/presentations/Project-Voldemort-at-Gilt-Groupe

Ich möchte auch die Tatsache wiederholen, dass "NoSQL" nicht "No SQL" bedeutet, sondern "Not Only SQL", und dass Sie, anstatt nach einer Technologie für ein vollständiges Rippen/Ersetzen einer anderen zu suchen, die beste suchen sollten Werkzeug für den Job. NoSQL-Datenspeicher sind keine besonders guten Data Warehouses und eignen sich wahrscheinlich nicht zum Speichern von Benutzertransaktionen, sind aber in bestimmten Nischenbereichen sehr gut - siehe das obige Beispiel der Gilt Groupe.

Ein weiteres prominentes Beispiel ist die BBC-Homepage - nicht transaktionell, aber dennoch interessant. Sie verwenden CouchDB, um Benutzereinstellungen zu speichern. Leider scheinen sie unter der Last abgestürzt zu sein.

[UPDATE: Ich kann auch bestätigen, dass ASOS Marketplace einige NoSQL-Komponenten verwendet - http://bagcheck.com/bag/9206-asos-marketplace-technology ]

6

Ihr solltet das überprüfen:

Replikationsbestätigung über getlasterror

MongoDB ist kurz davor, dauerhafte Schreibvorgänge bereitzustellen. Ich denke, das ist das Hauptproblem bei der Diskussion dieses Themas w.r.t. Geld. Der Transaktionsteil ist aufgrund der verschachtelten Dokumentfunktionen weniger wichtig.

6
Michael Kennedy

Hier sind einige kommerzielle Webanwendungen, die MongoDB verwenden, eine der beliebtesten NoSQL-Datenbanken.

http://www.mongodb.org/display/DOCS/Production+Deployments

Das sind nicht gerade E-Commerce-Websites an sich, aber viele sind NoSQL-basierte Aspekte, von denen die Unternehmen abhängen. Ich kann bestätigen, dass ChatPast vollständig in MongoDB ausgeführt wird. Wir betreiben E-Commerce, dies wird jedoch aufgrund von Sicherheits-/Verarbeitungsbedenken auf Chargify verlagert, anstatt Angst davor zu haben, auf MongoDB zu handeln.

2
Michael Kennedy

Ja, http://myestoreapp.com verwendet MongoDB für alles. Hör zu; Fühlen Sie sich frei, Fragen zu beantworten.

1