2012-09-19 15 views
11

Będę budować witrynę e-commerce i chciałbym korzystać z bazy danych bez sql, która będzie dobrze pasować do planów tej aplikacji. Ale jeśli chodzi o to, która baza danych pasowałaby do zadania, nie jestem pewien. Po porównaniu różnych DB, najlepsze wydają się mongo, couch, a nawet orientdb. Widziałem argumenty, aby wszystkie były używane lub nie używane w porównaniu do czegoś takiego jak MySQL. Ale między sobą (z bazami danych nosql), który pasowałby do rozwiązania e-commerce?Baza danych NoSQL dla handlu elektronicznego

Uwaga, w przypadku użycia, nie będę mieć tysiące transakcji na sekundę. Lub podobnie wysokie szybkości zapisu. będą umiarkowani pewni, ale na poziomie, który mogłaby obsłużyć dowolna ustalona baza danych.

CouchDB: Ma master do master replikacji, której naprawdę mogłem używać. Jeśli nie, to i tak będę musiał zaimplementować tę samą funkcjonalność w kodzie. Potrzebuję mieć bazę danych użytkowników, zsynchronizować się ze statkiem-matką. (użytkownicy będą mieli własną, potencjalnie lokalną bazę danych, która może być zsynchronizowana z głównym serwerem domen). Kanapa jest również szybka, gdy twoje zapytania zostaną zapisane w db.As prawdopodobnie będę potrzebował większej wydajności odczytu. Chociaż nie przez wiele.

MongoDB: zapytania są bardzo proste i przyjazne dla użytkownika. Ponadto, z uwagi na to, że użytkownicy końcowi mogą potrzebować zapytać o określone rzeczy w danym momencie, których nie jestem w stanie uwzględnić z wyprzedzeniem, wydaje się, że może to być lepsze dopasowanie. Nie muszę przechowywać moich zapytań w bazie danych. Obsługuje transakcje atomowe, ale tylko w przypadku pisania do pojedynczego dokumentu na raz.

OrientDB: Baza danych wykresów. znacznie różni się to, do czego przyzwyczajają się większość ludzi, ale z potrzebami może też dobrze pasować. Orient ma zalety bycia bezmyślnym, a także ma wsparcie dla transakcji ACID. Istnieje wiele relacji klientów i produktów, z którymi baza danych wykresów może być świetna. Orient obsługuje także replikację master-master, podobnie jak w couchdb.

Nie zrozumcie mnie źle, widzę, jak budować to tradycyjnie za pomocą czegoś takiego jak MySQL, ale łatwość i prostota rozwiązania nosql jest bardzo atrakcyjna. Mimo to, w moim przypadku, potrzebujące rozwiązania odrealniającego byłoby znacznie łatwiejsze w nosql niż mysql. dany produkt może mieć więcej lub mniej przedmiotów niż inny. i unikanie ponownego tworzenia tabeli za każdym razem, gdy dodawane jest nowe pole, jest preferowane.

Pomiędzy tymi 3 (lub nawet innymi, które Twoim zdaniem mogą być lepsze), jakie funkcje w każdej z nich mogą potencjalnie pracować, lub przeciwko mnie, jeśli chodzi o stronę e-commerce, w przypadku transakcji z klientami?

Edytuj: Powodem, dla którego nie używam istniejącego rozwiązania, jest to, że dzięki zintegrowanym funkcjom, których potrzebuję, nie ma dostępnych rozwiązań. Chcemy również wykorzystać to jako pełny produkt dla naszej firmy. Będzie kilka innych integracji niż tylko sprzedaż. Będzie również pracować z systemem POS sklepu.

+0

Przejdź do SQL + Solr/ElasticSearch. SQL dla umiarkowanego tempa zapytań/zapisu, bezpieczeństwa danych i bezpieczeństwa transakcji (kto chce dwa węzły DB sprzedać to samo dwóm różnym osobom?). I Solr/ElasticSearch dla elastycznego (lub nie) schematu, bardzo przydatnych zapytań ad-hoc i naprawdę szybkiego wyszukiwania. Możesz ewentualnie wykonać kopię zapasową SQL DB do jednego pliku każdej nocy. – aitchnyu

+0

@aitchnyu Nie jestem pewien, czy dobrze uzasadniasz użycie SQL. Co rozumiesz przez "dwa węzły DB sprzedające to samo dwóm różnym osobom"? – Sammaye

+1

Istnieje platforma e-commerce typu open-source, która używa MongoDB. Sprawdź to: getfwd.com –

Odpowiedz

12

