手机,智能手机,Again(2010Q4)

      全球智能手机市场随着iphone和Android的发展,继续洗牌。2010年第四季度智能手机销量为1.012亿部,比2009年第四季度增长了89%。而且2010年第四季度谷歌Android系统首次超越诺基亚Symbian系统,成为全球最大的智能手机平台,一举结束了Symbian保持了10年的统治地位。

      全球智能手机市场销售,按平台排名,2010年第四季度和2009年第四季度对比如下(数据来源:Canalys estimates):

平台 2010年Q4 2009年Q4 2010年Q4比2009年Q4增长
  台数(百万) 市场份额(%) 台数(百万) 市场份额(%)
Android 33.3 32.9 4.7 8.7 615.1%
Symbian 31.0 30.6 23.9 44.4 30.0%
iPhone OS 16.2 16.0 8.7 16.3 85.9%
RIM 14.6 14.4 10.7 20.0 36.0%
Win Mobile 3.1 3.1 3.9 7.2 -20.3%
其他 3.0 2.9 1.8 3.4 64.8%
总共 101.2 100.0 53.7 100.0 88.6%

      而全球所有手机销售按公司排名对比如下(数据来源:IDC):(主意中兴的名次!)

公司 2010年Q4 2009年Q4 2010年Q4比2009年Q4增长
  台数(百万) 市场份额(%) 台数(百万) 市场份额(%)
诺基亚 123.7 30.8 126.8 37.2 -2.4%
三星 80.7 20.1 68.8 20.2 17.3%
LG 30.6 7.6 33.9 10.0 -9.7%
ZTE 16.8 4.2 9.5 2.8 76.8%
苹果 16.2 4.0 8.7 2.6 86.2%
其他 133.4 33.2 92.8 27.3 43.8%
总共 401.4 100.0 340.5 100.0 17.9%
(3个打分, 平均:5.00 / 5)

华为的博弈–融入游戏规则

【陈怀临注:华为的状告摩托和诺西。是一个典型的在游戏规则下的博弈。非常漂亮。我个人认为,不管你个人对华为如何看待,华为的这个行动是一个分水岭。中国企业在西方游戏规则下的一首次,真正意义上的反击。。。我们应该为华为,为中国而自豪。】

(6个打分, 平均:5.00 / 5)

手机支付 。 NFC技术

最近有人从Apple的招聘公告描述里,猜测出下一代iPhone 5和iPad 2的一个重要功能是基于NFC的手机支付技术。相关文章可参阅:
Can iPhone 5 and Apple Make NFC Popular?
Apple Hiring NFC & Mobile Payment Personnel
关于Near Field Communication(NFC),可参阅:http://en.wikipedia.org/wiki/Near_field_communication
个人感觉,基于这个NFC可以做许多事情。。。。。,有点类似与现在LBS很火一样。。。

(没有打分)

谦卑的说声谢谢你;祝愿您和家人幸福,新年愉快!

【陈怀临:签发刚刚亲笔手写抄送湿一首和原创一首:-),祝愿大家快乐,幸福。家人安康。】


(6个打分, 平均:5.00 / 5)

少儿教育、大学教育、品德教育等阻碍了中国创新人才的生长

《瞭望》文章:中国缘何缺乏创新人才

【少儿教育、大学教育、品德教育等阻碍了中国创新人才的生长】

文/唐粮

从小我们就听说,中国的“四大发明”是几千年中华文明的骄傲,但这是一个怎样的“四大发明”?

且不说“四”在迄今世界发明的汪洋大海中微乎其微,即便是其自身也凸显出我们的悲哀:指南针虽指引过郑和下西洋,但发现美洲大陆的是西方人;火药虽以色彩斑斓的烟花取悦你我辞旧迎新,但发明枪炮甚至火箭、率先欲征服世界乃至太空的是西方人;当我们世世代代将印刷术和造纸术作为绝技深藏不露时,又是西方人用它们创造了报纸,开创了人类文化信息交流的先河。

30余年的改革开放,把中国带到了新的起跑线。巨大的消费市场、众多的廉价劳动力以及可观的发展潜力使中国逐步与世界接轨。

中国不缺少人力、劳力,甚至财力,缺乏的是充分的想象力和创新的动力。

