我评估什么可能最佳的迁移选择。

目前,我在 sharded 的 MySQL (水平分区),大部分我 JSON blob 中存储的数据。我没有任何复杂的 SQL 查询 (已迁移走后由于我分区我 db)。

右现在,看起来是两个 MongoDB 和卡桑德拉是可能的选项。我的情况︰

  • 大量在每个查询中,不定期的写操作的读取
  • 不担心"巨大"的可扩展性
  • 多关注简单的安装、 维护和代码
  • 最小化硬件/服务器成本
2010-05-23 17:39:56
问题评论:

篇幅有限,我观察到,大多数情况下,已关闭的问题是很有用的 (请参见视图计数和 upvotes)。我不知道应该有另一个 StackOverflow 网站,像这样的问题,是否它们未关闭,人们仍然有助于。

Massive yup,发生故障,找到 Q,每个人都有兴趣...请将其关闭。

再一次堆栈溢出 censors 按后退。您是右瓦,太找到限定式的问题有时是更好的阅读。

这个问题还将服务于社区也没有成熟的问题中的产品为打开并随时间而发展。喜欢与否,像这样关于 Stackoverflow 的文章具有很高的 Google 排名,并将持续作为对读者的知识来源。

我同意它是如此悲伤,看到问题的多少是封闭的因为有人认为它不是对其他人有用。我认为它不会损害任何人使其保持打开状态。如果您不想只是千万不要答复。

回答:

大量在每个查询中,读取较少的正则写入

这两个数据库读取热数据集内存在适合的位置上很好地执行。同时还强调联接的数据模型 (并鼓励非规范化相反),并同时提供索引文档,尽管 MongoDB 的索引是当前更为灵活。

卡桑德拉的存储引擎提供常量时间写入不管多大的数据集变得。写入时在 MongoDB 中,问题多多,部分由于基于 b-树存储引擎,但更多是因为每个数据库上放置写锁定.

MongoDB 的分析,提供一个自定义地图/减少的实现;卡桑德拉提供本机 Hadoop 支持,包括配置单元(建立在 Hadoop 地图/减少 SQL 数据仓库) 和小猪(Hadoop 特定分析许多认为语言更好的适应比 SQL 地图/减少工作负载)。

不担心"巨大"的可扩展性

如果您正在查看单个服务器,MongoDB 可能是更好地满足。对于那些更关心缩放,卡桑德拉的无单点故障体系结构将设置更容易、 更可靠。(MongoDB 的全局写锁定往往太变得更加令人痛心。)卡桑德拉还提供了很多更好地控制您复制的工作原理,包括对多个数据中心的支持。

多关注简单的安装、 维护和代码

两者都是常用设置,以合理的框默认设置对于一台服务器。卡桑德拉会更易于在多个服务器配置设置,因为没有特殊角色节点不必担心;这里是截屏视频演示设置在两分钟内卡桑德拉 4 节点群集.

如果您目前使用 JSON blob,MongoDB 将是 insanely 适合您的用例,假设它使用 BSON 来存储数据。您可以在当前数据库中会比具有更丰富、 更可查询数据。这对于 Mongo 是最重大的胜利。

完全不同,注释并不足够,但...卡桑德拉是线性可扩展性功能快速的 dynamo/google bigtable 混合 (分期常量时间读取和写入) 写入而不考虑数据的大小。功能集是 minimalistic,除此之外排序的键值存储的很少。MongoDB 是增加耐用性,保证严重的特色 (和快速) 文档存储大约将持续 (因为他们要不立即写入到磁盘)。它们是用不同的理念,MongoDB 的接近于 RDM 更换不同大块头...

尽管卡桑德拉是较低级别,但允许 uber 缩放 (见 Twitter/Digg/Facebook),但您将必须是故意在以及布置出,生成数据辅助索引等等,由于没有灵活的查询有很大。

因为每个人都提到 twitter 这里相对于卡桑德拉︰ 他们没有使用持久化 tweets 的卡桑德拉,他们仍然使用下面的 MySQL (engineering.twitter.com/2010/07/cassandra-at-twitter-today.html)。好的但我可以想象他们仍然为其他目的而在卡桑德拉中存储大量数据。

它看上去像全局写锁定可能已被删除在 Mongo 2.2...

甚至我的项目投入之前,我感到 Mongodb 的难点。热备份是一项基本要求。进行中的 Linux 服务器热备份,您必须首先设置 LVM 分区 (不那么常用) 和每个备份会话之前拍摄快照。另一种简单方法是的使用 Mongodb 支付备份服务。但是,该服务是昂贵的 (2.3$/GB/month)。很快您将需要 replicaset 的容错能力。使用开放源代码版本节点仅以明文形式可以交换数据。对于 SSL,您必须去 Entprise 版。这就是 10000$。再见 Mongodb。我给卡桑德拉的代码进行重构。

我已经用 MongoDB 广泛 (过去 6 个月),构建分层数据管理系统,并且我可以保证易于安装 (安装它,运行它,使用它 !) 和速度。只要仔细考虑索引,它可绝对需要沿,speed-wise。

我收集卡桑德拉,由于它与搭配使用 Twitter,类似的大规模项目都更好地缩放功能,尽管 MongoDB 团队从事那里奇偶校验。我要指出一点,曾未用卡桑德拉之外的试运行阶段,所以我不能代表详细信息。

