2012-09-19 29 views
11

Construiré un sitio de comercio electrónico y me gustaría utilizar una base de datos sin sql, que se ajustará bien a los planes para la aplicación. Pero cuando se trata de la base de datos que se ajuste al trabajo, no estoy seguro. Después de comparar varios DB, los que parecen mejores pueden ser mongo, couch o incluso orientdb. He visto argumentos para todos ellos para ser utilizados o no utilizados en comparación con algo como MySQL. Pero entre ellos (bases de datos nosql), ¿cuál encajaría bien con una solución de comercio electrónico?NoSQL Database for ECommerce

Nota, para el caso de uso, no tendré miles de transacciones por segundo. O tasas de escritura similares. estarán moderadamente seguros, pero a un nivel que cualquier base de datos establecida podría manejar.

CouchDB: Tiene replicación de maestro a maestro, que realmente podría usar. De lo contrario, igual tendré que implementar la misma funcionalidad en el código de todos modos. Necesito poder tener una base de datos de usuarios, sincronizar con la nave nodriza. (los usuarios tendrán su propia base de datos potencialmente local, que podría sincronizarse con el servidor de dominios principal). Couch también es rápido, una vez que tus consultas se han almacenado en el db. Como es probable que tenga una mayor necesidad de rendimiento de lectura. Aunque no por mucho.

MongoDB: las consultas son muy sencillas y fáciles de usar. Además, con el hecho de que los usuarios finales pueden necesitar consultar ciertas cosas en un momento dado que es posible que no pueda contabilizar antes de tiempo, parece que puede ser una mejor opción. No tengo que pre-almacenar mis consultas en el db. Admite transacciones atómicas, aunque solo cuando se escribe en un solo documento a la vez.

OrientDB: Una base de datos de gráfico. muy diferente a lo que la mayoría de la gente está acostumbrada, pero con las necesidades, también podría encajar muy bien. Orient tiene los beneficios de no tener esquemas, así como de tener soporte para transacciones ACID. Hay muchas relaciones de clientes y productos con las que una base de datos de gráficos podría ser excelente. Orient también admite master to master replication, similar a couchdb.

No me malinterpreten, puedo ver cómo construir esto tradicionalmente con algo como MySQL, pero la facilidad y simplicidad de una solución nosql es muy atractiva. Aunque, en mi caso, necesitar una solución sin esquema, sería mucho más fácil en nosql que en mysql. un producto dado puede tener más o menos artículos, que otro. y evitar volver a crear una tabla cada vez que se agrega un nuevo campo, es preferible.

Entonces, entre estos 3 (o incluso otros que crees que pueden ser mejores), ¿qué características de cada uno podrían funcionar o contra mí en relación con un sitio de comercio electrónico cuando se trata de transacciones de clientes?

Editar: La razón por la que no estoy usando una solución existente, es porque con las características integradas que necesito, no hay soluciones disponibles. También pretendemos utilizar esto como un producto completo para nuestra empresa. Habrá un puñado de otras integraciones aparte de las ventas. También va a funcionar con el sistema POS de una tienda.

+0

Ve a SQL + Solr/ElasticSearch. SQL para una tasa de escritura/consulta moderada, seguridad de los datos y seguridad de las transacciones (¿quién quiere que dos nodos DB vendan lo mismo a dos personas diferentes?). Y Solr/ElasticSearch para un esquema flexible (o nulo), consultas ad-hoc muy capaces y búsquedas realmente rápidas. Posiblemente pueda hacer una copia de seguridad de su SQL DB en un solo archivo cada noche. – aitchnyu

+0

@aitchnyu No estoy seguro de que usted justifique el uso de SQL tan bien. ¿Qué quiere decir con "dos nodos DB para vender lo mismo a dos personas diferentes"? – Sammaye

+1

Hay una plataforma de comercio electrónico de código abierto que usa MongoDB. Compruébelo: getfwd.com –

Respuesta

12

Desde e-commerce puede abarcar todo, desde los carritos de la compra hasta la membresía y las suscripciones recurrentes, es difícil adivinar exactamente qué requisitos y complejidad está visualizando.