创新需要人才,而创新人才的培养需要相应的土壤和环境。在这个方面,中国的少儿教育、大学教育和品德教育等均显现出一定差距。

扼杀创造力的少儿教育

与西方人相比时,我们很容易产生疑问:中国人天生缺乏创造力吗?

但目睹那些生活在西方的第二代或之后的华夏子孙们的发展、成就,我们会毫不犹豫地给出否定回答。

我认为,不是我们中国人不具备创造力,而是我们盲目地按家长意愿、用违背少年儿童本性的“填鸭式”教育,将中国人的创造力扼杀在萌芽阶段。

少儿教育是哺育未来创新人才的摇篮。孩子们需要在好奇心的驱使下,用自己的感官去感知、体会和思索世界。这就需要给孩子们足够的时间和空间去充分发挥其爱玩的天性,去触摸、琢磨世界。

西方人在此方面做得很人性化,他们尊重儿童的天性,也有意让他们自己去亲身“领教”所遇到的一切。如在德国,幼儿在3岁前就是尽情地玩,幼儿园的孩子只是做做游戏,玩玩适合其年龄发展的玩具等,除必要的语言交流外,不刻意灌输任何知识。3岁后的孩子会增加些彩绘鸡蛋壳、捏泥巴等手工,目的是启发孩子,使之感受用自己双手实现创造的乐趣。在这里,人们期待的是健康、天真、对世界充满好奇的未来一代。

而在中国,“望子成龙”的观念将家长们的过分期待或未竟的理想强加于孩子。我们经常会听到家长在骄傲地炫耀自己的孩子能背几百首唐诗宋词,琴棋书画无所不能等。孩子们完全成了家长相互攀比的牺牲品。可怜的孩子们在父母的“厚望”下,死记硬背那些不知所云的古文,疲惫不堪地奔波于已安排好的各种“兴趣班”,小小年纪就戴上了高度近视镜。孩童爱玩的天性被剥夺,好奇心被摧残,创造力的萌芽被践踏。

小学到中学应该是让孩子们从玩中认知、发现、观察、思考世界的时期。这一时期的孩子们随着对社会的逐步了解并出于强烈的好奇心,是最善于提出问题和探索答案的,其好奇心和想象力是未来创造力的萌芽和源泉。

德国的小学和中学低年级(相当于中国的初中)一般每天早上八点钟上课,下午一点钟放学,仅留少量作业,下午和晚上的时间全部自行安排,周末不留作业。而且,所学内容依据相应年龄所能接受的知识而制定,主要是交互式教学,让孩子发挥特长,有足够的时间去玩(体验)、消化、琢磨所学的知识。大考试、小测验、家庭作业以及命题或非命题文理科论文等均是评价学生水平的标准,且记入总成绩。但任何成绩均不予公布,只标出各成绩段的百分比数,让学生自己在班中定位,这就杜绝了危害青少年心灵发展的攀比之风。

中国的教育则从小向孩子灌输攀比意识,追求比别人学的东西多,成绩在班上排名靠前,甚至参加各种补习班,承受心灵扭曲的压力,原本快乐的天性被这种不良环境所束缚。

到了高中,中国学生的压力更为巨大,全部时间被考试、复习、补习、作业占据,无空隙留给自己,更多的是应付、对付来自家长、班主任、学校乃至教育体制的压力,目标只是考大学。据说,有的学校为追求升学率,并为“逃避责任”,完全不开设体育课。

而在德国,高中阶段虽然在学时和学习任务上也会有所增加,但仍给学生足够的时间思考、尝试感兴趣的东西,比如学生有时间通过社会实践或亲自采访他人,写出相应的报道和论文等。

有一次我带着孩子回国到朋友家玩。朋友的孩子年长我孩子一岁,在国内最著名的中学学习,成绩优秀,并曾考过了国内业余钢琴几级。大家坐下来,让孩子们表演节目,朋友的孩子因学习忙,相当长时间没弹过琴,结果没有谱子,弹不了琴。我的孩子出生在德国,一直在那里受教育,5岁时曾让他学钢琴,结果半年后,没兴趣了就没继续。到了中学,他自己对音乐感兴趣,钢琴、吉他、贝斯、架子鼓等均系自学,随手便可演奏音乐,14岁便开始自己写歌,德文、英文均有。