对我来说,真正的 swinger 时我们已评估 NoSQL 数据库的查询-卡桑德拉基本上就只是一个巨人的键/值存储和查询是有点 fiddly (至少对 MongoDB 相比),因此性能,您将不得不手动索引的排序方式复制到大量数据。MongoDB,另一方面,使用"示例查询"模型。

例如,假设您有一个集合 (相当于一个 RDM 表的 MongoDB 用语) 包含用户。MongoDB 文档,这些基本上是二进制的 JSON 对象作为存储记录。例如︰

{
   FirstName: "John",
   LastName: "Smith",
   Email: "john@smith.com",
   Groups: ["Admin", "User", "SuperUser"]
}

如果您想要查找所有具有管理员权限的用户称为史密斯,将刚创建新文档,(在管理控制台上使用 Javascript,或在生产使用您选择的语言中)︰

{
   LastName: "Smith",
   Groups: "Admin"
}

..厎而且再运行查询。就是这样。那里添加运算符比较,正则表达式过滤等等,但看起来确实非常简单,并且基于 Wiki 的文档就很不错了。

更新 (8 2011 年 8 月)︰ Amazon EC2 爱尔兰数据中心必须与闪电有关的事件最后一晚,并且中筛选出了我们的服务器恢复,我发现了很重要的一点︰ 如果您有两个服务器的复制集 (和它们易于设置),请确保仲裁服务器节点,因此,如果您有一个转下的另一个不死机和辅助模式中的隔栏 !请相信我,在后面的要理清大数据库与困难。

若要添加什么 @Richard K 说,应有仲裁服务器节点时有偶数个节点 (主 + 次) 副本集。

添加到认为 mongodb 时多聚合以进行数据分析。

为什么选择传统的数据库和一个 NoSQL 数据存储区之间?两者都使用 !NoSQL 解决方案 (超出了最初的学习过程) 的问题是缺乏交易记录--不要到 MySQL 的所有更新和拥有 MySQL 填充 NoSQL 数据存储,从而可以读取,然后从每个技术的优势中受益。这不会添加更多的复杂性,但您已经拥有的 MySQL 端--只是添加了 MongoDB,卡桑德拉,到组合等。

NoSQL 数据存储区通常扩展方法优于传统的数据库相同的其他指标,还有为什么 Facebook、 Twitter、 Google 和大多数刚起步的公司正在使用 NoSQL 解决方案的原因。不只是得到高新的技术的极客。

我完全同意。我正在使用 mongodb + mysql 即将发生我正在设计的产品之一。它是即将推出的金融产品云。使用 mysql 我们绝对需要事务处理功能。mongodb 用于存储非计算复杂数据结构,只需在需要时将上移至超类。到目前为止工作良好。:)

我使用我的项目,大部分的这种双重方法,在某些其他 NFS 装入的文件系统被用于 PostgreSQL 以及地震 blob,在某些情况下接近 1 Gb。路径是一种对密钥值数据库进行查询。

好主意 !谢谢。

这是一个链接到问题有人问我关于如何构建 sql 和 nosql 数据库︰ dba.stackexchange.com/questions/102053/...我可以使用可能会有一些见解

他已经有转义良好的交易记录中 = > 现在可能会无限的可扩展性.否则不:)->

我可能要被奇男士下班,但我认为您需要保持与 MySQL。没有描述现实问题需要解决,和 MySQL/InnoDB 是极好的存储后端甚至为 blob/json 数据。

还有一个常见说明 Web 工程师尝试使用多个 NoSQL 一旦实现方面使用的并不是所有的 RDBMS 功能之间。这单独不是一个充分的理由,因为通常 NoSQL 数据库具有非常薄弱的数据引擎 (什么 MySQL 调用存储引擎)。

现在,如果不该种类的则请指定是 MySQL 中缺少什么和您正在寻找在另一个数据库中 (如下所示,自动分片、 自动故障切换、 多主机复制,较弱的数据一致性保证还清在写吞吐量等的群集中)。

他正在使用分片,这意味着在服务器间手动分区数据。Mongodb 可以自动分片,它可能是一个优点。

他还在 RDBMS — 无用呈现关系设计 (功能) 来存储大部分 JSON blob。

数据模型和自动分片的确不同,但在选择数据库时,您需要第二次查看存储引擎首先,和其余的铃声和口哨声。存储引擎将如何执行下一个负载峰值?Autosharding 功能将如何执行下一个数据流入量峰值?放弃控制对数据库的这些重要方面之前,更好地应确保它将能够执行该任务。

关系模型是一种最很好地构思、 有效实施和有节俭的数据模型。"呈现关系设计功能无用"可能与约束、 触发器,或参照完整性-但它们所有都是每次使用的付薪。

我没有使用过卡桑德拉,但我已经使用 MongoDB,认为它真的非常棒。

如果您之后的简单设置,这是它。您只需解压缩 MongoDB 并运行 mongod 守护程序就是这样.它正在运行。

很明显的是只是初学者,但为获取启动它很容易。

AFAIK,这同样适用于卡桑德拉也。解压缩,运行守护进程。测试群集是安装和准备生产 !

内容来源于Stack Overflow MongoDB vs. Cassandra [closed]
请输入您的翻译

MongoDB vs. Cassandra [closed]

确认取消