Al construir un sitio de comercio electrónico, una de las primeras consideraciones debería ser investigar si ya existe un producto de comercio electrónico o conjunto de herramientas establecido que pueda cumplir con sus requisitos. Existen muchas sutilezas en procesos como pedidos, facturación, pagos, productos y relaciones con los clientes, incluso cuando su caso de uso parece ser sencillo. También puede ser posible separar su aplicación en los aspectos de "gestión de catálogos" (posiblemente más personalizados) frente a la "facturación" (potencialmente de terceros, tal vez incluso a través de una API alojada de facturación/pago).

Otra consideración debe ser para quién está desarrollando el sitio de comercio electrónico: ¿se trata de arañar su propia picazón, o para un cliente? El tiempo, el presupuesto y las características para una construcción personalizada pueden ser difíciles de estimar y programar ... y una elección de tecnología de nicho puede dificultar la búsqueda/contratación de experiencia en desarrollo adicional.

Una tercera consideración es cuál es su (s) idioma (s) de elección para desarrollar su aplicación. Algunos idiomas tendrán controladores más completos/maduros/documentados y/o abstracciones del marco para las diferentes bases de datos.

Dicho esto, escribir un sistema de comercio electrónico parece ser un rito de iniciación para muchos desarrolladores ;-).

Para MongoDB, en particular, es posible que desee ver en:

  • Forward - una nueva plataforma de comercio electrónico de código abierto usando MongoDB (con la intención declarada de apoyar a otras bases de datos). Actualmente se describe como "beta privada" pero parece que vale la pena investigar (y aparentemente ya se usa para algunos sitios en vivo). Noté que se mencionó recientemente en el blog de MongoDB: How MongoDB makes custom e-commerce easy.

  • MongoDB and E-Commerce - un blog de Kyle Banker, autor del libro Manning MongoDB En Acción. Tiene algunos años, pero tiene una discusión interesante sobre consideraciones de modelado de datos; también hubo un seguimiento en E-Commerce Inventory. Nota: las opciones aggregation y reporting disponibles para MongoDB han mejorado mucho desde esas publicaciones.

  • Perform Two-Phase Commits - un patrón de diseño para hacer actualizaciones de múltiples documentos en MongoDB

La replicación maestro-maestro (MVCC) que mencionas no parece como que sería una característica relevante para el comercio electrónico , donde generalmente necesitaría una fuerte coherencia en lugar de una coherencia final. Menciona la sincronización de las bases de datos de usuarios, por lo que tal vez ese requisito específico podría abordarse mejor con una solución de inicio de sesión único, como OpenID.

+0

Habrá membresías, pero será simple y no será el enfoque principal del producto. El servicio principal que se utilizará es un TPV en la tienda y un catálogo de productos. Sí, hay soluciones, pero muchas de las yeguas son voluminosas y engorrosas. Tampoco tienen opciones para las otras características que necesitamos. Sin mencionar que estamos tratando de crear esto basado en una startup, como un producto/servicio para vender, junto con usarlo como nuestro propio sistema en nuestra tienda. Además, sí, cada componente de la aplicación se dividirá en múltiples complementos. Permitiendo la portabilidad. – skift

+0

Este será su propio producto y servicio que planeamos tener disponible para que cualquiera lo consuma. También se usará para una tienda real, y un negocio relacionado hasta entonces, que sea propiedad de un amigo. El producto es una idea de nosotros dos. para crear como una startup. Hasta ahora, el sistema estará escrito en python, ya que un cliente de escritorio también tendrá que hacerlo (en la tienda POS). El maestro: la replicación maestra es simplemente una característica que me gustaría tener para las tiendas para sincronizar sus datos en línea, si alguna vez falla su sistema local. También deberían poder usar el sistema en línea, cuando no esté en la tienda en otros lugares. – skift

+0

Definitivamente voy a consultar el enlace, gracias. – skift

2

Consulte la comparación de las diferentes bases de datos NoSql disponibles here. Adaptarse a su requisito según eso.