问题 用于电子商务的NoSQL数据库


我将构建一个电子商务网站,并希望使用no-sql数据库,这将很好地适应应用程序的计划。但是当谈到哪个数据库适合这项工作时,我不确定。在比较各种DB之后,看起来最好的那些可能是mongo,沙发,甚至是orientdb。我已经看到了与MySQL相比,使用或不使用所有这些参数的论据。但他们之间(nosql数据库),哪一个适合电子商务解决方案?

请注意,对于用例,我不会在一秒钟内进行数千次交易。或类似的高写入率。它们将是温和的,但是在任何已建立的数据库都可以处理的水平上。

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

MongoDB:查询非常简单,用户友好。此外,由于最终用户可能需要在给定时间查询我可能无法提前解决的某些事情,这似乎可能更适合。我不必在db中预先存储我的查询。是否支持原子事务,但仅限于一次写入单个文档时。

OrientDB:图形数据库。大多数人都习惯了很多不同,但是根据需要,它也可以很好地适应。 Orient具有无模式的优点,并且支持ACID事务。图形数据库可以很好地与客户和产品关系很多。 Orient还支持master到master复制,类似于couchdb。

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

因此,在这3个(或者您认为可能更好的其他人)之间,在处理客户交易时,每个网站中的哪些功能可能对我有用,或者对我来说是基于电子商务的网站?

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


1666
2017-09-19 04:44


起源

去看看SQL + Solr / ElasticSearch。 SQL适用于中等查询/写入速率,数据安全性和事务安全性(谁希望两个数据库节点向两个不同的人销售相同的东西?)。 Solr / ElasticSearch提供灵活(或无)架构,非常强大的即席查询,并且搜索速度非常快。您可以每晚将SQL DB备份到单个文件中。 - aitchnyu
@aitchnyu我不确定你是否正确使用SQL。 “两个数据库节点向两个不同的人销售同一个东西”是什么意思? - Sammaye
有一个使用MongoDB的开源电子商务平台。看看:getfwd.com - Maxim Krizhanovsky
我很好奇为什么这被投了票。这对我来说似乎是一个非常可行的问题,我也看到其他人也在网上问过。并且似乎没有关于如何为电子商务网站选择nosql数据库的大量信息。 @Darhazer我现在正在检查getfwd。 - skift
我也不确定你的意思是“两个数据库节点向两个不同的人出售同样的东西”。使用nosql解决方案,我不需要像solr和弹性搜索这样的东西,因为我的所有产品数据都在一个记录中。所以它更容易查询。这降低了必须使用像solr这样的复杂事物的复杂性。我以前没用过,但已经调查过了。设置可能很简单,但是当我不需要时,它可以添加另一个工具。如果我要使用sql,请确定。不过,我仍然会研究弹性搜索的灵活模式,以涵盖所有基础。 - skift


答案:


以来 电子商务 可以包含从购物车到会员资格和定期订阅的所有内容,很难准确猜出您正在构想的要求和复杂程度。

在构建电子商务网站时,早期的一个考虑因素应该是调查是否已经存在可以满足您要求的已建立的电子商务产品或工具包。即使您的用例看起来很简单,订购,发票,付款,产品和客户关系等流程也有许多细微之处。也可以将您的应用程序分为“目录管理”方面(可能更多自定义)与“计费”(可能是第三方,甚至可能通过托管的计费/支付API)。

另一个考虑应该是您正在开发电子商务网站的人:这是为了抓住您自己的痒,还是为了客户?自定义构建的时间,预算和功能可能难以估计和安排......并且技术的利基选择可能使得难以找到/雇用额外的开发专业知识。

第三个考虑因素是您选择的语言用于开发您的应用程序。某些语言将为不同的数据库提供更完整/成熟/文档化的驱动程序和/或框架抽象。

也就是说,编写电子商务系统似乎是许多开发人员通过的仪式;-)。

特别是对于MongoDB,您可能需要查看:

  • 前锋  - 使用MongoDB的新开源电子商务平台(声明意图支持其他数据库)。目前在“私人测试版”中描述,但看起来值得调查(显然已经用于一些现场网站)。我注意到最近在MongoDB博客上提到过: MongoDB如何简化自定义电子商务

  • MongoDB和电子商务  - 来自Manning书籍作者Kyle Banker的博客文章 MongoDB在行动中。它已有几年历史了,但对数据建模考虑有一些有趣的讨论;还有一个后续行动 电子商务库存。注意: 聚合 和 报告 自那些帖子以来,MongoDB可用的选项有了很大的改进。

  • 执行两阶段提交  - 在MongoDB中进行多文档更新的设计模式

Master-Master复制(MVCC)你提到它似乎不是电子商务的相关功能,你通常需要强大的一致性而不是最终的一致性。您提到同步用户数据库,因此可能通过OpenID等单点登录解决方案可以更好地解决该特定要求。


13
2017-09-19 11:42



将有会员资格,但它将很简单,而不是产品的主要焦点。这将用作商店POS和产品目录的主要服务。是的,那里有解决方案,但许多母马笨重而笨重。他们也没有我们需要的其他功能的选项。更不用说,我们正在尝试创建基于创业公司,作为销售的产品/服务,以及在我们的商店中将其用作我们自己的系统。此外,应用程序的每个组件都将分成多个插件。允许携带。 - skift
这将是我们计划供任何人消费的自己的产品和服务。它也将被用于真正的店面和相关业务,直到那时,一个朋友拥有。产品是我们双方的想法创建为一个启动。到目前为止,系统将用python编写,因为桌面客户端最终也需要完成(在商店POS中)。主人:主复制只是我想要商店的一个功能在线同步他们的数据,如果他们的本地系统失败。他们也应该能够在线使用该系统,而不是在其他地方存储。 - skift
我肯定会查看链接,谢谢。 - skift


检查不同的可用NoSql数据库的比较 这里。符合您的要求。


2
2018-01-08 10:10





MongoDB 4现在多文档ACID交易!这使它适合电子商务!

查看: https://www.mongodb.com/transactions


0
2017-08-23 23:02