我正在寻找NoSQL应用程序的好例子,它们描述了如何处理缺乏事务性,正如我们在关系数据库中所知道的那样。我最感兴趣的是写密集型代码,因为对于大多数只读代码来说,这是一个更容易的任务。我已经阅读了很多关于NoSQL的内容,关于CAP定理,最终的一致性等等。然而,这些事情往往集中在数据库架构上,而不是与它一起使用的设计模式。我确实理解在分布式应用程序中实现完全事务性是不可能的。这就是为什么我想了解应该降低要求的位置和方式,以使任务可行。
编辑:
并非最终的一致性是我自己的目标。目前我还没有真正看到如何将NoSQL用于某些写密集型的东西。说:我有一个简单的拍卖系统,有优惠。理论上,接受报价的第一个人获胜。在实践中,我希望至少保证只有一个胜利者,并且人们在同一个请求中得到他们的结果。这可能不可行。但是如何在实践中解决它 - 也许一些请求可能需要比平时更长的时间,因为出了问题。也许一些请求应该自动刷新。这只是一个例子。
答案 0 :(得分:26)
答案 1 :(得分:3)
许多应用程序的最终一致性很好。将Twitter视为一个相当着名的例子。没有理由你的“推文”必须立即传递给你所有的“粉丝”。如果你的“推文”需要几秒钟(甚至几分钟?),谁会注意到?
如果您需要非网络示例,任何存储转发服务(如电子邮件和USENET)都需要最终的一致性。
答案 2 :(得分:1)
在NoSQL中获取事务或一致性并非不可能。很多人在缺乏交易方面定义NoSQL或者最多需要最终的一致性,但这不准确。那里有交易性的nosql产品 - 例如,考虑元组空间 - 即使在提供应用程序一致性的同时也能很好地扩展。