Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在分布式系统中,存储提前输入建议的trie的最佳方式是什么?_Database_Search_Scalability_Trie_Typeahead - Fatal编程技术网

Database 在分布式系统中,存储提前输入建议的trie的最佳方式是什么?

Database 在分布式系统中,存储提前输入建议的trie的最佳方式是什么?,database,search,scalability,trie,typeahead,Database,Search,Scalability,Trie,Typeahead,我一直在读一些关于尝试的文章,以及它们是如何成为一个好的排字设计结构的。除了trie之外,您通常还拥有节点的键/值对和预先计算的top-n建议,以改进响应时间 通常,从我收集的信息来看,最好将它们保存在内存中,以便进行快速搜索,如在这个问题中所建议的:。但是,如果您的Trie太大,您必须以某种方式将其切碎,该怎么办?(例如,可能是一个大型电子商务网站) 预先计算的建议的键/值对显然可以在键/值存储中实现(保存在内存中,如memcached/redis或数据库中,并根据需要进行水平缩放),但是如果

我一直在读一些关于尝试的文章,以及它们是如何成为一个好的排字设计结构的。除了trie之外,您通常还拥有节点的键/值对和预先计算的top-n建议,以改进响应时间

通常,从我收集的信息来看,最好将它们保存在内存中,以便进行快速搜索,如在这个问题中所建议的:。但是,如果您的Trie太大,您必须以某种方式将其切碎,该怎么办?(例如,可能是一个大型电子商务网站)

预先计算的建议的键/值对显然可以在键/值存储中实现(保存在内存中,如memcached/redis或数据库中,并根据需要进行水平缩放),但是如果trie不能存储在内存中,那么存储trie的最佳方法是什么?到底是应该这样做呢,还是应该让分布式系统在内存中分别保存trie的一部分,同时也复制它以避免丢失

P>可选地,可以使用搜索服务(例如SoR或ErrearCearch)来生成搜索建议/自动完成,但我不确定该特定的用例是否达到标准。Trie的优点是,您可以根据其结构预先计算top-N建议,让搜索服务处理网站上的实际搜索

我知道这方面有现成的解决方案,但我最感兴趣的是学习如何在这方面重新发明轮子,或者如果有人想提出这个话题,至少看一看最佳实践

你的想法是什么

编辑:我还看到了这篇文章:,它基本上涵盖了使用Redis作为跳过列表的主要数据存储,使用mongodb作为LRU前缀。似乎是一个不错的方法,但我仍然想知道是否还有其他可行/更好的方法