0

我正在处理一项分析任务,我们从大学图书馆获得了包含近 300.000.000 行的部分数据集。

每行包含:

  • ID
  • 日期
  • 所有者
  • 最后期限
  • 离开日期
  • 登记日期

我把所有这些都放在一个 MySQL 表中,然后我开始查询它以用于我的分析任务,但是简单的查询 ( SELECT * FROM table WHERE ID = something) 需要 9-10 分钟才能完成。所以我为所有列创建了一个索引,这使它明显更快~ 30 秒。

所以我开始阅读类似的问题,人们建议切换到“宽列存储”或“搜索引擎”而不是“关系”。

所以我的问题是,用于这些数据的最佳数据库引擎是什么?

4

2 回答 2

0

使用搜索引擎进行搜索是 IMO 的最佳选择。

当然是弹性搜索!

免责声明:我在弹性公司工作。:)

于 2017-10-08T17:02:58.230 回答
0

答案当然是“视情况而定”。在您的示例中,您正在计算数据库中具有给定 ID 的记录数。我很难相信在 MySQL 中它会花费 30 秒,除非您使用的是一些性能不佳的笔记本电脑。

MySQL 已经为数量惊人的系统提供了支持,因为它功能齐全、稳定并且具有相当好的性能。它在某些方面很糟糕(或一直很糟糕),比如文本搜索、聚类等。

像 Elasticsearch 这样的系统可以很好地处理大量文本,但仍然可能不适合您的系统,具体取决于使用情况。在您的模式中,您有一个文本字段(“所有者”),并且您不需要 Elasticsearch 在这样的字段上的文本搜索功能(谁需要阻止用户名?)。Elasticsearch 也广泛用于日志文件,也不需要文本引擎。但是,它适用于文本块和集群。

如果这是课堂作业,我会坚持使用 MySQL。

于 2017-10-08T19:05:46.053 回答