cas*_*sey 16 mysql database database-design nosql
我想知道其他一些非关系型数据库是否适合活动流 - 有点像你在Facebook上看到的,Flickr(http://www.flickr.com/activity)等.现在,我我正在使用MySQL,但它非常繁琐(我有数以千万计的活动记录),因为它们基本上只读一次并且总是按时间顺序查看,所以我认为另一个数据库可能运行良好.
活动是这样的:
问题在于,与Twitter和其他一些系统不同,我不能简单地将活动附加到对活动感兴趣的每个用户的列表中 - 如果我能看起来Redis非常适合(使用其列表操作).
我需要能够做到以下几点:
我一直用MySQL做这件事.我的"活动"表格尽可能紧凑,键尽可能小,并且它被适当地索引.它有效,但它只是感觉这个工作的错误工具.
有没有人在传统的RDBMS之外做这样的事情?
更新2009年11月:回答我自己的问题还为时过早,但我目前的解决方案是坚持使用MySQL,但使用Redis进行扩充,以便快速访问新的活动流数据.我在这里回答的更多信息:如何在社交网络中实现活动流 ...
2014年8月更新:多年后,我仍然使用MySQL作为记录系统,并使用Redis快速访问每个用户的最新活动.由于pt-online-schema-change,处理大规模MySQL表上的模式更改已成为一个非问题
在你完全了解情况之前,我确实建议继续使用MySQL(或RDBMS).
我不知道您计划使用多少性能或大量数据,但30M行并不是很多.
如果需要优化某些范围扫描,可以通过明智地选择(隐式聚类)主键和/或在必要时进行非规范化来(例如)InnoDB执行此操作.
但与大多数事情一样,首先使其工作,然后在生产级硬件上修复在性能测试实验室中检测到的性能问题.
编辑:其他一些观点:
简而言之......您不能使用键/值数据库作为避免ALTER TABLE的快捷方式.