适用于大型数据集

时间:2017-10-08 16:52:56

标签: mysql elasticsearch relational-database wide-column-store

我正在进行分析任务,我们从大学图书馆获得了一个包含近300,000,000行的部分数据集。

每行包含:

  • ID
  • 日期
  • 所有者
  • 截止日期
  • CHECKOUT_DATE
  • CHECKIN_DATE

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

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

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

2 个答案:

答案 0 :(得分:0)

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

当然是弹性搜索!

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

答案 1 :(得分:0)

答案当然是“它取决于”。在您的示例中,您使用给定的ID计算数据库中的记录数。我发现很难相信MySQL需要30秒,除非你在一些呆滞的笔记本电脑上。

MySQL为众多系统提供动力,因为它功能齐全,性能稳定,性能非常好。在某些事情上(例如文本搜索,聚类等)很糟糕(或者很糟糕)

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

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