2012-09-19 8 views
11

Ich werde eine E-Commerce-Website erstellen und möchte eine No-SQL-Datenbank verwenden, die gut mit den Plänen für die App passt. Aber wenn es darum geht, welche Datenbank zum Job passt, bin ich mir nicht sicher. Nach dem Vergleich verschiedener DBs, könnten diejenigen, die am besten scheinen, entweder Mongo, Couch oder Orientdb sein. Ich habe Argumente dafür gesehen, dass sie im Vergleich zu etwas wie MySQL verwendet oder nicht verwendet werden. Aber untereinander (Nosql-Datenbanken), was würde man gut mit einer E-Commerce-Lösung verbinden?NoSQL-Datenbank für E-Commerce

Hinweis, für den Anwendungsfall habe ich Tausende Transaktionen pro Sekunde. Oder ähnlich hohe Schreibraten. Sie werden einigermaßen sicher sein, aber auf einer Ebene, die jede etablierte Datenbank bewältigen könnte.

CouchDB: Hat Master, Replikation zu meistern, die ich wirklich verwenden konnte. Wenn nicht, muss ich immer noch die gleiche Funktionalität im Code implementieren. Ich brauche eine Benutzerdatenbank, die mit dem Mutterschiff synchronisiert werden kann. (Benutzer haben ihre eigene, möglicherweise lokale Host-Datenbank, die mit dem Hauptdomänen-Server synchronisiert werden kann). Couch ist auch schnell, sobald Ihre Abfragen in der Datenbank gespeichert wurden. Da ich wahrscheinlich eine höhere Leseleistung haben werde. Obwohl nicht viel.

MongoDB: Abfragen sind sehr einfach und benutzerfreundlich. Auch mit der Tatsache, dass Endbenutzer möglicherweise zu einem bestimmten Zeitpunkt nach bestimmten Dingen fragen müssen, die ich möglicherweise nicht im Voraus erklären kann, scheint dies besser zu passen. Ich muss meine Abfragen nicht vorher in der Datenbank speichern. Unterstützt atomare Transaktionen, jedoch nur beim Schreiben in ein einzelnes Dokument.

OrientDB: Eine Graphdatenbank. viel anders, als die meisten Menschen gewohnt sind, aber mit den Bedürfnissen könnte es auch sehr gut passen. Orient hat die Vorteile, schemaläßig zu sein und Unterstützung für ACID-Transaktionen zu haben. Es gibt eine Menge Kunden- und Produktbeziehungen, mit denen eine Graphdatenbank sehr gut sein könnte. Orientieren Sie sich auch Master zu Master-Replikation, ähnlich wie Couchdb.

Versteh mich nicht falsch, ich kann sehen, wie man dies traditionell mit etwas wie MySQL, aber die Leichtigkeit und Einfachheit einer Nosql-Lösung, ist sehr attraktiv. Obwohl in meinem Fall, eine schemalose Lösung zu brauchen, wäre viel einfacher in Nosql als in Mysql. Ein bestimmtes Produkt kann mehr oder weniger Elemente als ein anderes haben. und es ist vorzuziehen, eine Tabelle immer dann neu zu erstellen, wenn ein neues Feld hinzugefügt wird.

Also, zwischen diesen 3 (oder sogar anderen, die Sie vielleicht besser finden), welche Funktionen in jedem könnte für oder gegen mich in Bezug auf eine E-Commerce-basierte Website arbeiten, wenn es um Kundentransaktionen handelt?

Edit: Der Grund, warum ich keine bestehende Lösung verwende, ist, dass mit den integrierten Funktionen, die ich brauche, keine Lösungen verfügbar sind. Wir haben auch das Ziel, dies als vollwertiges Produkt für unser Unternehmen zu nutzen. Es wird eine Handvoll anderer Integrationen als nur Verkäufe geben. Es wird auch mit dem POS-System eines Ladens arbeiten.

+0

Gehen Sie auf SQL + Solr/ElasticSearch. SQL für moderate Abfrage/Schreibrate, Datensicherheit und Transaktionssicherheit (wer möchte, dass zwei DB-Knoten dasselbe an zwei verschiedene Leute verkaufen?). Und Solr/ElasticSearch für flexible (oder nicht) Schema, sehr leistungsfähige Ad-hoc-Abfragen und wirklich schnell zu suchen. Sie können Ihre SQL DB möglicherweise jeden Abend in einer einzigen Datei sichern. – aitchnyu

+0

@aitchnyu Ich bin mir nicht sicher, ob Sie die Verwendung von SQL so gut rechtfertigen. Was meinst du mit "zwei DB-Knoten, um dasselbe an zwei verschiedene Leute zu verkaufen"? – Sammaye

+1

Es gibt eine Open-Source-E-Commerce-Plattform, die MongoDB verwendet. Schau es dir an: getfwd.com –

Antwort

12

Seit E-Commerce kann alles von Einkaufswagen bis Mitgliedschaft und wiederkehrende Abonnements umfassen, ist es schwer zu erraten, welche Anforderungen und Komplexität Sie sich vorstellen.

