mysql - 为什么使用 cassandra 而不是 mysql 的 nosql?

标签 mysql performance comparison nosql cassandra

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

什么我想知道之前的一切,所以这种 DBMS NoSQL 应该比 MySQL 更快?

几点:

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

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

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

  • 活在计算中。 MySQL 提供像我这样的函数作为 SUM、AVG ...,这些函数对于避免我在其他表中重新聚合数据非常有用。我还没有看到等效的 Cassandra ?

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

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

我想我四处走走。谢谢开导。

最佳答案

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

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

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

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

关于mysql - 为什么使用 cassandra 而不是 mysql 的 nosql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640899/

相关文章:

mysql - 双内连接查询在 Qt 中不起作用

mysql - 如何在同类搜索中区分 s 和 ş

cocoa - 使用 NSMutableDictionary 与 NSMutableArray 造成的性能损失>

python - cython numpy 累积函数

vb.net - 检查两个列表是否至少有一个共同项

mysql - BETWEEN 的结果为空

CentOS 6上创建线程时Java进程内存不足

java - 转换或方法调用哪个更有效/更便宜?

python - 字符串比较在python中不起作用

c - C 中的十六进制常量是无符号的,即使 L 后缀