2012-09-19 85 views
11

我将构建一个电子商务网站,并希望使用一个非sql数据库,这将非常适合应用程序的计划。但是当涉及到哪个数据库适合这项工作时,我不知道。在比较各种数据库之后,似乎最好的数据库可能是mongo,沙发,甚至是orientdb。与MySQL相比,我看到所有这些参数都被使用或不被使用。但是在它们自己之间(nosql数据库),哪一个可以很好地适应电子商务解决方案呢?电子商务的NoSQL数据库

请注意,对于用例,我不会有数以千计的交易秒。或者同样高的写入速率。他们肯定会适中,但是在任何已建立的数据库可以处理的水平上。

CouchDB:拥有主控复制,我真的可以使用它。如果没有,我仍然必须在代码中实现相同的功能。我需要能够有一个用户数据库,与母舰同步。 (用户将拥有自己的潜在本地主机数据库,可以与主域服务器同步)。一旦你的查询被存储在数据库中,沙发也是快速的。因为我可能会有更高的读取性能需求。虽然不是很多。

MongoDB:查询非常简单和用户友好。另外,由于最终用户可能需要在特定时间查询某些事项,而我可能无法提前考虑,所以这看起来似乎更适合。我不必在数据库中预存我的查询。不支持原子事务,尽管只是一次写入单个文档。

OrientDB:一个图形数据库。与大多数人习惯的情况大不相同,但有了这些需求,它也可以很好地适应。东方有无模式的好处,并且支持ACID交易。图形数据库可能非常适合很多客户和产品关系。 Orient也支持master来掌握复制,类似于couchdb。

不要误会我的意思,我可以看到如何使用像MySQL的传统建造这一点,但一个的NoSQL解决方案的易用性和简单性,是非常有吸引力的。尽管在我的情况下需要一个无模式解决方案,但在nosql而不是mysql中要容易得多。一个给定的产品可能比另一个具有更多或更少的项目。并且避免每当添加新字段时重新创建表格,都是可取的。

所以这3个(或者甚至是其他你认为可能会更好)之间,与客户交易时,交易的问候每个什么特点可能为工作,或反对我的电子商务基础的网站,?

编辑:我不使用现有解决方案的原因,是因为集成的功能,我需要的,有没有解决方案可在那里。我们也打算将此作为我们公司的完整产品。除了销售之外,还有其他一些整合。它也将与商店的POS系统合作。

+0

查看SQL + Solr/ElasticSearch。 SQL用于中等的查询/写入速率,数据安全性和交易安全性(谁希望两个DB节点向两个不同的人出售相同的东西?)。 Solr/ElasticSearch适用于灵活(或没有)模式,非常有能力的即席查询和真正快速的搜索。您可以每晚备份SQL DB到单个文件。 – aitchnyu

+0

@aitchnyu我不确定你是否正确使用SQL。 “两个数据库节点向两个不同的人出售同样的东西”是什么意思? – Sammaye

+1

有一个使用MongoDB的开源电子商务平台。检查出来:getfwd.com –

回答

12

由于电子商务可以涵盖从购物车到成员资格和定期订阅等所有内容,因此很难准确猜测您所设想的具体要求和复杂程度。

当构建电子商务网站,初期考虑的因素之一,应调查是否已经有一个既定的电子商务产品或工具包能够满足您的要求。有许多微妙的样订货,开票,付款,产品和客户关系的过程,即使你的使用情况似乎简单明了。它也有可能给您的应用程序进入“目录管理”方面(可能更多的自定义)与“结算”分开(潜在的第三者,甚至通过托管结算/支付API)。

另一个要考虑的应该是你正在开发的电子商务网站谁:这是搔自己的痒,或对客户的?定制构建的时间,预算和功能可能难以估算和计划..而技术的选择可能使其很难找到/聘用更多的开发专业技术。

第三个要考虑的是你的选择的语言(S)是开发应用程序。一些语言对于不同的数据库将具有更完整/成熟/记录的驱动程序和/或框架抽象。

也就是说,写一个电子商务系统似乎是通过对许多开发商;-)仪式。

MongoDB的特别,你可能想看看:

  • Forward - 使用MongoDB的一个新的开源电子商务平台(含意向声明,以支持其他数据库)。目前描述为“私人测试版”,但看起来值得研究(显然已用于一些现场)。我注意到它最近在MongoDB博客中提到:How MongoDB makes custom e-commerce easy

  • MongoDB and E-Commerce - 凯尔银行家,曼宁本书的MongoDB笔者在行动博客中。它已经过了几年了,但在数据建模方面有一些有趣的讨论;还有一个关于E-Commerce Inventory的后续行动。注意:从这些帖子开始,可用于MongoDB的aggregationreporting选项已经大大改善。

  • Perform Two-Phase Commits - 似乎在MongoDB中

    做多文档更新

的主 - 主复制(MVCC)你提到一个设计模式并不像它会是电子商务相关功能,你通常需要强大的一致性而不是最终的一致性。您提到了同步用户数据库,因此或许可以通过像OpenID这样的单点登录解决方案更好地解决该特定需求。

+0

会员会有,但它会很简单,而不是产品的主要焦点。这将用作主要服务,是店内POS和产品目录。是的,那里有解决方案,但许多庞大笨重的麻烦。他们也没有选择我们需要的其他功能。更不用说,我们正在尝试以创业为基础,将其作为一种产品/服务进行销售,并将其作为我们自己的系统应用于我们的商店。另外,应用程序的每个组件都将被分离成多个插件。考虑到可移植性。 – skift

+0

这将是自己的产品和服务,我们计划可供所有人consume.It也将被用于真正的店面,以及相关业务,直到这时,一个朋友own.The产品是来自美国的一个想法以创建一个启动。到目前为止,系统将用python编写,因为桌面客户端最终还需要完成(在商店POS中)。主控制器:主复制是我希望为商店提供的一项功能在线同步他们的数据,如果他们的本地系统失败的话。他们还应该能够在没有存储在其他地方时从在线使用该系统。 – skift

+0

虽然我一定会检查链接,谢谢。 – skift

2

检查不同的可用NoSQL数据库here的比较。按照你的要求。