为大型数据集实现快速查找:MySQL MEMORY(HEAP),Memcached或其他

前端之家收集整理的这篇文章主要介绍了为大型数据集实现快速查找:MySQL MEMORY(HEAP),Memcached或其他 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目前正在开展一个围绕医学术语SNOMED的项目.被标记的核心是三个关系数据集,它们的记录长度分别为350,000、110万和130万.我们希望能够快速查询此数据集的数据输入部分,以便在其中具有某种形式或形式的自动完成/建议.

它目前仅在MySQL MyISAM DB中用于开发目的,但我们希望开始使用一些内存选项.包括索引在内,当前大小为30MB 90MB 70MB. MEMORY MysqL Engine和MemCached是显而易见的,所以我的问题是,您会建议使用其中的哪个,或者还有更好的选择?

如果有所作为,我们主要在应用程序级别使用Python.另外,我们正在运行在一台小型专用服务器上,即将迁移到4GB DDR2.

编辑:附加信息

我们有兴趣保持建议和自动完成的速度.对于这些类型的查询器来说,将会有一些很好的表现.被修饰的每个术语通常具有多个同义词,缩写和首选名称.我们将大量查询此数据集(包括索引在内的大小为90MB).我们也正在考虑建立一个倒排索引,以加快处理速度并返回更相关的结果(许多术语很长,“蜕膜基底的整个螺旋状动脉(身体结构)”). Lucene或其他全文搜索可能是合适的.

最佳答案
请参见

> Techniques to make autocomplete on website more responsive
> How to do query auto-completion suggestions in Lucene
> autocomplete server side implementation

有关如何使用Lucene进行此操作. Lucene是最接近行业标准的全文本搜索库.它速度快,并提供高质量的结果.但是,掌握Lucene需要花费时间-您必须处理许多底层细节.一种更简单的方法可能是使用Solr,这是一个Lucene子项目,该项目更易于设置,并且可以提供JSON输出can be used for autocomplete.

正如Todd所说,您也可以使用Sphinx.我从未使用过它,但听说它与MysqL高度集成.我找不到如何使用Sphinx实现自动完成的功能-也许您应该将此作为单独的问题发布.

猜你在找的MySQL相关文章