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

Mysql 历史数据的存储和分析-什么样的数据库?,mysql,plot,nosql,Mysql,Plot,Nosql,我目前正在设计一个系统,用于观看youtube视频的排名/视图。每天都有大量youtube视频(>500000,并且还在增长) 我目前正在考虑将其存储在MySQL数据库中,但令我不安的是,该表将增长到数十亿到万亿行,我认为这不会很好地执行 我需要分析这些数据,例如: 哪些视频在X和Y之间增长了很多 绘制每天的点击次数 绘制每周点击次数 还有一些事情我还不知道 所以,我想到的Web2.0是,有没有办法让NoSQL数据库更好地处理这个问题?我没有完全了解这些(几乎)新的数据库,也不知道它们能做什

我目前正在设计一个系统,用于观看youtube视频的排名/视图。每天都有大量youtube视频(>500000,并且还在增长)

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

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

  • 哪些视频在X和Y之间增长了很多
  • 绘制每天的点击次数
  • 绘制每周点击次数
  • 还有一些事情我还不知道
所以,我想到的Web2.0是,有没有办法让NoSQL数据库更好地处理这个问题?我没有完全了解这些(几乎)新的数据库,也不知道它们能做什么

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


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

很难为数据库系统提供建议,因为它总是依赖于。然而,考虑到Facebook是基于MySQL构建的,这表明MySQL的性能对您来说可能没有限制

您可能已经做过的有帮助的事情是创建一个表结构应该是什么样子的结构。然后还要考虑要针对表运行的查询

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

  • 如果要将索引用于范围扫描,则该索引不能再用于排序依据
  • 对于要使用的完整索引,范围列必须是串联索引中的最后一个,同样适用于
    ORDER BY
有关更多信息,请访问mysqlperformanceblog.com上的有用链接:


一般来说,如果数据库的结构经过深思熟虑,索引也很好,根据我的经验,实际上只有10000行或100亿行并不重要,查询时间也差不多。

考虑到性能,请注意:你知道Facbook是基于MySQL构建的吗?是的,我想我在某个时候读过这篇文章。我提出这个问题的动机主要是担心“太大的表”(不是集群)和对历史数据的快速评估。我目前正在mysql上进行实验,但我不确定这是否是正确的选择。老实说,如果您首先关心的是太大的表,我认为您不必担心,如果:您可以使用索引缩小搜索结果的范围。索引被用作行指针,所以行数不会影响索引,它只是简单地指向那些正确的行。。。