我们承认不是每个人都能去发明创造,但是,少儿时代的好奇心是创造力的萌芽,需要随天性、需要保护。少年强则国家强,希望国内中小学教育决策者能给中华后代足够的时间和空间,让他们玩出名堂、玩出兴趣,保留对世界和自然的好奇心,将来成为体魄健康、具有创新意识和创造力的人才。

脱离实际的大学教育

大学教育是挖掘和培育创新人才苗子的基地。为社会培养和输送各类高级人才是大学的首要任务。让大学生了解社会、学会用科学的理念和方式方法去发现问题和解决问题,是本科教育的目标;在某个专业领域就某个特定目标加以深化了解和初步实现,是硕士应该具备的能力;在硕士的基础上,独立从理论上和实践上更深一步地阐述和实现专业领域的前沿方向和目标,则是获取博士学位的标准。

迄今,获诺贝尔奖的德国人已有近百人,德国的大学教育是怎样的呢?

据我所知,德国的大学教育本着“宽进严出”的原则,只要是能够完成高中课程的毕业生,均有资格申请进入大学学习,且能满足所选的专业,当然,学校的选择能否如愿取决于毕业成绩。进入大学后,无论是教学安排上(必修课程、选修课程,甚至考试计划等),还是实习实践上(到哪里、做什么等),学生都有很大的自主性和主动权。而且,进入大学也等于进入社会,尤其是工科专业,学生在入学前和结业前都必须到自己所学专业的企业去做重要的专业实习,平时也随课程有相应的实习任务。此外,高年级学生需要与所选专业的教研组或研究所密切接触,了解最前沿的研发项目,并通过研讨会的形式用自己的语言阐述这些项目等,以锻炼和培育学生快速理解把握新知识、发现问题、解决问题和表达事物的能力,学以致用。这也是德国大学毕业生离开学校就能马上胜任重要工作的原因。不过,真正能够最终拿到毕业证书的不足入学人数的50%,有些专业,如机械、电子等,甚至才30%。

中国的大学教育脱离社会实际比较严重,甚至完全将学生与社会隔离开,为教育而教育,为指标而指标,缺乏面向社会的人才培养。首先,“高考定终身”制度就是不利于培养和挖掘学生创造潜力的根源。当人们被一系列的死记硬背或带有小伎俩的考试淹没在书堆里时,根本不会有时间、有机会去静心思考、寻求创新。进入被圈起来的大学校园后,学生又被满满的课程和考试圈住,很难有机会自主摄取自己感兴趣的国际前沿学问。我们的大学讲义是指定的教材,甚至几代传承。而德国的大学讲义因教授而异,且不断加入最新素材,淘汰旧的过时的内容,给出一系列的参考书和文献等,由此锻炼学生自主学习、汇总知识的能力。

“产学研”结合是中国大学走向培育创新人才的希望。面向社会培育高水平的人才需要中国大学在办学理念上有所改变,甚至突破。希望我们的大学生能够早日摆脱学生气,挣脱与社会隔离的保护圈,勇于接触社会,自主选择,主动出击,把握自己的命运。

忧患品德教育

国际型人才必须具有良好的品德,尊重知识、尊重科学、诚实正直。而良好品德的培养来自于最初的教育和社会的价值取向。我认为,随着整个经济的快速发展,当今中国对品德教育重视不够,需要加以改善。

“教育产业化”是一个很有争议的问题。普及基础中小学教育,让适龄儿童上学受教育是一个国家的义务,也是每个公民应该享有的权利。而“教育产业化”势必带来学校与经济效益挂钩。学校、班级均有排名,升学率、额外收益等均有指标。教师、学校都要想方设法去完成这些指标,甚至会采取某些急功近利的做法去创更高效益等。如果现在不能够及时得到回归理性的改变,不仅会使学生继续面临巨大的精神和学习压力,而且家长也同样要经受巨大的心理压力及沉重的经济负担,最终将在很多方面对国家的未来造成不可估量的损失。

有一次,我带着孩子回国,在吃麦当劳的时候,大家都在排队,一位八九岁的小女孩,穿着校服,臂佩“三道杠”,毫不犹豫地插队到第一个,且自豪地招呼其母亲过来,其母亲也为女儿的“优秀”表现感到骄傲。我的孩子对此举感到吃惊,不能理解这位小学生为什么会不遵守公共道德。我可以想象,这位小学生在学校里一定是“三好学生”或者是“助人为乐”的小雷锋,可其出了校门的举动,却让人深思。

