【问题标题】:Why nosql with cassandra instead of mysql?为什么 nosql 用 cassandra 而不是 mysql?
【发布时间】:2010-09-04 04:23:52
【问题描述】:

我在大型数据库(数百 GB)上工作,而 Mysql 现在或多或少地让我感到满意。我对 cassandra 的发布犹豫不决。

之前什么都想知道,所以这种DBMS NoSQL应该比MySQL快吧?

几点:

  • 一行上列数的变化 在Mysql中,它们都必须事先定义好。列 设置在表的结构中。 在 NoSQL 中,它们可以是多种多样的。 固定结构有真正的不同性能吗?为什么?

  • 不要让关系有利于性能。 好的,但我没有义务制作关系表 mysql。我使用聚合表,即表 仅包含来自其他表的数据,我 防止接头太贵。 如果我使用这个模型,再次出现什么级别的性能差异 在 MySQL 中? 举个例子,http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/的作者 在消息 USERLINE pusher 中插入 X 次关注者。 我可以在 MySQL 中做到这一点。

  • 可扩展性、可扩展性、可扩展性......我喜欢它,cassandra 是否允许我将数据存储在不同的服务器上(没有 SAN)? 我不是在说复制,我说的是跨多个物理服务器的单个 NoSQL 服务器。

  • 实时计算。 MySQL 提供了像我这样的函数,如 SUM、AVG ......这对于避免我在其他表中重新聚合我的数据非常有用。我没见过等价的 卡桑德拉?

  • 索引呢?在 Mysql 上,我将几个字段合二为一。例如,我的表在多个列上有一个主键,我选择的是功能性的。 cassandra 上怎么写呢?每行的单个标识符的连接?我想我还没有完全掌握索引的管理。是否为集成或上游重新计算?

  • 异步请求。在我看来这是一个错误的论点,Mysql 可以通过 INSERT / UPDATE LOW_PRIORITY 完成。

我想我会四处走动。多谢赐教。

【问题讨论】:

    标签: mysql performance comparison nosql cassandra


    【解决方案1】:

    我真的不明白为什么人们将 Cassandra 和 MySQL 之类的数据提供程序放在一起进行比较——您在这里真的是在比较苹果和橘子。

    是的,在某些情况下,NoSQL 解决方案可以提供比 SQL 更好的性能。但是不要忘记他们提供这种速度的原因——他们放弃了一些您在 SQL 中经常认为理所当然的检查。例如,您不会在 NoSQL 系统中看到诸如事务之类的东西,也不会拥有作为 SQL 系统的一部分获得的那种连接和数据聚合功能。在数据一致性方面,您得到的保证很少。

    对于 99% 的应用程序来说,花费时间和精力是不值得的。如果你是 facebook 或 twitter,你有大量的非结构化数据,你不在乎是否真的在混乱中丢失了一些数据,或者在插入数据后何时可用数据存在延迟,NoSQL很好。但是,对于绝大多数应用程序,您仍应坚持使用 SQL。

    至于可扩展性,如果像 Stack Overflow 或 Ebay 这样的大型网站可以在 SQL 之上运行,我不明白为什么您的应用程序不能在 SQL 之上运行。

    【讨论】:

    • 我不明白为什么在数据结构相等的情况下性能会有如此差异,因为我没有看到mysql与cassandra相比不能做(否则会破坏数据) .实际上,我在 SAS HD 15k tr/min 上运行,并且在一台服务器上达到了可用空间的限制。所以我可以选择创建一个 SAN(非常昂贵的解决方案)或迁移到一个可扩展存储的 DBMS(如果它经过优化,那么它是最快的),或者再次,一个针对包含我的目标数据的服务器的软件解决方案(但采取开发时间很长)。
    • @Xorax:“在数据结构相等的情况下”是什么意思?如果您看到显着的性能差异,那么数据结构很可能不相等。您不会轻易击败大多数 SQL 引擎。如果 SQL 对于您的应用程序来说太慢,我怀疑您需要在正确的位置添加索引。要么,要么你需要对你的数据进行一些非规范化。
    • @BillyONeal 你说得很有道理,为什么在没有必要切换它的情况下从 MySQL 转移到其他一些 DBMS,但有时仅仅依靠一个 DBMS 并不能满足要求. Twitter 目前正在使用 MySQL 来满足其所有用户数据需求,并使用 Cassandra 来满足其分析工具。
    【解决方案2】:

    是的,您绝对可以通过减少大量开销来调整 MySQL 以提高性能。 NoSQL 一开始就没有启用它们的功能,从而减少了开销。

    NoSQL 的应用与传统的 SQL 结构有很大不同。默认情况下,SQL 针对 OLTP 性能进行了调整,具有规范化的模式结构和连接查询的能力等。另一方面,NoSQL 是一种很好的快速读/写结构。一个非常好的例子是 twitter/facebook 上的活动提要(我不知道 Twitter/FB 是否使用 NoSQL,我只是举个例子)。

    【讨论】:

    • Cassandra 最初是由 facebook 开发的,所以他们确实使用 NoSql
    【解决方案3】:

    playOrm 正在帮助越来越多的 OLTP 系统超越 noSQL 系统。它非常类似于 SQL,但存在差异。您确实需要对您期望增长到非常大的表进行分区,然后可以查询这些分区。您甚至可以对分区进行连接。您保持分区大小与典型的 RDBMS 表大小相同,并且可以根据自己的需要进行扩展。

    所以对于您的索引和计算问题,我认为越来越多的工具将构建在 nosql 系统上。无论如何,这可能是解决您问题的一种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多