我正在使用Twitter Streaming API来监控多个关键字/用户.我打算将我从twitter获得的推文json字符串直接转储到cassandra数据库并稍后对它们进行后期处理.
这样的设计是否实用?当我有数百万条推文时会扩大规模吗?
我稍后会做的事情包括获得顶级用户,顶级主题标签等.我想保存流,以便稍后挖掘它们以获取我现在可能不知道的任何新信息.
最佳答案 重要的不是推文的数量和它们到达的速度. Cassandra每秒可以很容易地处理数千次写入,这应该没问题(Twitter目前每秒产生大约1200条推文,你可能只会得到其中的一小部分).
但是,每秒推文的变化很大.在写入量大幅增加之后,您可能会看到范围查询有所减缓.有关问题的解决方法和解决方法,请参阅Cassandra under heavy write load part i和part ii上的Acunu博客文章.
除了存储原始json之外,我还会提取一些您几乎肯定需要的常用功能,例如用户ID和主题标签,并将它们分开存储.这将为您节省大量的处理工作.
另一个要考虑的因素是计划存储的数据将如何随时间增长. Cassandra可以很好地扩展,但是您需要制定一个策略来确定如何在集群中保持负载平衡以及如何在数据库增长时添加节点.如果您尚未计划如何事先将令牌分配给新节点,那么添加节点可能是一种痛苦的经历.在添加新节点之前等待,直到您有一个重载节点是一个让您的集群崩溃的好方法.