此外,大学和科研机构中弄虚作假之风甚为严重,有人不尊重他人的劳动成果,窃取抄袭。有不少教授被誉为某领域的专家,兜售的竟然全是“因特网知识”,出专著自己竟然没有做任何事情。如此为人师表,如何育有品德之才?

都说中国人聪明、智慧,但我们的大部分聪明和智慧并没有让我们在创造和发明上显现出优势,而更多的体现在学习能力强、跟踪模仿快。尤其当我们忽视对知识产权的尊重时,整个世界都产生一种对中国人的畏惧感。的确,中国精于“山寨”的人实在太多,此种环境下,又有多少中国企业敢于研发?

(作者为德国慕尼黑中华文化中心主席  来源:千人计划网站 www.1000plan.org

(2个打分, 平均:5.00 / 5)

YunTable0.9版RC发布!!!

 

0.9版RC的发布

今天将正式对外发布YunTable0.9版RC(Release Candidate,发布候选版),大家可以通过“svn checkout http://yuntable.googlecode.com/svn/tags/YunTable_Release_0.9 yuntable-read-only”来获取0.9版RC代码,而过去的主干分支(Trunk)则被用于最新1.0版代码的开发,比较不稳定。另外具体的使用教程将马上向大家公布,尽情期待。

 

具体的新功能

和将来1.0版会关注分布式架构不同的是,0.9版则主要关注单机实现,下面是具体的特性列表:

  1. 加入Hotness特性:通过这个特性能够通过设置Hotness值来决定之前为了完成查询而读取到内存中的数据块(Data Block)的生存时间,假设如果是低延迟的情况,那么将Hotness值设置长一点,如果是海量数据,则相反,这样能使YunTable同时适应OLTP和OLAP这两种场景。
  2. 移出Column Family(列组):由于Column Family这个特性可以完全视为搜索等应用“度身定做”,所以它的普适性并不是很高,为了简化YunTable的架构,并提升YunTable的普适性,所以在0.9版将这个特性从现有的代码库中移出。
  3. 加入了日志功能:对于一个成熟的系统而言,日志功能是不可或缺的,当然对YunTable而言,也同样如此,所以在0.9版YunTable引入了这个特性。
  4. 完善异常处理功能:除了上面提到日志功能之外,在0.9版还完善了异常处理相关的代码,以确保当遇到大多数异常情况,系统能完善地处理,但避免不必要的崩溃。
  5. 加入了删除功能:除了日志之外,删除也是非常重要的,在0.9版中,这个功能也被引入,主要的实现机制是将带有删除标记的Item插入Region节点,来表明之前那些的Item已经被删除了,在之后查询的时候,会将这些带有删除标记的Item也从Region节点取出,之后在Client端进行Merge(合并)处理,这样能将那些已经删除的数据从结果集中移去。
  6. 自动化测试:在代码库中已经加入名为“testcase.sh“的自动化测试脚本,通过这个脚本能快速地验证代码的正确性,这样能极大地加快开发的进度,而且将来会进一步完善这个自动化测试脚本,来提升整个项目的质量。
  7. 增强了管理功能:为了便于今后的开发和管理,在0.9版中加入”Show“系列管理命令,通过这个命令不仅能得到Master节点的主要信息,比如,有哪些下属的Region节点和Table,而且能获得某一个Table的核心信息,比如,这个Table存储在那些Region节点和在Memstore中存储了多少Item等。
  8. 重构了代码:为了保证YunTable长远的发展,在0.9版,对部分模块进行了重构,虽然并没有涉及到全部,但是我们会保持边写边重构的好习惯。
  9. 解决很多之前版本存在的Bug:当然这个也是少不了的。
  10. 加入Apache2许可证:为了保证代码受到法律的保护,在0.9版中每个C源代码文件中加入了Apache2许可证,这样既鼓励大家在实际场景中使用YunTable,又保护了我们几个核心人员的版权。

 

今后的方向

关于将来的发展,主要有两步:首先是坚持当初YunTable是云时代的BigTable的思路,通过不断地开发、测试和完善,使得YunTable在今年年中能在性能和使用这方面接近甚至超越HBase,并且在整个业界的知名度方面也得到极大地提升;其次是提供SQL接口,由于现有的企业级应用都基于SQL接口,同时我们团队在开发YunEngine的时候积累了大量SQL语言的解析经验,所以将在今年为YunTable提供一个SQL接口,这样能让海量企业级应用轻松地从现有IT设施中迁移到云端,而且通过YunTable的SQL接口,将在保证高性能的情况下,轻松地扩展,并易于管理和降低成本,而这些是传统的关系型数据库所无法提供的。前面这些是初步的规划,具体里程碑表将在年后由我们核心团队谈论来确定。

 

社区的支持

现在的YunTable的社区正在蓬勃地发展中,到现在为止已有近100人加盟,社区的口号是“相互帮助,相互学习,一起把YunTable做好”,如果有读者想加入YunTable社区或者提交的Patch的话,请写信给我们的社区管理员Brooks(brooks.xi@gmail.com) ,到时他会邀请你正式加入的。

最后,我想代表我自己对每位YunTable成员表示感谢,并期待各位新成员的加入:)

