首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL转到卡桑德拉- Pros/Cons?

从MySQL转到卡桑德拉- Pros/Cons?
EN

Stack Overflow用户
提问于 2010-02-25 06:29:33
回答 3查看 29.5K关注 0票数 60

作为背景,这个问题涉及一个运行在单个小EC2实例上的项目,并且即将迁移到一个中型实例。主要组件是Django、MySQL和大量用python和java编写的自定义分析工具,它们完成了繁重的工作。同一台机器也在运行Apache。

数据模型如下所示--大量实时数据来自各种网络传感器,理想情况下,我希望建立一种长轮询方法,而不是目前每15分钟一次的轮询(计算统计数据和写入数据库本身的限制)。一旦数据输入,我就将原始版本存储在MySQL中,让分析工具在这些数据上松开,并将统计信息存储在另外几个表中。所有这些都是使用Django呈现的。

我需要的关系特性-

  • SliceRange在Cassandra的API中的命令似乎满足了这一点
  • 按组
  • 多个表之间的关系卡桑德拉SuperColumns似乎做得很好,一对多。
  • 狮身人面像给了我一个不错的全文引擎,所以这也是必要的。在卡桑德拉,卢坎德拉项目似乎满足了这一需求。

我的主要问题是数据读取非常慢(而且写入也没有那么热)。我现在不想花很多钱和硬件在上面,我更喜欢能随时间轻松扩展的东西。垂直缩放MySQL在这个意义上并不简单(或者说很便宜)。

所以,从本质上讲,在阅读了大量关于NOSQL的文章并对MongoDB、Cassandra和Voldemort进行了实验之后,我的问题是,

  • 在一个中等的EC2实例中,通过切换到类似Cassandra这篇文章 (pdf)这样的工具,在读/写方面会获得任何好处。目前,我想说,每分钟写几百封信将是正常的。对于读取-由于数据每5分钟左右更改一次,缓存失效必须非常快。在某种程度上,它也应该能够处理大量并发用户。即使创建了索引,应用程序的性能目前也会在MySQL上被扼杀,在大型表上执行一些连接--按照32k行的顺序,渲染需要超过一分钟。(这也可能是EC2虚拟化I/O的工件)。表的大小约为400万至500万行,大约有5个这样的表。
  • 考虑到CAP定理和最终的一致性,每个人都谈到在多个节点上使用Cassandra。但是,对于一个刚刚开始增长的项目,部署一个节点cassandra服务器是否有意义?有什么警告吗?例如,它能代替MySQL作为Django的后端吗?推荐这样做吗?
  • 如果我真的改变了,我猜我将不得不重写应用程序的一部分来做更多的“管理”,因为我需要做多个查找来获取行。
  • 使用MySQL作为键值存储(而不是关系引擎)有什么意义吗?这样,我就可以利用大量可用的稳定API,以及一个稳定的引擎(并根据需要进行关系处理)。(来自Friendfeed的Brett的帖子- http://bret.appspot.com/entry/how-friendfeed-uses-mysql)

任何从那些做过转变的人的洞察力都是非常感谢的!

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-25 14:37:30

Cassandra和今天可用的其他分布式数据库并不提供您习惯于从sql中获得的那种即席查询支持。这是因为您不能在性能上使用joins分发查询,所以重点是去规范化。

不过,Cassandra0.6(测试版明天正式发布,但如果您不耐烦的话,您可以自己从0.6分支构建)支持Hadoop /,这听起来很适合您。

Cassandra为无痛地添加新节点提供了极好的支持,即使是在初始的一组节点中也是如此。

也就是说,在几百次写作/分钟内,您将在很长很长一段时间内都可以使用mysql。Cassandra在作为键/值存储(更好,键/列家族)方面要好得多,但是MySQL在作为关系数据库方面要好得多。:)

还没有django对Cassandra (或其他nosql数据库)的支持。他们正在讨论为1.2之后的下一个版本做些什么,但基于与pycon的django开发人员的对话,还没有人真正确定这会是什么样子。

票数 38
EN

Stack Overflow用户

发布于 2011-05-06 01:25:44

如果您是关系数据库开发人员(就像我一样),我建议/指出:

  • 在你承诺在生产系统上使用卡桑德拉之前,先获得一些与卡桑德拉合作的经验。特别是如果生产系统有一个很难完成的最后期限。也许先把它用作不重要的东西的后端。
  • 事实证明,在使用SQL引擎操作数据时,做一些我认为理所当然的简单事情比我预想的更具有挑战性。特别是,索引数据和排序结果集是不平凡的.
  • 事实证明,数据建模也具有挑战性。作为关系数据库开发人员,您带着许多行李来到桌面上.您需要学会如何对数据进行非常不同的建模。

这些事情说明,我强烈建议在卡桑德拉建造一些东西。如果你和我一样,那么这样做会挑战你对数据存储的理解,让你重新思考一个关系型数据库--适合所有情况的前景,而我甚至没有意识到这一点。

我发现的一些好资源包括:

票数 19
EN

Stack Overflow用户

发布于 2013-01-11 13:36:58

Django-cassandra是一个早期的测试版。而且Django没有创建非sql数据库。Django ORM中的键基于SQL (Django建议使用PostgreSQL)。如果您只需要使用no-sql (您可以在同一个应用程序中混合使用sql和no-sql ),则需要冒险地使用no-sql ORM (它比传统的SQL orm或直接使用No-SQL存储的速度要慢得多)。否则,您需要完全重写django ORM。但在这种情况下我不能推测为什么你需要Django。也许你还能用点别的,比如龙卷风?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2332113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档