星期一, 九月 25, 2006

google发布bigtable论文

8个人开发了2年半,现在bigtable的神秘面纱终于揭开了。google发布了一篇相当详细的论文“Bigtable: A Distributed Storage System for Structured Data ”(pdf版本)。美人他爹彼岸正在翻译这篇论文,点击查看译文

这篇论文内容空前详细,包括bigtable的目的,数据模型,一些实例api调用的代码,性能参数,还有和其他相关产品的比较。

如标题所述 ,bigtable是一个用来存储结构数据的分布式存储系统。与平时常用的数据库不同,bigtable并非一个支持sql语言的关系数据库,而是map方式的,列导向的数据库(一列数据连续存储)。bigtable为读进行了优化,对数据库的读取访问远远大于写入是互联网服务的重要特点。bigtable的时间特性也颇为引人注目,bigtable中数据都带有timestamp字段,可以保存不同时间的多个版本。

论文中提到,google已经有6个服务已经运行于bigtable上了。分别是:Google Analytics,Google Earth,Personalized Search,Google Finance, Orkut,Writely。这里面我觉得最值得注意的是Writely和Analytics,这两个都是google收购来的服务,通过一段时间的改造,已经重组了其架构,使他们成为可以承担海量负荷的大型服务。这似乎也标志了google对于Writely的重视。

特别值得注意的是,这6个服务都是恰好带有明显时间特性的服务,借助bigtable的时间特性,可谓如虎添翼。最近Google Earth也增加了时间的标签。将来,bigtable必将用于更多的地方,事实上,时间标签对于web服务是相当重要的特征,但由于数据量太大,保存困难,限制了很多应用的发展,bigtable应用于wiki或是archive.org之类的服务的时候,必将势如破竹。

以前我们分析过,google通过收购和内部创业等方式获得新型服务,然后通过强大的基础技术改造这些服务,使其成为高可用性,高负荷高稳定性的服务。这或许就是google未来的发展方向。google通过一系列的包装,使分布式数据库这样复杂的东西可以被简单的api调用,这无疑将大大提高google内部各小组的开发能力。

ps:感谢youfeng及时提供这个消息。

标签: , ,



星期四, 九月 21, 2006

youos距离webos有多远

youos自称是一个新的平台,也就是webos。

几个月以前,tinyfool在讨论webos的时候遭到了众人围殴,看到了youos,我还是想鼓足勇气,讨论一下看看。

youos完全在浏览器中提供了了看起来很象操作系统的东西。于是有人大骂,这算什么东西,只不过是个花架子。然而,真的就是一堆无用的花哨代码吗?看问题不能这么简单,让我们来看看表象下面的东西。

youos并非一个封闭架构,而是一个众多开发者参与的项目,除了youos的基础系统,上面,大部分“应用程序”都是由爱好者开发提供的。这样也就造成了很多看上去没什么意义的程序出现。比如说youos 浏览器(浏览器中的浏览器?)这听起来像一个笑话。但是,一个开放的体系就是这样的,未必有用,但是有人就喜欢。创意也往往就是这么产生的。

为了从大量的程序中挑选出来真正有用的,youos采用积分的方式来让好用的程序排在前面,或是直接放在桌面里面。

youos提供了一些api(包装了一些js的代码),一些接口(可以用来挂接倒系统中),一些共享的数据结构(数据可以方便的在个系统中交互),甚至提供了一套IDE来辅助开发。

这些资源和开发方式,非常类似于普通操作系统的运转方式,操作系统厂商提供基础平台,提供api和接口,提供开发工具,然后开发者开发,并用自己开发的产品盈利。

当然,youos在一个浏览器页面中模仿桌面应用,这并不是什么好主意。比如我切换程序的时候,往往会利用本地系统的功能,而不是在youos的界面上点来点去。

youos值得借鉴的是他的模式,虽然实现出来的产品仍然是个玩具。我理想中的webos,应该是本地系统与web程序充分结合的产物。我们说webos,并不是说本地系统可以仍掉不用了,而是要将数据和应用保存在服务器端。youos可以方便的和其他用户“共享音乐”,这也是数据保存在服务器的优势。

以目前的互联网发展程度,用户已经主观的意识到了,数据保存在服务器(或是说保存在网络上)具有很大优势。youos介绍自己的优点时候说:做些工作,然后退出,等你换一台机器,登录,一切都跟刚才一样,就好像你从来没离开过,这是多么令人欣喜的体验。