(1个打分, 平均:5.00 / 5)

Android的钱途

今日心血来潮,虽然Android的Java不是纯种,但毕竟是解释语言,应该一样可以反编译。于是从网上搜了几个工具,下载了某著名安全厂商的一个APK,嘁哩喀喳,总共花了一个小时整个文件反编译出了完整的工程,包含源码、资源文件、XML定义文件、一个so文件等等。除了一个so文件外,其它的都裸露在面前,源码可读性还很强。即使so文件一眼看不到底,根据JNI定义也可以很快了解接口函数功能。就这么简单,心中说不出泄气还是悲凉。

虽然有NDK的辅助支持,但Java几乎可以说是Android唯一的开发接口,如此轻易的将应用逻辑暴露,真正的开发者不知道做如何感想。据说Android已经有几十万应用,但是我可以负责人的断定99%应用都是平头百姓开发的,穷人们没有钱置办后端数据中心,依赖于前端新颖的特性想赚两个零花钱。但是在Andorid上这可以说是个幻想。

PC世界盗版不是新鲜事,基本上我还没有听说过不能盗版的软件。但众所周知,软件从idea到design是一个复杂的过程,design到调试实现也要花很多心血。因此即使有高人可以hack MS Office,进行破解使用,但是绝不可能自己搞一个Office。但是在Android上,这些屏障轻易的消失了。如果应用仅仅run在客户端,开发者无法因为提前1年开发就获得1年的市场领先。因为反编译的存在,使得这一切都化为乌有。

真正得力于Android的是什么人的,我觉得有如下几类:

1.用户:可以买到廉价的智能机,因为Android免费

2.使用Android作为平台的手机、平板电脑厂商:背靠google大树,沾光不少。没有Android很多小厂商一辈子也没有机会提供如此好用且持续改进的系统环境。

3.有后端数据平台的有实力的大厂:例如新浪、腾讯等。

总之我个人对Android的感受现在有了转变,如果想赚钱,还是期待Meego吧。因为Meego采用QT框剪,生成的是原生应用,无法破解逻辑。另外Nokia可以统一控制软件下载平台,类似Apple一样,开发人员有人身安全保障。如果Android一直不提供纯原生开发接口,我的预言和谢国忠一样,5年内北京地区Android开发人员会下降50%:-)

(2个打分, 平均:5.00 / 5)

YunTable教程(0.9版RC)

为了帮助广大初学者能尽快上手YunTable,我代表整个YunTable核心团队写一篇使用教程,原因很简单,那就是我写文章比较熟练,呵呵:)

 

本教程将首先给大家介绍YunTable的架构和命令接口,以便能让大家对YunTable的概念和使用有一个大致的概念和影响,之后将给大家详细介绍YunTable是如何使用的,还有,如果想知道如何获取YunTable0.9版RC的源代码,请参看前一篇开发日记

 

架构

YunTable Arch

图1. YunTable的架构图

