Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB vs.Cassandra_Mongodb_Database Design_Cassandra_Database - Fatal编程技术网

MongoDB vs.Cassandra

MongoDB vs.Cassandra,mongodb,database-design,cassandra,database,Mongodb,Database Design,Cassandra,Database,我正在评估什么可能是最好的迁移选项 目前,我使用的是分片MySQL(水平分区),我的大部分数据存储在JSON blob中。我没有任何复杂的SQL查询(自从我对数据库进行分区之后,已经迁移了) 现在,MongoDB和Cassandra似乎都是可能的选择。我的情况: 每个查询中都有大量的读取,较少的常规写入 不担心“大规模”可扩展性 更关注简单的设置、维护和代码 最小化硬件/服务器成本 我没有用过卡桑德拉,但我用过MongoDB,觉得它很棒 如果您正在进行简单的安装,那么就是这样:您只需卸载Mon

我正在评估什么可能是最好的迁移选项

目前,我使用的是分片MySQL(水平分区),我的大部分数据存储在JSON blob中。我没有任何复杂的SQL查询(自从我对数据库进行分区之后,已经迁移了)

现在,MongoDB和Cassandra似乎都是可能的选择。我的情况:


  • 每个查询中都有大量的读取,较少的常规写入
  • 不担心“大规模”可扩展性
  • 更关注简单的设置、维护和代码
  • 最小化硬件/服务器成本

    • 我没有用过卡桑德拉,但我用过MongoDB,觉得它很棒

      如果您正在进行简单的安装,那么就是这样:您只需卸载MongoDB并运行mongod守护程序,就可以了。。。它在跑


      显然,这只是一个开始,但要让您开始很容易。

      我昨天在mongodb上看到了一个演示。我可以肯定地说,设置是“简单的”,就像解包和启动一样简单。完成了

      我相信mongodb和cassandra将在几乎任何常规linux硬件上运行,所以您不应该在这方面发现太多障碍

      我认为,在这种情况下,最终将取决于你个人觉得哪种工具更适合你,以及你更喜欢哪种工具集。至于mongodb的演示,演示者表示mongodb的工具集非常轻巧,而且与MySQL类似的工具并不多(他们说没有)。这当然是他们的经历。我喜欢mongodb的一点是,它似乎有很多语言支持(Python和.NET是我主要使用的两种语言)


      使用mongodb的网站列表非常漂亮,我知道twitter刚刚转向使用cassandra。

      每个查询都有大量的读取,常规写入更少

      这两个数据库在热数据集适合内存的读取上都表现良好。两者都强调无连接数据模型(并鼓励非规范化),都提供了or上的索引,尽管MongoDB的索引目前更灵活

      Cassandra的存储引擎提供了恒定的时间写入,无论数据集有多大。MongoDB中的写操作问题更大,部分原因是基于b树的存储引擎,但更多原因是它确实存在

      对于分析,MongoDB提供了一个定制的map/reduce实现;Cassandra提供本机Hadoop支持,包括(基于Hadoop map/reduce构建的SQL数据仓库)和(许多人认为比SQL更适合map/reduce工作负载的Hadoop特定分析语言)。Cassandra还支持使用

      不担心“大规模”可扩展性

      如果您只看一台服务器,MongoDB可能更适合。对于那些更关心可扩展性的人来说,Cassandra的无单点故障架构将更容易设置,也更可靠。(MongoDB的全局写锁也会变得更加痛苦。)Cassandra还提供了对复制工作方式的更多控制,包括对多个数据中心的支持

      更关注简单的设置、维护和代码

      这两种设置都很简单,对于单个服务器来说,具有合理的开箱即用默认设置。在多服务器配置中设置Cassandra更简单,因为没有需要担心的特殊角色节点


      如果您目前正在使用JSON blob,MongoDB非常适合您的用例,因为它使用BSON存储数据。您将能够拥有比当前数据库更丰富、更可查询的数据。这将是Mongo最重要的胜利。

      我已经广泛使用MongoDB(在过去6个月里),构建了一个分层数据管理系统,我可以保证安装的方便性(安装、运行、使用!)和速度。只要你仔细考虑索引,它绝对可以在速度上发出尖叫

      我收集到Cassandra,由于它在Twitter等大型项目中的使用,具有更好的扩展功能,尽管MongoDB团队正在那里进行平价研究。我应该指出,在试运行阶段之后,我还没有使用过Cassandra,所以我不能透露细节

      当我们评估NoSQL数据库时,对我来说真正的挑战是查询——Cassandra基本上只是一个巨大的键/值存储,查询有点复杂(至少与MongoDB相比),因此为了提高性能,您必须将大量数据作为一种手动索引进行复制。另一方面,MongoDB使用“示例查询”模型

      例如,假设您有一个包含用户的集合(MongoDB术语,相当于RDMS表)。MongoDB将记录存储为文档,基本上是二进制JSON对象。e、 g:

      {
         FirstName: "John",
         LastName: "Smith",
         Email: "john@smith.com",
         Groups: ["Admin", "User", "SuperUser"]
      }
      
      如果您想找到所有拥有管理员权限的名为Smith的用户,只需创建一个新文档(在管理控制台使用Javascript,或在生产中使用您选择的语言):


      …然后运行查询。就这样。添加了用于比较、正则表达式过滤等的运算符,但这一切都非常简单,基于Wiki的文档也非常好。

      我可能会成为一个怪人,但我认为您需要继续使用MySQL。您还没有描述需要解决的实际问题,MySQL/InnoDB是一个非常好的存储后端,即使对于blob/json数据也是如此

      一旦意识到并非所有RDBMS功能都被使用,Web工程师就有一个常见的技巧,即尝试使用更多的NoSQL。这本身并不是一个很好的理由,因为大多数NoSQL数据库的数据引擎很差(MySQL称之为存储引擎)

      现在,如果您不是这类人,那么请指定MySQL中缺少的内容以及您在另一个数据库中寻找的内容(例如,自动分片、自动故障切换、多数据库)-
      {
         LastName: "Smith",
         Groups: "Admin"
      }