为什么nosql用cassandra而不是mysql?

时间:2010-09-04 04:23:52

标签: mysql performance comparison nosql cassandra

我在大型数据库(数百GB)上工作,现在Mysql给我带来了或多或少的满足感。发射时我对卡桑德拉犹豫不决。

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

有几点:

  • 行上列数的更改 在Mysql中,必须事先定义它们。列 设置在表的结构中。 NoSQL中,它们可以变化。 固定结构有真正的差异表现吗?为什么?

  • 不要让这种关系对性能有益。 好的,但我没有义务制作关系表 Mysql的。我使用聚合表,即表 仅包含从其他表派生的数据,I 防止太昂贵的关节。 如果我使用这个模型,那么性能差异又是什么 在Mysql中? 举一个例子,http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/的作者 在消息USERLINE pusher中插入跟随者的X次。 我可以在MySQL中做到这一点。

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

  • 住在计算中。 MySQL提供像我这样的函数作为SUM,AVG ......这对于避免我在其他表中重新聚合我的数据非常有用。我没见过相同的 cassandra?

  • 索引怎么样?在Mysql上,我将几个字段编入索引。例如,我的表在多列上有一个主键,我选择是在函数中。卡桑德拉怎么写呢?为每行的单个标识符连接?我想我还没有完全掌握索引的管理。是否为集成或上游重新计算?

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

我想我到处走走。谢谢你赐教。

3 个答案:

答案 0 :(得分:20)

我真的不明白为什么人们会像Cassandra和MySQL一样比较数据提供者 - 你真的在这里比较苹果和橘子。

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

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

至于可伸缩性,如果像Stack Overflow或Ebay这样的庞大站点可以在SQL之上运行,我不明白为什么你的应用程序无法在SQL之上运行。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

playOrm正在帮助越来越多的OLTP系统在noSQL系统之上运行。它非常像SQL,但存在差异。您确实需要将预期增长的表分区为非常大的大小,然后可以查询这些分区。您甚至可以在分区上进行连接。您可以保持分区大小与典型的RDBMS表大小相同,并且可以扩展到您的心愿。

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