Google总有一些新鲜的玩意,在Google file system(GFS),MapReduce和Lock Service之外,最近的BigTable又颇受关注。 Google 的多个服务Print,Search History,Maps,Orkut,Rss阅读等都是基于BigTable提供支持的。那么Google BigTable到底是什么呢? Google BigTable是Google的一种对于半结构化数据进行分布存储和访问的一个接口(服务)。半结构化数据,例如RSS的数据,虽然有明显的Field但是由于每一个Field的定义颇为宽泛,因此对每一个Filed并非是结构化数据。 下面介绍Google BigTable 的一些细节,BigTable 以下简称BT。 BT是按照行列的格式组建的,是一个多维的稀疏矩阵。每一个BT大约100M到200M,每一台Cell(数据单元)存储大约100个BT。这些存储是基于Google的GFS。 BT的单行的格局应该是如下的格式: URL|Content|Author|.... www.wespoke.com|Content:......|author:6e|anchor:www.wespoke.com;搜索引擎|anchor:blog.wespoke.com;六翼的天使|... 访问这些BT是采用三层哈系定位的方式,其中利用缓存等机制不会造成读取和定位的瓶颈。 Level 1=> [Meta0] Level 2=> [Meta11],[Meta12],.... Level 3=> [Cell1], [Cell2],...... 一个表的定位可以这样:[Meta0] -> [Meta13] -> [Cell2] 处理单个表访问过大的问题可以将这个表分解,或者复制到其它的Cell上来降低压力。对于撤回一台Cell的话,要将其上的100个BT均分到其它的100个Cell上,这样每台Cell的压力平均增加1%,可以忽略。 Google BT也采用了压缩的算法,是根据从新对内容相近的字段进行从新编码进行压缩,据称可到9%左右。从理论上讲,并非对所有的字段进行重新编码压缩,也许只要对最冗余的部分进行压缩既可。 对于重建和更新表,则是根据一定的规则进行从新的编译,例如保留多少个备份,数据段要是某某时间后的等,据此进行从新建立表的内容并重写回系统。由于表的重建是一个非常耗资源的过程,因此将表拆分成多个列,根据这些列的性质建立不同的组,针对不同的组有不同的更新规则,更新后再进行合并,从而达到更新时消耗资源的最小化。 从以上分析上看,BT并非是一个完整的系统,它必须结合一定规则的索引系统才能实现google的Map或者Rss reader的功能。 综合起来,BT拥有以下的特点: 分布式,可扩展,高冗余性,抗压,定位迅速,读写快速,节约存储空间。 这样的表结构在应用上可以符合google的半结构化数据的存储和书写,读取的要求。 原文地址:Google's BigTable。...
今天晚上博客吧搜索引擎沙龙聚会,主要话题:搜索引擎反SPAM。...
昨天的〔搜索引擎沙龙〕一共来了12位朋友,其中有一多半是做搜索引擎和相关研究的。 讨论的主要话题集中在以下几个: 1.垂直搜索的意义 2.垂直搜索的赢利模式是否强壮 3.垂直搜索的万能模版是否存在,如何实现 4.信息的分类 垂直搜索的核心技术实际上就是智能spider的技术,也就是说如何将定向或者非定向的网页抓取下来进行分析后得到格式化数据的技术。 垂直搜索一般情况下爬虫分3种模式: 1.broad search的基础上对信息进行分类挑选组织。 2.定向爬虫获取信息,配上手工或者自动的模版,将信息进行格式化分析入库。 3.目标网站提供特殊的数据源的接口,利用这些数据进行再加工。 现在绝大多数的垂直搜索都是基于2来实施的,从技术上讲有难度但是能够比第一种方案提供更加精确的信息,例如包括价格,时间,描述,规格等。 这次真正意义上的搜索引擎沙龙参加的人如下: 猎头合连横的老板John Zhang,博客网的冯磊,张博文,卢亮,猎兔分词的罗刚,百搜网的吴萌野,邓子陵,易观国际的饶展,G宝盘的陈新,微软亚洲研究院的陈凯江,和一个做垂直搜索的蔡文凯。...
RSS的网络爬虫的时间规则的设置: 设定RSS爬虫重新访问的5个级别: Level[1]=20 Minutes Level[2]=200 Minutes Level[3]=1000 Minutes Level[4]=2000 Minutes Level[5]=10000 Minutes 设定RSS 源的权重为从0到5 RssRank=0 ~ 5 要点: 1.每一个RSS 源对应一个时间T[i],这个时间取整就得到 Level 。例如,这个时间是250分钟,那么就取Level[2],就是每隔200分钟抓取一次。 2.每一次这个对应时间都是改变的,根据这个RSS源有没有变化。 3.当更新了,这个时间就除以1.2 ,当未更新,这个时间就乘以1.2。 4.RssRank起到调整更新时间级别的规则。例如当一个RSS在Level[5],但是它的RssRank是3,那么更新时间调整为Level[5-3] = Level[2] = 200分钟。 总体公式: T[i+1] = T[i] [*(1.2)/(1.2)] T = Level[ AntiLevel[T[i][(1.2)|/(1.2)]] - RssRank] 经过长时间的运行,T序列都变动非常稳定。 另外,替朋友招聘〔垂直搜索〕开发人员。有兴趣请发简历给我。luliang#bokee.com ,另外今天晚上的搜索引擎沙龙讨论的主题是垂直搜索。...
博客邮箱终于开发完毕,到现在为止,博客网的两个产品我最满意,一个是图片博客,另外一个就是这个博客邮箱,这两个产品都是2005岁末开发完毕的。 博客邮箱现在尚处于测试阶段,我的博客邮件地址是 luliang@bokee.com ,已经开始使用了 :) 当然,有搜索引擎就有spam,同样,有邮箱就有垃圾邮件。如何防止垃圾邮件呢? 1.Blocking 阻断 阻止包括多种做法,主要的阻止是smtp的IP进行阻断。国际上常常定期公布spam IP list,这些要么是恶意的spam IP或者是被人利用作relay。 另外阻止email address也是常用的一种做法,就是简单的将发信人的email address进行阻止。 2.IP 反查 和用户反查 对发信的IP进行域名的合理性反查 对发送用户的email 地址的有效性进行反查 对邮件对话进行有效性的检测 3.名单 白名单:安全名单 黑名单:spam 邮件名单 灰名单:进行一次的阻止,并等待对方的email server的第二次尝试。因为通常的spam很少进行第二次的发送尝试,而健全的email server则会在第一次投递失败后会再次重新发送。 4.贝叶斯统计算法 这个是根据相关性的原理,对非垃圾邮件和垃圾邮件进行分词词频的相关性统计,得到相应的共同出现时成为垃圾邮件和非垃圾邮件的概率。 5.联结目标源 联结垃圾目标源的邮件有可能是垃圾邮件。 6.邮件运营商根据内容进行数据挖掘 大量的邮件几乎完全一模一样,可能是群发的垃圾邮件 根据用户自己定义的垃圾邮件的规则应用在全部的邮件上 根据大量的用户自己挑选的垃圾邮件进行训练,得到词频序列,并对新进的邮件进行比较测试最大似然。 7.基于分类模型的检测 跟贝叶斯异曲同工,各种的分类算法这里就可以用得上了。 参考文章基于内容的垃圾邮件过滤技术综述 这里的7条,挂一漏万,如有补充,请回复。...
今天晚上是第一次到博客吧的搜索引擎沙龙聚会,可是临近下班的时候网站出了些故障,一坐就到了9:00多,等赶到博客吧的时候,服务生告诉我说曾经来过我的一个朋友,结果后来没有等到我就离开了。 抱歉自己来的太晚了,现在在这里写下这篇blog督促我以后按时到场。 2006/1/5...