图1对于很多关注YunTable的人而言已经是非常熟悉,通过这张图可以看出YunTable主要有三个模块组成:

  1. Master节点:Master节点在功能上面属于比较“轻”的,主要负责维护Table和Region节点之间的对应关系,实际数据的查询和输入则都通过Region节点和Client端之间的交互完成,和Master节点无关。还有Master节点的默认端口是8301。
  2. Region节点:其作用是负责处理来自Client端的请求,并存储和管理大量的数据,Region节点非常类似BigTable论文中所提到的Tablet服务器。每个Region服务器管理多个Tablet,每个Tablet对应一个Table,并负责存储属于这个Table的数据。还有Region节点的默认端口是8302。
  3. Client端:主要以名为“YunCli”的命令行为主,主要用于让用户输入与数据处理相关的命令,并与后端的Master节点和Region节点进行交互。 

 

命令接口

现在YunCli主要提供五类命令接口:

  1. add:这个系列命令主要用于重要数据结构的创建,主要有三大功能:其一是设置YunCli所对应的Master节点的IP地址,由于对YunCli而言,其需要一个对应的Master节点,通过“add master:#IP-ADDRESS:PORT#”(##里面的东西代表的是需要在输入时确定的东西)能够完成整个设置,例子有“add master:127.0.0.1:8301”;其二是为Master节点添加新的Region节点,这样能确保数据有地方可存,具体命令格式和设置Master节点的相仿,为“add region:#IP-ADDRESS:PORT#”,例子有“add region:127.0.0.1:8302”;其三是创建新的Table,格式是“add table:#TABLE-NAME#”,示例:“add table:people” ,当用户输入完这个命令之后,YunCli会将这个请求发给Master节点,之后Master节点不仅会在其本身建立一个新的Table数据结构,而且还会根据Region节点的剩余空间和备份数目(Duplication Number)来确定那几个节点创建属于People这个Table的Tablet。
  2. put:这个命令的功能比较简单,主要是用于添加一行新的数据,其格式是“put table  row:#ROW-KEY# #COLUMN-NAME#:”#COLUMN-VALUE#” …”,在这个命令中,ROW-KEY是这行的主键(Primary Key),在ROW-KEY之后是多个COLUMN NAME和VALUE对。注意,用户需要使用英文的双引号来包裹带有空格等特殊字符的COLUMN VALUE。例子:“put table:people row:me name:”ike” sex:”male” address.homeaddress:”sh””。
  3. get:顾名思义,这个命令主要用于获取数据,主要有两种形式:其一是能获取整个Table数据的命令,格式为“get table:#TABLE_NAME#”,例子有:“get table:people”,现在这个命令对于小的Table是非常有效的,可惜对大型的Table会出现一定的问题,因为这样一次性取出的数据过大,但是这个问题会在接下来的几个Patch被解决,因为会加入Limit这个参数,来确保每次发送出来数据的大小不超过系统设定的最大值;其二是获取某一行的数据,也就是符合某一个Row Key的数据,格式为“get table:#TABLE-NAME# row:#ROW-KEY#”,例子:“get table:people row:me”。还有,但这两个命令在执行的时候,会自动舍去那些已经被标记为删除的数据。
  4. del:这个命令主要用于删除数据,以两种形式为主:其一是删除整行数据,也就是符合某一个Row Key,并在删除之前已经存在的数据,比如有一个Row Key,在执行删除操作之后,它有新的数据插入,那么这些新的数据将被保留,格式为“del table:#TABLE-NAME# row:#ROW-KEY#”,例子:“del table:people row:me”;其二是删除某一行某几个列数据,也就是在前一个命令的基础上把范围缩小到某几个列,格式为“del table:#TABLE-NAME# row:#ROW-KEY# #COLUMN-NAME#…”,在ROW-KEY之后可以跟多个COLUMN-NAME,来代表那几个列需要被删除。例子有“del table:people row:me1 sex”。
  5. show:这个命令主要用于得到一些核心数据,这样能方便今后的测试和管理,也主要有两种形式:其一是获取Master节点的主要信息,比如,有哪些下属的Region节点和Table,命令为“show master”;其二是获取某个Table的主要信息,比如,这个Table存储在那些Region节点、在Memstore中存储了多少Item和在YFile中存储了多少ITEM等,格式为”show table:#TABLE-NAME#”,例子是:“show table:people”。

 

使用流程

由于0.9版主要关注单机的实现,所以本使用教程将主要关注如何在单机的情况下使用YunEngine。

第一步:编译YunTable的源代码,需要进入YunTable的目录,接着如图2所示,在Linux窗口中执行命令“sh build.sh”。

yuntable-scr1

图2. 编译YunTable的源代码

