Blog一周年
昨天收到Dreamhost从信用卡划款的短信,才想起这个Blog开通已经一周年了。时间过得真快,去年的这个时候还在上海,而现在在杭州又呆了三分之二年了。
昨天和d.c.b.a从文三西路到老和山到北高峰,再走回文三西路,好好的舒展了下筋骨。没想到d.c.b.a暴走的本事居然不输于我,佩服佩服。除了暴走,d.c.b.a在一些工具的开发和想法上也让我orz,以后也要多多努力,将经验和知识生成工具和文档,沉淀下来。所谓言之无文,行而不远。做了几年DBA,要是都没有自己的百宝箱,你都不好意思跟人打招呼^_^
d.c.b.a来了杭州,从此又多了个牌友,越来越热闹啦,集团的DBA,估计还有一小半人都是不怎么认识的,下周末(2008.5.24)将举行《第二届中国网络工程师侠客行大会》,大家终于有机会有借口齐聚一下,不容易啊。
编写Perl模块
这两天在用Perl编写一些监控脚本,其实写代码也是一件挺有意思的事情,就是挺废时间的。而且,由于语法不太熟,基本想到一个东西都要先Google一下看怎么实现。Perl的语法相对来说有点晦涩,主要是一些内置变量和函数处理得相当精巧,而过于精致的东西理解起来就有点费力。相对于Shell,Perl在很多方面更加强大高效,比如Hash(关联数组)就非常好用,如果要将不同主机发出来的告警信息发送到不同的责任人,在shell中要做非常多的if或者case判断,修改起来也非常费力,而使用关联数组,则可以轻松实现该功能,代码简洁,配置方便,一个字,爽。
Perl支持以模块对代码进行封装。著名的CPAN上就有非常多好用的Module,可以极大的减轻开发量。一个简单的模块:
require Exporter;
use strict;
use warnings;
our @ISA = qw(Exporter);
our @EXPORT = qw(fun_public); #要输出给外部调用的函数或者变量,以空格分隔
our @version = 1.0;
sub func_private{
print "This is a private function";
}
sub func_public{
print "Hello,world\n";
func_private();
}
1;
__END__
模块的文件名一般以.pm做后缀,名字和package相同,也就是上面这个Module的名字为NinGoo.pm。然后在普通的.脚本中调用:
# creator: NinGoo
# function: test perl module
BEGIN {
push (@INC,'/home/module');
}
use strict;
use NinGoo;
func_public();
O’Relly出版了一系列Perl的图书,比较著名的大骆驼《Programming Perl》在这里有一个在线中文版本的,可以看看。
2008,老天保佑
update:刚看到新浪新闻说已经有救援部队进入汶川县,但愿能够救助更多的幸存者。最新的消息是汶川映秀镇9000人目前生还2000人。
2008真的是一个多灾多难的年头。年初百年一遇的大雪,然后是藏独的人祸,接着是两辆火车相撞,这次又是全国都有震感的大地震。
已经过去一天了,震中四川汶川县依旧没有任何消息传出来,情况不容乐观。而北川教学楼的倒塌,更是让人觉得揪心,都是些十来岁的孩子啊。不过内地很多教学楼都是危楼。记得我小学开始两年都是在一个祠堂里,土砖房,即使没有地震墙上也是手臂粗的裂缝。而初中教学楼当年就已经从中间裂开成两栋楼了。
春节以来工作上的压力也是越来越大,突然发现已经快一个月没有更新blog了,最近连续的晚间维护已经弄得有点精疲力尽。但愿2008年的困难,到此而止,但愿苦尽能够甘来,老天保佑。
李连杰壹基金淘宝网捐款入口:http://www.taobao.com/onefound/1jijin.php
| 各地伤亡汇总(来自新浪) 最后更新时间:5月13日23时36分 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
不使用SimpleDB的10个理由
自从Amason推出SimpleDB,基于key-value键值对的分布式数据存储系统受到了广泛关注,类似的系统还有Apache的CouchDB,以及最近重磅推出的Google App Engine的基于BigTable的Datastore API等,毫无疑问,分布式数据存储系统提供了更好的横向扩展能力,是未来的发展方向。但是现阶段,对比传统的RDBMS,也还有一定的差距和不足。Ryan Park撰文指出了SimpleDB的10大不足之处:
1.数据完整性无法保证
类似SimpleDB的分布式数据存储系统目前还无法实现和RDBMS一样严格的完整性约束,例如唯一性约束和外键约束等,所以数据的完整性需要在应用中来实现。
2.数据一致性无法保证,将导致非常糟糕的用户体验
SimpleDB做写入操作做了优化,调用API时只需要写入数据到一台SimpleDB服务器即返回写入成功的信息,随后数据会被分布复制到更多的SimpleDB服务器上,而在分布完成之前无法查询到最新的数据。所以需要在应用中来处理这种查询延时导致的数据一致性问题。
3.数据聚合将需要更多的额外编码实现
SimpleDB没有实现诸如join,group by,sum/average,sort等,这些操作都需要在应用中来实现。
4.复杂查询和即席查询更难实现
SQL标准已经出现很多年,数据库引擎对于一些复杂的SQL查询做了足够多的优化。SimpleDB对于过于复杂的查询和条件不定的Ad hoc查询没有提供特别的支持,所以SimpleDB还不太适合数据仓库等OLAP应用。
5.数据聚合操作性能比RDBMS差
RDBMS引擎对于join,group by等聚合操作做了很多优化,优化器可以提供根据不同的情况使用诸如hash join,nested loop join等方式来实现。自己在应用中实现这些操作可能效率会不如成熟的RDBMS。当然,这一点有些牵强,在应用中实现有可能更坏也有可能更好,从分布式趋势来看,数据库将倾向于做越来越简单的数据存储,计算更多的应该交给前面的应用服务器来完成。
6.数据的导入导出,备份等操作更慢更繁琐
RDBMS提供了很多成熟的数据迁移和备份工具,这一点刚刚出世的SimpleDB等自然有不足,但这不是问题,只要有需求和时间,就会有工具。
7.SimpleDB并没有想象中的快
Todd Hoff在一篇文章中的数据:从SimpleDB的1000条记录的表中读取10条记录需要141ms,从100000条记录中读取10条记录需要266ms,而从1000000记录中读取10条需要433ms,这比RDBMS明显要慢很多。当然,对于分布式系统,数据量越大才能体现出优势。在小数据量的情况下,集中式比分布式肯定更有优势。
8.RDBMS也可以良好的可扩展性
列举了一些RDBMS的成功应用案例,如Facebook和Livejournal使用MySQL,myspace使用MS SQL Server,Salesforge.com使用Oracle。通过良好的应用设计、数据的垂直分割和水平分割、主从复制和群集等技术,传统的RDBMS也能实现不错的可扩展性,支撑大型的网站系统毫无问题。
9.超级可扩展性是一种过度设计
技术应该以适用为原则,过度设计是一种巨大的浪费。
10.SimpleDB非常有用,但也要用在合适的场合
SimpleDB并不是为了替代OLTP数据库而生的,它的key-value存储结构更加适用于处理半结构化的数据。好的产品也要用的合适的地方才能扬长避短。
