我正在做一项分析任务,我们从大学图书馆获得了一个包含近300.000.000行的部分数据集。
每一行包含:
我将所有这些放在一个MySQL表中,然后开始为我的分析任务查询这个问题,但是简单的查询(SELECT * FROM table WHERE ID = something
)需要9-10分钟才能完成。所以我为所有的列创建了一个索引,这使得它更快,更快,30秒。
因此,我开始阅读类似的问题,人们建议改为“宽栏商店”或“搜索引擎”,而不是“关系”。
所以我的问题是,对于这些数据,最好的数据库引擎是什么?
发布于 2017-10-08 17:02:58
使用搜索引擎进行搜索是最好的选择。
当然是Elasticsearch!
免责声明:我在弹性公司工作。:)
发布于 2017-10-08 19:05:46
答案当然是“视情况而定”。在你的例子中,你用一个给定的ID来计算数据库中的记录数量。我很难相信在MySQL中需要30秒的时间,除非你是在某个呆滞的笔记本电脑上。
MySQL为许多系统提供了强大的动力,因为它功能齐全、稳定,而且性能也相当好。在某些事情上,比如文本搜索、聚类等等,它是不好的(或者说是坏的)。
像Elasticsearch这样的系统可以很好地使用全局文本,但根据使用情况,仍然不太适合您的系统。从您的模式中,您有一个文本字段("owner"),并且您不需要Elasticsearch的文本搜索功能在这样的字段上(谁需要阻止用户名?)Elasticsearch也被广泛用于日志文件,而日志文件也不需要文本引擎。然而,它对文本块和聚类都很好。
如果这是一个课堂作业,我会坚持MySQL。
https://stackoverflow.com/questions/46633626
复制相似问题