首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种NOSQL数据库工具更适合我的应用程序?

哪种NOSQL数据库工具更适合我的应用程序?
EN

Stack Overflow用户
提问于 2011-01-31 20:12:06
回答 4查看 1.1K关注 0票数 3

我计划开发一些应用程序,比如与朋友的朋友的朋友联系。它可能看起来像Facebook或Twitter,但最初我计划实现它,以了解更多关于NOSQL数据库的知识。

NOSQL中有许多数据库工具。我已经经历了许多数据库类型,如文档存储、键值存储、列类型、图形数据库。最后,我提出了两个数据库工具,分别是cassandra和Neo4J。选择任何一个都是对的,如果不能纠正我的话,请给我一些宝贵的意见。

还有一件事是我选择的语言绑定是JAVA。

我的问题是,哪种数据库工具适合我的应用程序?

期待您的宝贵意见。感谢您抽出宝贵的时间。

EN

回答 4

Stack Overflow用户

发布于 2011-01-31 23:15:22

蒂姆,你真的应该单独发布你的问题,而不是作为对OP的回答,而事实并非如此。

但要回答这个问题,首先,请到http://www.slideshare.net/benjaminblack/introduction-to-cassandra-replication-and-consistency上阅读本·布莱克的幻灯片。

完成了吗?好的,现在是具体的问题:

“如何在后续读取时协调副本数据状态中的差异?”

时间戳最高者获胜。

“所有区域都使用相同的系统时钟吗?”

时间戳由客户端(即您的应用服务器)提供。它们应该与例如ntpd同步(这是一个很好的实践),但是不需要很高的精度,因为如果排序很重要,你应该通过使用唯一的列名或使用外部锁来避免冲突。

例如:如果你在Twitter克隆中有一个关注你的用户列表,你应该为每个追随者提供自己的列,无论时钟多么不同步,都不会丢失数据。

如果你的网站有一个管理工具,两个管理员“同时”上传了一个新的收藏图标,那么只有一个更新会赢,哪一个更新并不重要。在这里,你确实想要同步你的时钟,但是“几毫秒之内”已经足够接近了。

如果您正在管理用户注册,并且您希望仅当帐户"jbellis“不存在时才允许创建该帐户,那么无论您的时钟多么同步,您都需要一个锁管理器。

“会返回过时的数据吗?”

一个节点(一个比“区域”更好的单元)将不会有它在停机期间丢失的数据,直到它通过读取修复、暗示切换或反熵修复来发送该数据。同时,它将回复带有陈旧数据的读取请求;如果您使用足够高的一致性级别读取请求,则读取请求将等待足够多的其他回复,以确保您始终看到最新的版本,这可能意味着如果有足够多的其他副本关闭,则无法满足请求。

否则,较低的一致性级别(例如1)隐含地意味着“我知道,这种较低的一致性级别具有更高的可用性和更低的延迟,这意味着我可以在停机后暂时看到陈旧的数据。”

票数 4
EN

Stack Overflow用户

发布于 2011-01-31 21:01:12

我不确定我是否理解Cassandata一致性模型关于跨多个可用区的数据协议的所有含义。

假设有多个区域,并且Cassandra中的协调器节点使用的一致性级别不需要所有区域都报告,而只需要一个仲裁,那么在随后的读取中如何协调区域数据状态的差异?

所有区域都使用相同的系统时钟吗?或者每个区域都有自己的时钟?如果它们不是在同一个时钟下工作,那么如何同步它们,以便在“修复”过程中比较时间戳?

假设具有准确、最新数据的区域现在处于离线状态,而在上一次写入期间处于离线状态的区域(因此它没有得到更新,并且包含过时的数据)现在又恢复在线。会返回过时的数据吗?协调器有没有办法知道数据已经过时了?

票数 1
EN

Stack Overflow用户

发布于 2011-02-01 03:21:42

如果您在短期内不需要扩展,我会选择Neo4j,因为它旨在存储您所描述的网络。(如果你最终确实需要扩展,也许你可以把Gizzard放在它前面或者别的什么地方。祝你好运!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4850695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档