【问题标题】:Storing and analysis of historical data - What kind of Database?历史数据的存储和分析——什么样的数据库?
【发布时间】:2012-06-29 20:00:52
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

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

标签: mysql plot nosql


【解决方案1】:

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

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

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

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

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

一般来说,如果数据库的结构经过深思熟虑,索引也很好,根据我的经验,实际上,如果你只有 10000 行或 100 亿行,查询时间会大致相同。

p>

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 2011-04-01
    • 2023-04-06
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多