对于一点背景 – 这个问题涉及在单个小EC2实例上运行的项目,并且即将迁移到一个。主要组件是Django,MySQL和大量的用python和java编写的自定义分析工具,它们做的很重
提升。同一台机器也运行Apache。
数据模型看起来像下面这样 – 大量的实时数据来自各种网络传感器,理想情况下,我想建立一个长轮询的方法,而不是每15分钟的方法的当前轮询(限制计算统计数据和写入数据库本身)。一旦数据进来,我存储的原始版本
MySQL,让分析工具松散这个数据,并将统计信息存储在另外几个表中。所有这些都是使用Django呈现的。
关系功能我需要 –
>顺序[SliceRange在Cassandra的API似乎满意这个]
>分组
> Manytomany多个表之间的关系[Cassandra SuperColumns似乎对一对多很好]
> Sphinx在这给我一个很好的全文本引擎,所以这也是一个必要性。 [在Cassandra,Lucandra项目似乎满足这个需要]
我的主要问题是数据读取非常慢(和写入也不是那么热)。我现在不想投入很多钱和硬件,我更喜欢可以随时间缩放的东西。垂直缩放MySQL在这个意义上不是微不足道(或便宜)。
所以基本上,在阅读了很多关于NOSQL和实验MongoDB,Cassandra和Voldemort之后,我的问题是,
>在中型EC2实例上,通过转移到Cassandra,我能在读/写中获得任何好处吗? This article(pdf)肯定似乎暗示了。目前,我想说,每分钟几百写就是常态。对于读取 – 由于数据每5分钟左右改变一次,缓存失效必须很快发生。在