我正在进行分析任务,我们从大学图书馆获得了一个包含近300,000,000行的部分数据集。
每行包含:
我把所有这些放在一个MySQL表中,然后我开始查询我的分析任务,无论多么简单的查询(SELECT * FROM table WHERE ID = something
),需要9-10分钟才能完成。所以我为所有列创建了一个索引,这使得它显着更快~30秒。
所以我开始阅读类似的问题,人们建议切换到“宽列商店”或“搜索引擎”而不是“关系”。
所以我的问题是,用于此数据的最佳数据库引擎是什么?
答案 0 :(得分:0)
使用搜索引擎进行搜索是IMO的最佳选择。
当然是弹性搜索!
免责声明:我在弹性工作。 :)
答案 1 :(得分:0)
答案当然是“它取决于”。在您的示例中,您使用给定的ID计算数据库中的记录数。我发现很难相信MySQL需要30秒,除非你在一些呆滞的笔记本电脑上。
MySQL为众多系统提供动力,因为它功能齐全,性能稳定,性能非常好。在某些事情上(例如文本搜索,聚类等)很糟糕(或者很糟糕)
像Elasticsearch这样的系统适用于大量文本,但仍可能不适合您的系统,具体取决于使用情况。从您的架构中,您有一个文本字段(“所有者”),并且您不需要Elasticsearch在类似字段上的文本搜索功能(谁需要阻止用户名?)。 Elasticsearch也广泛用于日志文件,它也不需要文本引擎。但是,对于文本块和聚类,它是很好的。
如果这是一个课程作业,我会坚持使用MySQL。