第二步:启动Master节点,如图3所示在Linux窗口中执行命令“./startMaster”,在启动的时候,程序会打印出Master节点重要信息,比如,conf文件的地址、更新间隔(Flushing Checking Interval,单位秒)、端口号和备份数目(Duplication Number)等关键信息。

yuntable-scr2

图3. 启动Master节点

第三步:启动Region节点,为了不影响之前启动的Master节点的运行,需要先打开一个新的Linux窗口,接着像图4那样在Linux窗口中执行命令“./startRegion”,在启动的时候,程序也会打印出一些Region节点的关键信息,比如,conf文件的地址、更新间隔和端口号等。

yuntable-scr3

图4. 启动Region节点

第四步:启动yuncli,和启动Region节点一样,需要打开一个新的Linux窗口,键入“./yuncli”,这样能进入yuncli模式,在进入的时候,程序会打印这个yuncli对应Master节点的信息,比如,像图5那样,由于之前没有给这个yuncli设置对应的Master节点,所以“No Master Connection has been setup”这句话被打印出来。

yuntable-scr4

图5. 启动yuncli

第五步:Help命令,为了帮助初学者能够在yuncli中能够获得如何使用命令行的消息,程序提供“help”这个命令,通过这个命令,用户能如图6那样获知全部命令的大致作用和范例。

yuntable-scr5

图6. Help命令

第六步:设置对应的Master节点,每个yuncli都需要对应一个集群,而这种对应的实现方式就是为这个yuncli设置一个Master地址,比如像图7那样,输入“add master:127.0.0.1:8301”这个命令来完成Master节点的设置。

yuntable-scr6

图7. 设置Master节点

第七步:给Master节点添加Region节点,这样确保数据有地方可存。如图8所示,通过输入“add region:127.0.0.1:8302”命令,能够将运行在“127.0.0.1:8302”的Region加入到Master节点所管理的机器中。

yuntable-scr7

图8. 添加Region节点

第八步:创建新的Table,主要用于人的信息,比如,人名和性别等,名字叫“people”。如图9所示,在yuncli中键入“add table:people”,通过这个命令能创建一个名为“people”的Table。

yuntable-scr8

图9. 创建新的Table

第九步:显示Master的主要信息,如图10所示,通过在yuncli中键入“show master”这个命令来获取Master节点的主要信息,包括有哪些下属的Region节点和Table等。

yuntable-scr9

图10. 显示Master的主要信息。

第十步:给People这个Table添加数据,如图11所示,通过输入“put table:people row:me name:”ike” sex:”male””和“put table:people row:me1 name:”ikea” sex:”female””这两行命令来插入Row Key分别为“me”和“me1”的两行数据。

yuntable-scr10

图11. 添加数据

第十一步:基于Row Key的查询,如图12所示,通过输入“get table:people row:me”这个命令来从“people”这个Table获取Row Key为“me”的数据。

yuntable-scr11

图12. 基于Row Key的查询

第十二步:显示Table的主要信息,像图13那样,通过输入“show table:people”这个命令来获取名为”people”这个Table的主要信息,包括这个Table存储在那些Region节点和在Memstore中存储了多少Item等。

yuntable-scr12

图13. 显示Table的主要信息

第十三步:删除某一行的数据,如图14那样,通过输入“del table:people row:me”这个命令删除“people”这个Table里面Row Key为“me”的数据。

yuntable-scr13

图14. 删除某一行数据

第十四步:删除某一行某一列的数据,如图15那样,通过输入“del table:people row:me1 sex”这个命令删除“people”这个Table中Row Key为“me”和Column名字为“sex”的数据。

yuntable-scr14

图15. 删除某一行某一列的数据

第十五步:获取整个表的数据,将如图16那样,输入“get table:people”来获取名为“people”这个table所有还存在的数据,但由于有些数据之前已经被删除了,所以还剩的数据现在非常有限。

yuntable-scr15

图16. 获取整个表的数据

第十六不:输入“quit”来退出yuncli。

最后,希望大家如果在实际使用YunTable的时候,发现什么问题,请写信到Yuntable@googlegroups.com,我们整个社区会帮你及时处理的:),还有,如果想加入这个社区,请写信给我们社区管理员Brooks(brooks.xi@gmail.com)。

(2个打分, 平均:5.00 / 5)