Od e-commerce może obejmować wszystko, od koszyków do członkostwa i powtarzających się subskrypcji, trudno jest dokładnie zgadnąć, jakie wymagania i złożoność sobie wyobrazić.

Podczas budowy witryny e-commerce, jednym z wczesnych rozważań powinno być zbadanie, czy istnieje już ustalony produkt e-commerce lub zestaw narzędzi, który może spełnić Twoje wymagania. Istnieje wiele subtelności takich procesów, jak zamawianie, fakturowanie, płatności, produkty i relacje z klientami, nawet jeśli przypadek użycia wydaje się być prosty. Możliwe jest również rozdzielenie aplikacji na aspekty "zarządzania katalogiem" (prawdopodobnie bardziej niestandardowe) w porównaniu do "rozliczeń" (potencjalnie stron trzecich, być może nawet za pośrednictwem hostowanego interfejsu API do fakturowania/płatności).

Kolejnym czynnikiem, który należy rozważyć, jest określenie, kto tworzy witrynę e-commerce: czy ma to na celu porysowanie własnego świstu, czy też klienta? Czas, budżet i funkcje niestandardowej kompilacji mogą być trudne do oszacowania i zaplanowania ... a niszowy wybór technologii może utrudnić znalezienie/wynajęcie dodatkowej wiedzy programistycznej.

Trzecia uwaga jest tym, jaki język (i) wybierzesz (-aś) dla rozwijania aplikacji. Niektóre języki będą miały bardziej kompletne/dojrzałe/udokumentowane sterowniki i/lub abstrakcje ram dla różnych baz danych.

To powiedziawszy, pisanie systemu e-commerce wydaje się być rytuałem przejścia dla wielu programistów ;-).

Dla MongoDB w szczególności, można zajrzeć do:

  • Forward - nowej platformy open source e-commerce przy użyciu MongoDB (z deklarowanym zamiarem wspierania innych baz danych). Obecnie opisywane jako "prywatna beta", ale wygląda na warte zbadania (i podobno jest już używane w kilku witrynach na żywo). Zauważyłem, że ostatnio wspomniano o tym na blogu MongoDB: How MongoDB makes custom e-commerce easy.

  • MongoDB and E-Commerce - post z blogu Kyle Banker, autor książki MongoDB Manning w działaniu. Ma kilka lat, ale ma interesującą dyskusję na temat modelowania danych; był również kontynuacja na E-Commerce Inventory. Uwaga: opcje od aggregation i reporting dostępne dla MongoDB znacznie się poprawiły od tych postów.

  • Perform Two-Phase Commits - wzór konstrukcja robi aktualizacje wielu dokumentów w MongoDB

replikacji Master-Master (MVCC) można wymienić nie wydaje się to być istotne dla funkcji e-commerce , gdzie generalnie potrzebna byłaby silna konsystencja, a nie ostateczna konsystencja. Wspominasz o synchronizowaniu baz danych użytkowników, więc być może ten konkretny wymóg mógłby być lepiej rozwiązany za pomocą rozwiązania jednokrotnego logowania, takiego jak OpenID.

+0

Nie będzie członkostwa, ale będzie to proste, a nie główny nacisk na produkt. Główną usługą, która zostanie użyta jako, jest punkt sprzedaży POS i katalog produktów. Tak, istnieją rozwiązania, ale wiele klaczy jest nieporęcznych i nieporęcznych. Nie mają również opcji dla innych funkcji, których potrzebujemy. Nie wspominając o tym, staramy się stworzyć to w oparciu o startup, jako produkt/usługę do sprzedaży, wraz z wykorzystaniem go jako własnego systemu w naszym sklepie. Ponadto, każdy składnik aplikacji zostanie podzielony na wiele wtyczek. Umożliwienie przenoszenia. – skift

+0

Będzie to jego własny produkt i usługa, które planujemy udostępnić każdemu, kto będzie mógł je spożywać. Będzie również używany do prawdziwego sklepu i powiązanych z nim firm do tego czasu, które posiada przyjaciel. Produkt jest pomysłem od nas utworzyć jako startup. Tak daleko, system zostanie napisany w pythonie, ponieważ klient docelowy również będzie musiał zostać ostatecznie wykonany (w sklepie POS). Replikacja master: master jest po prostu funkcją, którą chciałbym mieć w sklepach aby zsynchronizować swoje dane przez Internet, jeśli ich system lokalny ulegnie awarii. Powinien także móc korzystać z systemu z Internetu, gdy nie jest dostępny w innych miejscach. – skift

+0

Zdecydowanie sprawdzę link, dzięki. – skift

2

Sprawdź porównanie różnych dostępnych baz danych NoSql here. Dostosuj swoje wymagania zgodnie z tym.