Bei der Erstellung einer E-Commerce-Website sollte eine der ersten Überlegungen dazu dienen, zu untersuchen, ob es bereits ein etabliertes E-Commerce-Produkt oder Toolkit gibt, das Ihren Anforderungen entspricht. Prozesse wie Bestellung, Rechnungsstellung, Zahlungen, Produkte und Kundenbeziehungen sind sehr subtil, auch wenn Ihr Anwendungsfall einfach zu sein scheint. Es kann auch möglich sein, Ihre Anwendung in die Aspekte der "Katalogverwaltung" (möglicherweise mehr benutzerdefiniert) im Vergleich zur "Abrechnung" (möglicherweise Dritte, vielleicht sogar über eine gehostete Abrechnungs/Zahlungs-API) aufzuteilen.

Eine andere Überlegung sollte sein, für wen Sie die E-Commerce-Website entwickeln: Ist das Ihr eigenes Jucken oder für einen Kunden? Zeit, Budget und Funktionen für eine benutzerdefinierte Erstellung können schwer abzuschätzen und zu planen sein. Und eine Nischenauswahl an Technologie kann es schwierig machen, zusätzliches Entwicklungs-Know-how zu finden.

Eine dritte Überlegung ist, was Ihre Sprache (n) der Wahl für die Entwicklung Ihrer Anwendung ist. Einige Sprachen haben vollständigere/ausgereiftere/dokumentierte Treiber und/oder Framework-Abstraktionen für die verschiedenen Datenbanken.

Das heißt, das Schreiben eines E-Commerce-Systems scheint für viele Entwickler ein Übergangsritus zu sein ;-).

Für MongoDB insbesondere, können Sie in aussehen sollen:

  • Forward - eine neue Open-Source-E-Commerce-Plattform MongoDB mit (mit erklärter Absicht andere Datenbanken unterstützen). Derzeit als "Private Beta" beschrieben, aber es lohnt sich, sie zu untersuchen (und wird anscheinend bereits für einige Live-Sites verwendet). Ich habe bemerkt, dass es kürzlich im MongoDB-Blog erwähnt wurde: How MongoDB makes custom e-commerce easy.

  • MongoDB and E-Commerce - ein Blog-Post von Kyle Banker, Autor des Buches Manning MongoDB In Aktion. Es ist ein paar Jahre alt, aber hat eine interessante Diskussion über Datenmodellierung Überlegungen; Es gab auch ein Follow-up über E-Commerce Inventory. Hinweis: Die für MongoDB verfügbaren Optionen aggregation und reporting haben sich seit diesen Posts stark verbessert.

  • Perform Two-Phase Commits - ein Design-Muster in MongoDB Multi-Dokument-Updates dafür

Die Master-Master-Replikation (MVCC) Sie erwähnen, scheint nicht, wie es ein relevantes Merkmal für E-Commerce sein würde, , wo Sie im Allgemeinen eine starke Konsistenz und keine Konsistenz benötigen. Sie erwähnen die Synchronisierung von Benutzerdatenbanken, sodass diese spezifische Anforderung möglicherweise besser von einer Single Sign-On-Lösung wie OpenID angegangen werden kann.

+0

Es wird Mitgliedschaften geben, aber es wird einfach und nicht der Schwerpunkt des Produkts sein. Der Hauptdienst, für den diese verwendet wird, ist ein POS-Produkt im Laden und ein Produktkatalog. Ja, es gibt Lösungen, aber viele von ihnen sind sperrig und schwerfällig. Sie haben auch keine Optionen für die anderen Funktionen, die wir brauchen. Nicht zu vergessen, wir versuchen, dies auf der Grundlage eines Startup zu schaffen, als ein Produkt/Service zu verkaufen, zusammen mit der Verwendung als unser eigenes System in unserem Geschäft. Außerdem wird jede Komponente der Anwendung in mehrere Plugins aufgeteilt. Portabilität zulassen. – skift

+0

Dies wird sein eigenes Produkt und Service, den wir planen, für jeden verfügbar zu haben zu haben.Es wird auch für eine echte Schaufenster verwendet werden, und damit verbundenen Geschäft bis dahin, dass ein Freund besitzen.Das Produkt ist eine Idee von uns beiden als ein Startup.So weit, das System wird in Python geschrieben werden, als Desktop-Client wird auch getan werden müssen (im Laden POS). Der Master: Master-Replikation ist einfach eine Funktion, die ich gerne für Geschäfte haben würde um ihre Daten online zu synchronisieren, wenn ihr lokales System versagt. Sie sollten das System auch online verwenden können, wenn sie nicht an anderen Orten im Geschäft sind. – skift

+0

Ich werde auf jeden Fall den Link überprüfen, danke. – skift

2

Überprüfen Sie den Vergleich der verschiedenen verfügbaren NoSql-Datenbanken here. Passen Sie Ihre Anforderung entsprechend an.