2

我目前正在设计一个系统来观看 youtube 视频的排名/观看次数。每天都有大量的 youtube 视频(> 500.000 并且还在增长)。

我目前正在考虑将其存储在 MySQL 数据库中,但令我不安的是,该表会增长到数十亿和数万亿行,我认为这不会很好。

我需要分析这些数据,例如:

  • 哪些视频在 X 和 Y 之间的时间里增长了很多
  • 绘制每天的点击次数
  • 绘制每周的点击次数...
  • 还有一些我还不知道的事情

那么,我的 web 2.0 想到的是,有没有一种 NoSQL 数据库可以更好地处理这个问题?我没有完全了解这些(几乎)新数据库,也不知道它们能做什么。

您的建议是什么,使用什么类型的数据库?有没有关系?如果不是,哪个 NoSQL 数据库?

PS:第一优先是快速评估和插入结果,第二是高可用(或者只是复制)

4

1 回答 1

2

为数据库系统提供建议是非常困难的,因为它总是依赖于它。但是,考虑到 Facebook 是建立在 MySQL 之上的,这表明 MySQL 对你来说可能没有性能限制。

有帮助并且您可能已经完成的是创建表结构应该是什么样子的结构。然后还要考虑您想对表运行的查询。

如果您拥有正确的索引(这是查询速度所依赖的主要和关键因素),您将不必担心 MySQL 的性能。您应该考虑的是(我必须经历的),MySQL 如何处理索引有很多有趣的事情。让我举几个我在此期间必须弄清楚的例子:

  • 如果要使用索引进行范围扫描,则不能再使用ORDER BY索引
  • 范围列必须是连接索引中的最后一个才能使用完整索引,同样ORDER BY如此

有关更多信息,请访问 mysqlperformanceblog.com 上的有用链接:http ://www.mysqlperformanceblog.com/2009/09/12/3-ways-mysql-uses-indexes/

一般来说,如果数据库的结构经过深思熟虑并且索引良好,根据我的经验,实际上如果您只有 10.000 行或 100 亿行,查询时间将大致相同。

于 2012-06-29T20:36:11.553 回答