跟着ArthurXF学习搜索引擎理论——高速搜索理论
在这里,我就和大家分享一下,我对搜索引擎的理解,仅仅是我的猜想,如有不对的地方,还望他人多多指点。
其实搜索引擎那么快速的反应,是任何一个数据库都做不到的。因为搜索引擎的数据是海量的,我们先举例搜索关键字mp3,在google里面有13亿的网页,搜索用时 0.04 秒,其实没有哪个数据库可以13亿条记录里面搜索结果出来只需要0.04秒,那么google是怎么做到的呢?
我们假设在mysql数据库中从13亿条数据中搜索mp3关键字,需要耗时1分钟,那么做为用户的我们是无法忍受的,那么我们如何来改善这个结果呢?我们就要设计数据库结果集缓存了,也就是第一个人搜索的时候去数据库查找搜索结果,之后建立数据库结果集缓存,在规定时间内,如果还有人搜索mp3的,就直接将数据库结果集中的数据返回给用户,而不再搜索数据库了,这样就大大提高了用户的访问速度,一般可以把速度提升到小于1秒!过了规定时间以后重新建立数据库结果集缓存就可以更新结果列表了。
那么为什么我们没人碰到搜索非常慢的情况呢?也就是说为什么我不会成为第一个搜索的某个关键字的人呢?
其实非常简单,我们访问google,baidu的时候,我们只能访问到数据库结果集缓存,其实我们根本就访问不到搜索引擎的数据库。这样就可以保证每个人使用搜索引擎的时候,速度都很快!
那么搜索引擎的数据库结果集缓存怎么更新呢?也就是我们看到的数据库排列结果如何变化呢?
其实搜索引擎会根据大家搜索关键字的频率,从高到低来用机器人(程序)自动搜索数据库,建立或更新数据库结果集缓存,这样更新,即时数据库耗时5分钟才产生结果集,也不会有人投诉太慢的,呵呵。当用户再搜索相同的关键字时,就发现结果排列发生变化了。为了应对全球搜索的反应,所以google会在全球建立3大数据中心,共投入了45万台服务器,一些做抓取,一些更新缓存,一些做用户服务的。因为每个数据中心缓存更新的时间并不同步,所以才会发生google dance的现象。如何验证这个理论,你可以对比一个高频关键字和一个低频关键字的更新时间,你会发现高频关键字搜索结果更新速度远远超过低频关键字。
那么搜索结果有13亿,是不是需要建立庞大的数据库结果集缓存呢?如果有上亿的关键词那么不是需要非常多硬盘空间?
其实不管搜索结果有多少,数据库结果集缓存只会建立最高频率搜索的结果集,也就是每个搜索关键字的结果集有个最大页数,大家都知道,搜索结果列表访问最多的就是列表的前3页,但是又不能保证没有人会翻几十页,所以为了验证我的理论,测试结果表明baidu结果集缓存了76页,之后的结果会告诉你“提示:限于网页篇幅,部分结果未予显示。”,google的结果集缓存了100页,其实真的有人能翻页翻到100页的,恐怕也真是凤麟毛角了。那么就算每一页的缓存结果为2K,100页就是200K,看来需要一个海量的磁盘阵列来存储数据库结果集缓存是不可避免的。
那么众多的关键字,搜索引擎怎么知道应该建立哪写关键字的数据库结果集缓存呢?万一建立的关键字的数据库结果集缓存根本就没人查询那不是不很浪费硬盘空间?如何做好协调,既要合理使用硬盘空间,又要满足用户?
其实这个问题也不难解决,一定要建立关键字库,不断更新用户使用的关键字,并且记录关键字查询的次数,如果是一个从来没人用过的关键字,或者认为没必要建立缓存集的关键字,搜索引擎都会告诉你,找不到和您的查询 "kkdnwos" 相符的网页。其实谁能保证这个世界真的没人使用那个关键字呢?肯定有的,只是你查询的关键字还不在搜索引擎的关键字数据库中,只要你每天都搜几次那个关键字,相信再不久的将来,这个关键字会有搜索结果的。呵呵!
看完了上面的理论,其实我们可以很自豪的对投资人说,只要你跟我足够的钱(买服务器占了大部分,呵呵),我也可以做搜索引擎!
如何建立数据库结果集缓存?我正在写一个轻量级的数据库结果集缓存系统整合在我的ArthurXF网站系统里面,希望学习的朋友们到时可以下载来看看,多多指导!
提高IT专业人员薪酬水平的十种方法
IT招聘专家和工作场所专家总结了技术专业人员应该掌握的一些具体技能。这些技能会帮助IT专业人员避免工作的低谷和得到薪酬上涨的好处。下面就是让IT人员提高薪酬的10种方法。
1.熟悉SAAS产品
IT人员配备和随需应变的咨询公司Bluewolf的共同创始人和负责人Michael Kirven说,SAAS(软件服务)知识在用人要求条件中的比例已经从三年前的5%提高到了35%。拥有这方面知识的人可能很快提高自己的薪酬,无论他们是否知道alesforce、Google Apps或者WorkDay。每一个人都需要知道这些产品如何适合当前的IT架构。
2.获得SAP>知识或者经验
位于费城的人才和外包服务公司Yoh Services复杂战略和营销的副总裁Jim Lanzalotto称,他支持拥有SAP技术的人,因为SAP技术顾问的需求量和现有人员之间的缺口有3至4万。
3.获得一个行业的垂直的技术专长
Kirven说,做一个Java程序员或者一个熟练的.Net开发人员就是一件很好的事情。但是,随着系统越来越复杂,企业不仅需要这些人学些这些编程语言,而且还要了解具体的垂直市场知识,如金融、零售或者媒体,并且了解所有这些知识。
4.获得一个虚拟化项目
IT job board Dice网站称,它看到招聘列表中对虚拟化知识人才的需求在过去的六个月里提高了40%,特别是需要了解VMware技术的人。
5.提高你的商务技能
Lanzalotto认为,商务经验对于提高IT专业人员的薪金水平是非常重要的。他说,最好的首席信息官不仅仅是一个技术人员,而且应该是能够在技术和业务两个方面都能够工作的业务人员。
6.获得开源软件产品开发经验
Kirven说,由于时代已经发生了变化,首席信息官采用MySQL和其它开源软件技术不会有失去工作的风险。事实上,业务人员经常会喜欢开源软件,因为它可能为公司省钱。
7.更近一步了解能够让你的公司赚钱的技术
在大型银行或者金融机构工作的人都知道你越接近能够让你的公司赚钱的技术,你的工作岗位对于你的公司就越重要。IT人员也是如此。参与让你的公司增加收入或者节省金钱的项目的IT人员很少会被人忽略。
8.首席信息官需要架构技能
Kirven称,IT架构是一个极好的职场道路,不仅因为这是一个高级的职位,而且还因为这些职位几乎完全是不会外包出去的。
9.付费参加项目管理认证学习的人
许多研究报名,虽然并非所有的证书都比印刷证书的成本值钱,但是,企业继续付出高价的费用聘用拥有关键证书的人才。其中最最主要的两个项目管理证书是PMP(项目管理专业人员)和PMO(项目管理办公室)。
10.跳槽
IT专业人员从一个地方搬迁的另一个地方的比例提高了20%。当你在你的技术专长领域寻求进一步发展时,换一个地理环境也许会有帮助。不同地区对于IT专业人员的技术需求是不同的。
跟着ArthurXF学习PHP——解决时区问题
前面的冒号去掉,再修改成
date.timezone = PRC
切记PRC不要加引号,否则将无效。
date_default_timezone_set(PRC);
那如果要设定为其他的时区怎么办呢?
可以到这里去找时区代码:
http://www.php.net/manual/en/timezones.php
跟着ArthurXF学FreeBSD44——文件数量超多的删除命令
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了
跟着ArthurXF学FreeBSD43——查看系统硬件配置命令
其中各种主要硬件说明例子如下:
硬盘的说明:
da0:
da0: 300.000MB/s transfers, Tagged Queueing Enabled
da0: 140014MB (286749480 512 byte sectors: 255H 63S/T 17849C)
网卡的说明:
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX, 1000baseTX-FDX, auto
bge0: Ethernet address: 00:17:08:2a:13:88
CPU的说明:
Origin = "GenuineIntel" Id = 0xf62 Stepping = 2
Features=0xbfebfbff
Features2=0xe4bd
AMD Features=0x20100000
AMD Features2=0x1
Cores per package: 2
Logical CPUs per core: 2
内存说明:
avail memory = 2096644096 (1999 MB)