mysql - 历史数据的存储和分析 - 什么样的数据库?

标签 mysql plot nosql

我目前正在设计一个系统,用于查看 YouTube 视频的排名/观看次数。每天有大量 YouTube 视频(> 500.000 个并且还在不断增加)。

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

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

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

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

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

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

最佳答案

给数据库系统提供建议是非常困难的,因为它总是取决于情况。然而,考虑到 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 亿行,实际上并不重要,查询时间将大致相同。

关于mysql - 历史数据的存储和分析 - 什么样的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268214/

相关文章:

php - 使用 PHP 查询访问 3 个不同选项卡的 MySql 数据库

mysql - 如何从两个表中查询相邻的分层数据,其中一行是类别,其余是该类别的内容?

python - 在 Altair 中的绘图上重叠垂直线

elasticsearch - 日期直方图中的 Kibana 4 时间窗口

angular - Firebase实时数据库中有 "Multi-Path Push"这样的东西吗?

mysql - postgresql Rails 价格范围过滤器之间

php - 从数组中只选择一个数字 MySQL PHP

python /Matplotlib : adding regression line to a plot given its intercept and slope

python - 将 y 轴格式化为百分比

redis - 使用 Redis 进行内存缓存,使用 DynamoDB(或 Cassandra)进行 URL 缩短器