在这个webos的概念中,是数据为王,应用为王的。如果数据能够自由的在个应用之间流动,那就能提供更多更好的服务。比起真正自由流动的数据,现在的所谓web 2.0网站提供的那一点点api算得了什么呢?在youos上,我们至少看到数据呈现了在应用之间自由流动的趋势。youos的“Why develop on YouOS?”中说道了Powerful Shared Data Structures。

youos的模式有很多创新,这让他变成了一个很有趣的试验,尽管这个试验距离真正的应用,还有不小的距离。纵观业界,能够拥有将这种试验变成真正应用的能力的,大概也只有google了。google所掌握的技术,正是最好的基础。如果google能提供基础技术,让开发者自由加入,同时令应用和数据自由的交换和流动,这个传说中的webos大概就成型了。

比如说,

google开放了搜索技术,开放了gfs和bigtable用来做存储,开放了account用做通行证。我们看到,其实google也在朝这个方向行进,比如,google maps就提供了足够好的api,并且有很多不错的应用建立与这个基础上。只是目前开放到这个程度的资源还不够多。类似的,mapreduce之类大量基础技术,还仅仅以公布论文的方式进行讨论(这一步其实也远远走在了其他公司前面)。

事实上,google已经收购了类似blogger.com,writely.com之类优秀的资源,并开始尝试在一个框架下整合。(昨天收到writely发来的mail: you'll need to use your Google Account password when signing in, not your Writely password 账号整合是不是第一步?)

联想到google公司内部,自由创意和自由开发的模式,似乎也可以认为,google已经开放了足够多的技术接口,只不过,这种开放还仅仅停留在公司内部。尚不能被广大开发者所自由应用,这是未来的希望,也是目前的遗憾。或许,这也是未来google帝国真的要做的事情。

前几天大家讨论过的p2p海量存储问题,其实也与此有关。这样看来,未来真是很有趣的。

标签: , ,



星期二, 九月 19, 2006

你不点广告,Google就会把它挪走?

9月15日,有人在webmasterworld.com提出疑问,他发现搜索结果顶端的广告(顶端的蓝色背景的赞助商链接块,只在某些特定关键字下才会出现,最近一个阶段才出现的广告位置)消失了

有人告诉他,这是Google正在试验一个新功能:如果Google发现用户每次搜索后都不会点击顶端的广告的话,就会把这些广告移到右边(搜索结果显示广告的传统位置)去。既然用户不想看到这些广告,那么别让这些广告占用用户的浏览空间。这个设定会保存在Cookie里面,如果用户清除了Cookie,那么他就会重新看到那些顶端广告。

我的朋友JustSo说,这是典型的工程师思维,广告就是强迫才有广播群发的效果意义。

然而,我很喜欢这种做法,既然你无论如何从某些用户身上也得不到广告收益,那么为什么不去掉广告以提高用户体验呢?

就在Google刚刚推出搜索结果顶端广告的时候,有很多人评价说这和百度的推广链接没什么区别,违反了不作恶的信条。但是,我觉得这是完全不同的,Google的搜索结果顶端广告有醒目的背景和很大的Sponsored Link标志。Google一贯的政策是让用户能够清晰的分清搜索结果和广告。而百度的普通用户里面有几个人真正知道推广两个字是什么意思呢?

我不认为这是道德问题,也不想说百度的方法是作恶。但是我一直认为这是两种不同心态的表现,一种是对自己的产品和用户选择的自信,把和用户建立长期可靠的合作关系当作最重要的任务;另一种是对产品和用户选择的没信心,能挣一点挣一点,认为短期利益最重要。

这个新功能也如是,跟Google的经营思想一脉相承,那就是“以用户为中心,其他一切纷至沓来”。

标签: , , ,



星期一, 九月 18, 2006

更名通知,即日起本Blog更名为“TV的Google观察Blog”

开始写这个Blog的时候,我就邀请火炬参与,他欣然接受,而且就在刚才发布了第一篇文章《每个人都需要个版本服务器-也谈p2p海量存储》。从此这个Blog里面就有了两个人的文章,还叫作“Tinyfool的Google观察Blog”就不太妥当了。于是,本Blog正式更名为“TV的Google观察Blog”,T是我的网名Tinyfool的缩写,V是火炬网名Virushuo的缩写。

目前我们正在诚挚邀请另外一位朋友加入,那时候,也许会改名为“TVM的Google观察Blog”,随着参与者的增多,本Blog的名字会越来越长,想想就觉得有趣啊!

标签: , ,



每个人都需要个版本服务器-也谈p2p海量存储

从我知道cvs那个东西开始,我就喜欢死这个东西了。只要你敢用,他比任何的备份工具都好。什么都能装,保证能同步,还能回溯到历史某一点。我大半文件都是用这个存的。其实解决同步问题,只要你给自己建一个cvs/svn的服务器,就都ok了。

说起来这个,是看到美人她爹tinyfool一干人等正讨论p2p的存储问题。

从tiny的叙述中,我们可以看到,他对存储的最大需求是“备份和同步”,没错,这正是存储服务的主流。如果仅仅是共享一些mp3,照片之类,随便找个p2p软件就能作到了(emule就很好)。用这种存储服务的意义并不太大。

这就回到了标题所说,每个人都需要个版本服务器。假设基础文件所有人都有,只保存更新信息,那么所需要存储的容量立刻就大规模下降了。如果采用这种方式的话,我们需要的就不是一个类似社区的服务,而是一个类似email的工具类服务了。这里面,p2p的作用是进一步提高稳定性和降低成本。allmydata提供的10:1的服务就很好 (提供10M硬盘空间给别人用,自己得到1M虚拟存储空间)这种交换模式,和过去的区别是“你帮助别人存储的文件 ”对于你自己是否有用。emule方式共享mp3或是电影,是对你本人有用的,而allmydata的方式,则对你自己未必有用。emule是p2p的方式共享文件,而allmydata是共享空间。换个通俗的话来说,也就是,你并不知道别人在你共享出来的空间上放了什么,也基本上不可能去使用这些文件。

在这样的模式下,可以用这种10:1的方式达到大量冗余,多点存放的方式。如果再配合一些地理信息和统计学方法,就可以计算出来对于“你”所在的网络情况,谁的硬盘最适合存在你的资料,配合中央服务器,就更稳定了。这样一个基本的网络框架就算出来了。

综上所述,我得到2个结论:

1 这种存储不同于emule共享,文件本身对存储者不完全有意义。(有一些有意义,但大部分人可能没意义)
2 文件更新信息比文件本身更容易被频繁的读取。这些更新信息将是这个网络负担得主要流量。

最后说说我的希望:

google有足够的技术可以完成这个,无论是中央存储,还是同步工具,或是探测哪些机器适合保存你的资料(数据统计和挖掘技术)都是他的强项。

标签: , , , ,



星期日, 九月 17, 2006

Foldershare以及P2p在线存储服务


看了彼岸在线存储:现实还是明天?一文之后,想把我对Foldershare的一些理解写出来与大家分享。Foldershare目前是微软Live战略的在线存储部分,Google与之相对应的是服务是GDrive,可惜我们现在能得到的GDrive的信息太少了,无法进行比较。



我原以为Foldershare是一个垃圾


最早知道Foldershare是来自Keso的邀请信,之前我从来没听说过这东西,还以为Keso中了什么流氓软件的招呢。Google了一下才知道,这是微软2005年收购的一项基于P2p技术的文件共享服务。然后,我就问Keso文件共享怎么P2p呢?要知道两个人之间的文件传输本来就是P2p啊?这有什么特殊的呢?难道QQ的文件传输是先从一方传到服务器再传到另一方的么?为什么别人都不说他们的文件传输或者共享服务是P2p呢?莫非微软现在也学会了我国某些人才写论文的方式了,文件传输就叫P2p?

简单的探讨了下,我们估计这可能是用服务器端保存和用户之间支持传输相接合的方式来进行文件共享的一种服务。如果是这样,文件共享的两端就不需要同时在线,这就比传统的简单的文件传输服务方便多了。于是我们进行了一项试验,Keso用Foldershare共享了几百首Mp3歌曲出来,我来接收这些文件。传输到一半的时候,Keso下线,然而出乎意料的是传输立刻停止了。这说明这项服务并没有提供任何的服务器端存储。那么问题来了,这样一个东西有什么用?或者说,他跟QQ传输文件的方式有什么区别?微软为什么会购买这么一个东西呢?真的是钱多得烧的么?我不知道为什么。

后来发现它还有点用处

本来,我已经准备删除这个看不出来有啥用处,但是会浪费我的空间和Cpu时间的软件了。但是我终于发现了它的一个用处,就是用来在我的办公用机和我的家庭电脑之间同步数据。

我在家里和公司各自使用产权属于我自己和我的老板的两台电脑。而与此同时,我是一个几乎24小时不离开电脑的人。相信很多跟我类似的人都会有跟我相同的烦恼:下班了,程序没写完,但是厌烦了办公室里面的污浊空气,准备把工作带回家继续完成,那么就要把代码打包,发到自己的邮箱或者上传到某个服务器,回到家里,打开打包文件继续工作;睡前把所有的修改打包,传到自己邮箱,然后第二天早晨在公司打开文件继续工作。或者是其他有两台电脑的人,往往都会被文件同步的问题弄得焦头烂额。实话说,我认为这才是笔记本越来越受老板和打工仔们一直欢迎的原因,因为可以把一切繁琐的同步步骤抛到脑后。

而Foldershare正好有这么一个功能,在两台电脑之间同步目录。非常方便,只要你在两台机器上面设置好,然后你就什么都不用管了。你在A机器对文件做了任何修改,Foldershare立刻记录在案,如果B机器在线就直接把修改发送给B机器,否则就B机器在线的时候自动完成同步。当然,既然他是纯粹基于P2p技术的,那么他就有一个无法解决的问题,那就是A和B必须同时在线,才会进行同步。我采用了最无耻的办法,那就是让公司的电脑24小时开着(当老板的看不到这句话,你看不到!!!)。

前些日子我换公司,因为我一直以来把所有自己的文件用Foldershare管理,所以离职的时候我没有做任何备份工作,直接把硬盘清空就走人了(私人文件,公司的交接早做好了)。到了新公司以后,我建立我的工作环境(包括大量的技术电子书,私人的代码库,趁手的开发辅助工具等等,共2G),仅仅花了一天时间。

然而,核心问题还是没有改变,如果我们需要在两台不能同时在线的机器之间同步数据,那么Foldershare岂不是又没有用处了吗?

Web上面的共享目录岂不是办公必备

公司里面有很多文档是需要用Doc格式或者Ppt格式的,而我们的文档共享一直是用Google Groups,这就变得有些不方便。如果我对某个文档进行了修改,我只能再把它传到Google Groups上去一次。而每个同事也需要重新从Google Groups下载这些文档。这着实让我感到很烦。

于是,我想到让每个同事都安装Foldershare,一切就变得简单了。每个人在本机修改文档即可,Foldershare会自动把更新发送到每个人的电脑里去。

说到这里,也许有人会说,其实这根Windows的共享目录有区别么?呵呵,你问的对,其实用起来一点区别都没有。唯一的问题在于,那只能用在局域网,而现在的公司,现在的团队运作往往已经不局限于局域网了。(VPN当然也能实现这类需求,但是从成本来看高下立判,当然这里不是诋毁VPN,大家的用途不同嘛。)

我的灵光一闪

突然,我感觉我明白了P2p在线存储的真谛了。



左图是传统的在线存储业务,所有数据保存在服务器端,客户机修改了数据,需要传送到服务器。然后所有其他的同步客户机从服务器得到这些改变了的数据。这样的服务器基本不可能成功,因为对服务器端的带宽和存储能力需求太大了。这就是我们见过形形色色的在线存储服务,而多数不是苛刻的限制用户可以使用的空间大小,就是慢的让人无法忍受。

右图是基于P2p的在线存储业务,所有的数据保存在客户端,服务器只保存更新日志。客户机修改了数据后,更新服务器的同步日志。服务器在其他同步客户机上线的时候根据同步日志,来协调客户机之间的数据传输。这样服务提供者就无需支付昂贵的空间和流量成本了。

当然这也带来了新的问题。如果我需要在A和B两台机器之间同步数据,我就需要它们至少在某一个时刻是同时在线的,这个时候同步流程才能启动。而对大多数需要同步的用户来说,这可能是一个不可能逾越的障碍(除非他们不在乎电费以及让机器24小时开着可能带来的火灾隐患)。

就像解决平面几何问题经常会做的那样,我们引入一个辅助线。如果现在有第三台机器可以永久在线,或者在你的两台机器不能在线的时候它可以恰好在线的话。所有问题就解决了。这第三台机器在传统的在线存储中实际上就是服务器,而在这里我们发现,他可以是任何一台客户机。那么,为什么会有人肯提供这第三台机器呢?

P2p虚拟存储空间市场

现在考虑如下的场景,我现在需要第三台机器,在我短暂的两台机器都不在线的切换期帮助我保存我的共享数据的更新,而不是让我的某一台机器24小时在线。那么,我可能愿意用金钱购买这个临时存储,或者用我的机器在线期间帮助别人提供同等服务作为交换。这个时候,就产生了一个虚拟存储空间的交换市场。这样,你就可以把你的空闲硬盘空间拿出去换钱了。当然,这种市场需要大量的用户参与才取得比较好的效果。

而基于P2p和同步协议的在线存储方案,还能带来另一个变化,那么就是如果服务提供者想自己提供空间服务,他的存储单元配置方式也变得非常简单。

标签: , , , , , ,



星期二, 九月 05, 2006

我翻译的Google Maps API中文同步文档正式发布了

详情请见 :http://googlemapsapicn.blogspot.com/2006/09/google-maps-api.html

标签: , ,