基于NoSql实现字典服务

NOSQL兴起了。BerkeleyDB早就流行了。我还是很落伍。

今天大概看了一个字典服务的东西,实现思路还是相当有意思的,而且由于时间关系,还未能完全的理解。

所谓的字典服务,既提供对于普通字符串的管理,增删改查之类,当然重点在于查,支持模糊和精确的查找某个单词是否存在于某个字典,特点就是千万级别的数据查询速度一样很快。

使用的场景还是很多的,比如一个站点的违禁词、用户黑名单等,都可以使用。

实现思路:

1,数据分为两部分:头部数据(固定长度,如前5位)和剩余部分。

2,剩余部分使用BerkeleyDB方式作为中间层,实际持久化仍然使用mysql,其中BDB加入了缓存提升效率。

3,头部数据生成深度为头部长度的树结构,每个节点存储一位数据,采用Hash来确定唯一性, 查找时从跟节点开始,一次查找,节点存在则表示该单词存在于字典中。不知道这个有什么算法基础的么?求网友指教。

4,每个剩余部分作为一个节点对待。

5,对于剩余部分的匹配则还是使用的一半字符串匹配算法。

6,系统启动时,加载头部树结构数据。

 

具体细节还有很多,以后有时间再来深入研究一下。

posted @ 2010-11-08 20:12  echozhjun  阅读(577)  评论(2编辑  收藏  举报