一个网站的诞生- MagicDict未来予想図1 [水平分割数据表的构想]
2011-06-08 10:21
218 查看
检索,这个功能纯粹拼的就是数据量。同样的一个单词,我的网站能查到,你的网站查不到,或者大家都可以查到同样的词语,不过我的网站例句丰富,精度高,久而久之,大家就会认可我的网站了。互联网时代,人们的选择成本大大降低了,所以,在这个时代,只有做到第一才能生存下去。海量数据的检索,效率是第一位的。由于检索的特殊性,表格的水平分割就变得十分关键了。
由于一直在IBM大型机上做开发,使用的都是DB2这样的巨型数据库,以前数据库分割之类的事情一直没有考虑过,直到自己的网站在面对海量数据,速度明显不给力的时候,才意识到数据库需要分割了。
说到检索,日语的检索,我的构想是拥有一个总检索表格,日语汉字,日语假名,中文汉字,拼音,英语,所有的关键字都放在一张很长很长的表格里面,检索的时候,先从这张表格里面找到单词的序列号。
这样的表格怎么水平分割:
1.水平分割的依据是什么?
2.水平分割后,这么知道一个词语在那个表格里面?
由于自己的本职工作不是做NET的,所以不知道有Hash化这样的一件事情,在看到下面这篇文章之后,终于找到了解决方法
http://www.cnblogs.com/codebean/archive/2011/06/02/2068768.html#2114864
所谓的Hash化,就是通过MD5加密,把字符串转化为32位的Hash值,这些Hash值都不会重复。
如果以第一位Hash码划分所有的Hash值的话,目测了一下,所有的Hash值的分布比较均匀的。
这样的话,水平分割的大致想法也就产生了:
1.为每个检索关键字生成Hash值。
2.根据Hash值的第一位决定这个关键字放在哪个数据表里面。第一位一共16种可能性【0-F】可以放在4个,8个表中,根据实际情况进行调整。
3.检索的时候,先将检索词语进行Hash化,通过Hash值的第一位来决定接下来的检索在那个数据库里面进行。
在原文的回复里面,有一个热点的问题。就是说虽然所有的单词都是平均分配在各个数据表里面的,但是,由于有些数据的被检索频率异常高,这样就产生了负荷不平衡的问题。具体到单词检索的数据表,就是一些常用词语可能被检索的频率会非常高。我的考虑的方案是,将高检索词语从数据表中抽出来,将这些词语的检索结果,预先保存起来。需要的时候,直接使用即可,就像使用缓存一样使用这些数据。
同时,我想咨询一下大家,如果我把Hash值作为数据库的主键进行使用,这样的方法是不是可行呢?
或者说,我的想法是不是还有什么欠妥当的地方呢?请大家指明方向。。。。
有兴趣的写信给我 root#magicdict.com [convert # to @ ]
或者加MSN mynightelfplayer@hotmail.com 网站地址 http://www.magicdict.com/
由于一直在IBM大型机上做开发,使用的都是DB2这样的巨型数据库,以前数据库分割之类的事情一直没有考虑过,直到自己的网站在面对海量数据,速度明显不给力的时候,才意识到数据库需要分割了。
说到检索,日语的检索,我的构想是拥有一个总检索表格,日语汉字,日语假名,中文汉字,拼音,英语,所有的关键字都放在一张很长很长的表格里面,检索的时候,先从这张表格里面找到单词的序列号。
检索关键字 | 字典编号 | 字典内序列号 |
我们 | 1 | 4567 |
我们 | 3 | 312 |
さくら | 2 | 3213 |
寒い | 5 | 124 |
shanghai | 6 | 22 |
close | 12 | 34 |
meili | 1 | 321 |
geili | 1 | 432 |
1.水平分割的依据是什么?
2.水平分割后,这么知道一个词语在那个表格里面?
由于自己的本职工作不是做NET的,所以不知道有Hash化这样的一件事情,在看到下面这篇文章之后,终于找到了解决方法
http://www.cnblogs.com/codebean/archive/2011/06/02/2068768.html#2114864
所谓的Hash化,就是通过MD5加密,把字符串转化为32位的Hash值,这些Hash值都不会重复。
如果以第一位Hash码划分所有的Hash值的话,目测了一下,所有的Hash值的分布比较均匀的。
这样的话,水平分割的大致想法也就产生了:
1.为每个检索关键字生成Hash值。
2.根据Hash值的第一位决定这个关键字放在哪个数据表里面。第一位一共16种可能性【0-F】可以放在4个,8个表中,根据实际情况进行调整。
3.检索的时候,先将检索词语进行Hash化,通过Hash值的第一位来决定接下来的检索在那个数据库里面进行。
在原文的回复里面,有一个热点的问题。就是说虽然所有的单词都是平均分配在各个数据表里面的,但是,由于有些数据的被检索频率异常高,这样就产生了负荷不平衡的问题。具体到单词检索的数据表,就是一些常用词语可能被检索的频率会非常高。我的考虑的方案是,将高检索词语从数据表中抽出来,将这些词语的检索结果,预先保存起来。需要的时候,直接使用即可,就像使用缓存一样使用这些数据。
同时,我想咨询一下大家,如果我把Hash值作为数据库的主键进行使用,这样的方法是不是可行呢?
或者说,我的想法是不是还有什么欠妥当的地方呢?请大家指明方向。。。。
有兴趣的写信给我 root#magicdict.com [convert # to @ ]
或者加MSN mynightelfplayer@hotmail.com 网站地址 http://www.magicdict.com/
相关文章推荐
- 一个网站的诞生- MagicDict未来予想図2 [单页面多个submit的实现,高手绕路]
- 一个网站的诞生- MagicDict未来予想図3 [表格的动态增加行和删除行,高手绕路]
- 一个网站的诞生- MagicDict未来予想図4 [表格的动态增加行和删除行,完整版]
- 一个网站的诞生02--用Scrapy抓取数据
- mark一个很好的数据分享网站---统计年鉴分享平台
- 一个网站的诞生03--抓取评论数最多的一万家餐厅
- 一个母婴电子商务网站的大数据平台及机器学习实践
- 曾鸣:未来五年_一个新的商业模式将诞生 | 干货
- 一个Web 2.0 网站内测一个月的测试数据
- 推荐一个ebay 数据智能分析网站:http://ebayanalysis.vicp.net
- 春雨服务电商,未来是一个数据公司?
- SEO优化之百度反向链接肯定是衡量一个网站权重的一个数据
- 一个网站的诞生08-- 在Web App嵌入地图
- 一个网站的诞生- MagicDict开发总结7 [Excel 是我的好朋友]
- 大数据--阿里曾鸣:商业智能化是未来最重要的一个趋势
- 一个网站的诞生04--抓取一个餐厅的某个月的全部评论
- ASP网站数据采集程序制作:一个采集入库生成本地文件的几个FUCTION(可用来生成HTML静态网页)
- 一个合格的网站运营人员需要了解的9种数据
- 一个网站的诞生07-- Tornado Web Server
- 一个网站从诞生到发展的全过程