木匠的微型博客 Charlie Twitter

    follow me on Twitter

    Friday, January 30, 2009

    BC goverment job salary 加拿大政府工作收入简介

    一位华人老乡问及BC省政府薪酬情况, 如下
    [QUOTE=abc]请问老兄了解省府里面搞IT的工资待遇情况吗?我可能有一个机会,但是不知道是否值得去。[/QUOTE]

    以下言论,纯属道听途说,毫无真凭实据,入职各行各业(三教九流)均有风险, 请谨慎参考.

    政府的工资都是公开的,去政府网站溜达一圈,就都清楚了. BC Public Service - Job Opportunities

    BC省政府设在维多利亚,而不是BC省最繁华拥挤的温哥华,改善交通,增加就业机会,好处多多.
    (人们纷纷建议中国中央政府设在昌平或者通县,一个道理)

    木匠由于住在维多利亚,近水楼台,做过几次不成功的尝试,人家政府的人就是瞧不上俺,看我不像个混混,过于讲究实干和激进,不适合政府工作. 唉, 罢了, 由此断绝了这个想法.

    政府工作职位分级别, 论资排辈, 又臭又硬的门槛和台阶.(精神胜利法;吃不到葡萄,说葡萄酸,发扬阿Q精神). 以后退休可以再考虑混进去.

    R18,21,24 初级 3~5万
    R27 中级 6.5万 ($64,109.53 - $73,329.50)
    N30 高级 8万 ($72,380.24 - $82,867.93)
    在往上就是Manager了. 每个级别会有5%到10%的市场调节. 鄙人没有听说过政府有额外的奖金计划.
    政府有一个Flexible Day, 每两周多休一天假.
    最牛的是政府的退休金计划, 一年加年薪的3%(或者2%), 最多可以达到年薪的75%, 商业公司没有这个计划, 干巴巴的$1400,还是在你没有存款和收入的情况,明摆着领不到.

    我LD他们单位是个大学科研机构(纯属浪费纳税人钱财),属于政府薪资范畴,刚刚给每人追加了$4000~$7500的市场调节,还不错. 干的政府的懒散活,却非要和商业公司员工的收入看齐,不知道他Niang的哪门子道理.

    我们DBA部门2008年夏天刚刚从政府找了一个R30级的, 给了他9.5万.

    感谢这位华枫(ChinaSmile.net)网友提供素材, 素材就是博客的生命线.

    BC省议会大楼(现在成文物了,每天对游人开放参观),在维多利亚 Inner Harbor .

    Thursday, January 29, 2009

    Rocky mountain trip落基山国家公园行程

    我喜欢旅行在路上的感觉.

    这里是2008年陪岳父岳母观赏加拿大落基山脉国家公园的行程, 包括Banff, Jasper, Revelstoke.
    和BC省立公园 Wells Gray, Mt. Robson.

    9/6 Saturday: 赶八点轮渡(8:00 Ferry), 不在温哥华停歇, 到Hope市吃午饭,
    夜宿净水市(Clearwater).Jasper Way Inn Motel, 57 Old North Thompson Hwy East,
    1-250-674-3345, 2bedroom, $105

    9/7 Sunday: 游Wells grep 瀑布,Roberson公园,Mt Edith Cavell 看冰川,
    夜宿Jasper. Accommodation in the Rockies,303 Aspen Avenue,tel:(780)852-4609
    Rates ($CDN, per room, 2 guests) High Season - $60,Low Season -$40, Miller

    9/8 Monday: 自带午餐游 medicine lake/Maligne lake, Miette 泡温泉

    9/9 Tuesday: 穿过 93 号公路, 观看1. Athabasca fall, 2.哥伦比亚冰川, 3. Saskathewan午餐, 4. Mistaya Canyon 5. Bow pass(Bow summit), and Peyto lake 6.乌鸦脚雪原
    夜宿Banff. Rocky Mountain Bed and Breakfast,223 Otter Street,
    1 (403) 762-4811,www.rockymtnbb.com $100-$125, sheryl

    9/10 Wed. 1.Go throuth 1A (Option), 2.Lake Louise,(自带简餐)
    Yoho:1. Spiral tunnels 2. Takakkaw fall 3. Natural bridge 4. Emerald Lake
    5. Golden 午餐
    夜宿Revelstoke, Alpine Inn & Suites, 1001 W2nd St, 1800-876-8206
    2 bedroom suite three double beds or two double beds and two single beds, $110

    9/11 Thu. 游水库大坝, Naksup (optional)

    9/12 Friday: Vernon (optional)

    9/13 Saturday: 温哥华 中餐 大快朵颐, 夜宿Richmond华人家庭旅馆.
    9/14 Sun.乘轮渡返回 美丽宁静的Victoria.


    应该是5号(Yellow head)高速公路.

    Monday, January 26, 2009

    2009 Chinese new year show维多利亚春节联欢晚会

    给维多利亚华人社区做个广告.
    -------------------------------
    時間: 2009年1月31日晚7:00
    Time: 7:00pm January 31, 2009

    地点: 以馬內利浸信會
    Location: Emmanuel Baptist Church,
    2121 Cedar Hill Cross Rd. (大学南门)

    晚会内容: 中国民歌民乐民族舞蹈京剧话剧
    Content: Chinese Music, Chinese Dancing,
    Beijing Opera and Drama.

    晚会提供少年兒童照顾: Children Program Under Grade 6
    免费入场,会后提供茶点: Free admission and refreshments provided after show

    赞助单位 Sponsors
    Dawa News
    VictoriaBBS.com
    Global Travel
    DFH Realtor: Ms. May / Katherine
    Traditional Chinese Clinic: Dr. Chen

    大华商报
    维多利亚华人网
    环球旅游
    DFH 地产经纪:刘艳梅/李冬妮
    北京传统中医诊所:陈香医生

    -------------------------------
    http://www.news.cn/video/2009chunjie/cw.htm
    推荐给海外华人, 这里您可以看到中央台春节晚会录像.

    Thursday, January 22, 2009

    Solve SQL plan access path issue with 10053 trace CBO小试牛刀解决执行计划突然改变的一个办法

    写完了英文版以后,耗尽了今天的能量,赶在各位回家过农历新年前,再努力一下,完成中文版.

    问题
    ----
    如下SQL查询订单细节表,两个谓词(predicate),每个谓词列上都有索引,
    为什么 SQL optimizer 挑了一个选择性差的索引.

    # SQL
    SELECT /* */ * FROM po_item
    WHERE poid = :a AND STATUS = :b
    ORDER BY poitemid;

    INDEX PO_ITEM_POID ON PO_ITEM(POID)
    INDEX PO_ITEM_STATUS_UPDDT ON PO_ITEM(STATUS, STATUSUPDDT)

    db_file_multiblock_read_count = 32
    optimizer_dynamic_sampling = 2
    optimizer_features_enable = 10.1.0.4
    optimizer_index_cost_adj = 100
    alter system set optimizer_index_caching = 25;
    alter system set optimizer_mode = FIRST_ROWS_10;

    我们的情况是,一般一个订单一本书, 应该选择订单号POID列,基本没有重复. 但是2007年初夏的一个夜晚,CBO突然改用了物品状态STATUS列上的索引, 物品状态总共只有20个不同数值.
    幸运的是,通过构造测试案例,成功再现了当时的情况(好比侦探办案).

    解决方案
    --------
    理解 CBO,试验,观察 and 解释说明.
    With SQL session 10053 trace and dbms_xplan.display_cursor().

    结果及解释
    ------
    当列统计信息包含num_distinct和density时,少数情况下,优化器会考虑使用density.
    比如这个案例,
    根据谓词取值(predicate column value)在数据发布图(histogram)的水桶(bucket)里面结果集大小(cardinality) 和 num_rows * density 做比较, 理论上会取数值大的一个. 但是这个案例CBO挑了数值小的一个. 理论会随着新版本的出现而改变.

    做数据库设计和管理的,英语都不赖,看官您先读一点英文吧,春节后就变成中文啦. ^_^
    When database collect histogram stats on a column, it calculate a new density for the column,
    and it will be extreme smaller, CBO use density as selectivity.
    After we hack the column density, database will clear the histogram stats,
    the CBO will use 1/NumberOfDistinct, ignore density.

    When we check the output of 10053 trace,
    both IO costs are same, but index selectivity (ix_sel) and table selectivity (ix_sel_with_filters)
    on Index: PO_ITEM_STATUS_RANDOM_UPDDT is smaller than than it on Index: PO_ITEM_POID.

    Access Path: index (equal)
    Index: PO_ITEM_POID
    rsc_cpu: 17832 rsc_io: 3
    ix_sel: 1.2670e-05 ix_sel_with_filters: 1.2670e-05

    Access Path: index (index-only)
    Index: PO_ITEM_STATUS_RANDOM_UPDDT
    rsc_cpu: 17632 rsc_io: 3
    ix_sel: 6.2422e-06 ix_sel_with_filters: 6.2422e-06

    *) 修复: 改变列的density统计信息, 使之接近真实值.

    Test case setup link 构造测试案例

    10053 trace output跟踪文件输出和dbms_xplan美化的执行计划.


    后记
    ----
    CBO的水很深, 一环套一环, 好似无底洞. 研究细节和深度需要适可而止,解决完问题,赶紧撤.
    参考Christian Antognini提到的DBA容易犯的强迫调优失调综合症(compulsive tuning disorder)谨防重蹈覆辙.

    FYI,
    Once upon a time, most database administrators suffered from a disease called compulsive
    tuning disorder.3 The signs of this illness were the excessive checking of many performancerelated statistics, most of them ratio-based, and the inability to focus on what was really important.


    回龙观 风雅园 飘在北京住的地方

    Monday, January 19, 2009

    Learn from Oracle book 读书学习数据库

    首先热烈庆祝今天读完了老刘(Lewis)的Cost Based Oracle Fundamentals附录A附录B,就此读完了全书.欢迎客官您将各种SQL执行计划和优化器方面的疑难问题放马过来,让木匠尝试一下新学的功夫.

    开卷有益,静下心来读书是吸取知识的最快途径之一, 再结合试验,进步更是飞快.
    书中自有黄金屋,书中自有颜如玉,对第二点还没啥体会,您有的话,介绍一下.

    2008年上半年读完了Steven Feuerstein的Oracle PL/SQL Best Practices, 2nd Edition: October 2007, ISBN 13: 9780596514105. 感觉PL/SQL功力暴增,从菜牛一跃变为牛人,读完了Doing SQL from PL/SQL: Best and Worst Practices更是进入了超一流选手的行列,充满自信.

    2008年10月11月,花了两个月时间完成了瑞士人Christian Antognini的Troubleshooting Oracle Performance. 读了一半,节奏缓慢,等读完了所有章节,才明白了前半部分铺垫的意义,盖房子要有一个好的根基. 作者虽然母语不是英语,开始读的时候稍有不适,慢慢的,发现他的文章却是平铺直叙,拿捏得体,易于理解,所以读书进度很快.

    扯远一点,1994年偶然在公司(西安思维)捡到一本Code Complete(代码大全)中文译本,爱不释手,但也只是蜻蜓点水,学到一点皮毛.现在我手里正拿着Code Complete的原版.
    代码大全里讲的软件开发有几种比喻(Metaphor), 比如软件书写(Penmanship,写作),软件农场(种庄稼/耕作Farming),软件堆积(养牡蛎Oyster Farming) 和 软件构造(Construction/Building,构建软件).
    我同作者一样,喜欢盖房子这个比喻,房屋的根基和房屋的构造规划都很重要.

    2008年5月开始读CBO Fundamentals,这本书真是难啃,内容不易理解,断断续续,每天大概5页,9月份卡在第十三章Sorting and Merge Joins,圣诞节又拾起这本书,一鼓作气,冲过难关,读完了剩余部分,特别是读完14章The 10053 Trace File,贯穿全剧,对CBO的认识又上了一层台阶.
    我对英国英语不太适应,Doing SQL from PL/SQL: Best and Worst Practices的作者也是英国人,读起来相当吃力,改天我把所有20个要点及示例重新写一遍.

    下一个目标是Richard J. Niemiec的Oracle Database 10g Performance Tuning Tips & Techniques, 1000页,每天十页,计划100天(3个月)读完.粗粗翻了一下,此人标准美国英语,文笔通俗易懂,按时完成目标问题不大.


    2005年7月刚到加拿大时,从旅馆到办公室的路上, 距离办公室有300米,中午常到这里散步.

    Friday, January 16, 2009

    Kicks 近期动态

    除了生活八卦以外,好像我的技术文章大伙都没兴趣,难道是我讨论的主题太偏太生僻,还是社区里面做Development DBA的同仁较少,激发不起共鸣.

    这里是我的学习动向,
    宏观研究易于线性廉价扩展的数据库系统,BASE解决方案,依据功能组拆分数据库,异步处理.
    微观研究SQL Optimizer是怎样工作的.弄清楚了Oracle优化器,你会发现以前各种SQL方面的疑难杂症迎刃而解,加个SQL hint,调整隐含参数,修改对象统计信息之类的技术,都是菜鸟级的功夫,但是牛人也得用.
    中间层面,研究各种典型场景中处理数据的设计模式,以及SQL和PL/SQL优秀实践和糟糕实践,找出规律,重构模型. 通常我们讲最佳实践,木匠不喜欢"最佳"这个词,它也是个封闭端口,感觉不允许别人挑战你的权威一样. 质疑权威是我的行事准则之一. 而且喜欢开放端口的描述.

    生活方面, 耳朵感染了,旱了两个月,这个周末开始恢复游泳锻炼,健康始终排在个人目标前三位.
    2009年的密林狂奔和(国家公园)露营野游计划也该详细制定了.
    股市在低谷震荡,2月底以前需要找准机会抄底,买足去年RRSP(退休金计划)的余额.
    房屋贷款利率降到了2.8%,诚如玉面飞龙所述,现今房奴的日子比较舒服,不急于还本金.

    职业发展方面,前CIO介绍了一个挑战性的工作,2月初确定.
    还有个加州的华人中介介绍了中国的机会,如果前一个尝试失败,加拿大移民监坐完了,我可以自己回国.如果前一个尝试顺顺当当,我就把它介绍个国内的朋友.
    我平均18个月换一个工作,最短的只干了一天半,1993年10月在西安用AutoCAD绘制电路图.
    目前这个工作是我做的最久的,已经3年7个月了,一来就是6级工程师,我们的CIO/CTO才7级,基本没有发展空间了. Tom讲过,10年做10个项目,远远好过10年做一个项目,积累更多经验,学到更多知识.
    参考木匠的座右铭,我最不缺少的就是探索尝试新技术的兴趣,好奇心,创新精神和想象力.

    博客方面,一下萌发了好多主题,可是哪个也不能专心深入的展开写出来.
    老爸讲过咱天生就是发散型思维,缺少组织才能,缺少的是自律和专注,排在我的座右铭前面.
    人生35岁,看清了自己的优点和缺点,不容易.路漫漫其修远兮,吾将上下而求索.
    突然觉得英文写起来快,中文已经慢了几节,下周赶紧把异步处理系列翻译完.


    我们家苏菲 和 回龙观的冰糖燕窝家的 ??,对不起,浅棕色可卡犬的名字忘了.

    Tuesday, January 13, 2009

    Why to generate test data and how. 为什么要生成测试数据?如何做?

    在学会生成测试数据之前,我仅仅知道select * from scott.emp;
    加上
    create table t(a number);
    insert t values(1);
    这就是我知道的所谓测试,幼稚吧.

    为啥需要测试数据呢?
    情况太多了,我的经验是,等到你需要的时候,就是找不到,干着急.

    测试数据可以用来把灵感转化为实践,验证原型是否工作(可用性,可靠性,可扩展性),性能测试,提问题和重现问题 等等. 随后有一篇介绍我是如何用完善的测试数据发现了使用MERGE SQL产生的臭虫.
    还支持TDD, 测试驱动开发, 用过以后你就知道甜头了, 和异步处理一样美妙!

    关于提问题, 引自Tom: You would better supply very very simple create tables and insert statements.
    The SMALLEST create table possible (no tablespaces, no schema names, just like I do in my examples for you)

    解决方案.
    --------

    *) 产生多个不同数值, 得到一定的数据分布

    Mod(rownum,500)
    dbms_random.value(1,500)
    dbms_random.normal()

    *) 产生字符串

    rpad('x',500,'x')
    lpad(RowNum,200,'*')
    dbms_random.string('l',500)
    # 'u', 'U' - returning string in uppercase alpha characters
    # 'l', 'L' - returning string in lowercase alpha characters
    # 'p': any printable char. this one is slow

    *) 数据源

    # dual connect by level <= 3000 # all_objects # WITH subquery factor *) 随机排序 ORDER BY dbms_random.random; *) 点击进入具体示例

    *) 参考
    1. Tom, from dba_object
    2. Jonathan, + materialize subquery
    3. Christian Antognini, dbms_random.string()
    4. Tanel, dual join dual connect by level <= 3000
    维多利亚市的天鹅湖, 湖对岸右边一点是Hatley Castle城堡, 电影X-Man(X战警)三部都是在这里拍摄的.

    Wednesday, January 07, 2009

    cross rows comparing行间数值比较

    回应eagle的一篇帖子,介绍一下多种方法做行间数值比较.

    方法
    --------
    1. Hash Join
    eagle’s home http://www.dbafan.com/blog/?p=176

    2. Lead()/Lag() Analytic function

    3. SQL Model

    结果
    -------
    Hash Join表连接是一个好的方法, Lead() 分析函数效果更佳, 更短时间, 使用前者八分之一Latches锁,1/4逻辑读.
    SQL Model可以工作, 但是数据量一大,效果就很差,惨不忍睹, :)
    SQL Model 需要更多的 PGA内存和临时表空间来存储Model单元和排序.
    减少Measure部分的列数有一定帮助, 需要进一步学习和调整. SQL Model的效率理应匹配Lead() 分析函数.

    您有更好的手段来调优 SQL Model 吗? 请发表高见.

    详细性能测试步骤和代码

    PL/SQL ADT collection usage比较自定义类型数组与PL/SQL数组的性能

    从今天开始, 木匠开始介绍BASE架构中数据库部分的基础部件.
    有了这些基础准备知识以后, 我们再来谈(big picture)整个画面: 异步处理 和 数据复制.

    PL/SQL 是最好的Oracle数据库数据处理和编程语言, 这里讲讲如何提取数据并放进用户数据类型数组ADT/UDT collection. 我仅知道3种方法, 我们通过一组Benchmark找到每个方法的优缺点,帮助指导实践.

    先写了英文的,然后翻译成中文. 详细初始化设置和Benchmark的代码, 请参考英文版链接, 很多关键字看英文版会更清楚.
    你可以暂时忽略create table里面的list partition分区部分, 以后会用到.

    欢迎提出更多更有效的方法.

    Benchmark方案
    -- -- ---
    * RunStats
    * SQL trace, 推荐使用Christian Antognini的TVD$XTAT trace 分析工具 , 读过TOP的人都知道, ^_^.

    测试结果
    -------
    PL/SQL 内置数组(Associative Array and Nested Table) 是从数据库获取结果集的最省资源的方法.
    但是有些时候,你需要把数组当作表(table),来跑一个查询, 你就必须用到ADT/用户数据类型数组.
    比如:

    Declare
    lt_item_tab item_tab;
    Begin
    select item_name, qty, price from TABLE(lt_item_tab);
    End;


    3种方法 和 他们的优缺点:

    1) 将多个列转换成用户数据类型数组, 成批放进数组.
    优点: 代码简洁.
    缺点: 和第二种方法相比, 多消耗50%的CPU时间; Latch锁数差不多.

    2) 使用multiset, 在SQL里面直接构造出用户数据类型数组, 作为一行/一个单元放进数组.
    优点: 使用较少资源, 在我的测试案例里面, 比第一种方法CPU时间少50%.
    缺点: 代码有点复杂; 在版本10.1中,不支持SQL Returning语法. (明天试一下11.1.0.7).

    3) 成批放进 PL/SQL 内置数组, 然后复制数据到用户数据类型数组.
    优点: 使用较少资源, 67% better than approach 1 in my test case; Latch锁数少一半.
    缺点: PGA内存多一倍, 合乎逻辑, 代码有点复杂, 维护性较差.

    注释: ADT: Abstract Data Type, 也叫作 User Define Datatype.

    鄙人以为, 以上所有代码都很简单, 复杂只是相对而言. 嘻嘻.

    Sunday, January 04, 2009

    Amazon.com aquired AbeBooks.com公司被亚马逊收购

    上文书提到要写收购的事儿,今日成行,

    2008年早些时候就开始谣传,先是说要被Chapter(加拿大最大实体书店)收购,
    后来夏天漂流的路上听"老奔驰"说在两周以后要被亚马逊收购,而且全世界的人都知道了,这才倍感震惊,恍然知晓.
    公司有3个华人同事,我是第一个得知,难道这"全世界"不包括我们,因此学了一课,没事多找同事聊天,即提高口语,又快速了解本公司花边新闻.

    7月31日,公司宣布第二天有重要消息发布,同事们顿时感到黑云压境,不知是祸是福.
    第二天亚马逊来了几个VP,宣布了收购意向,十月底完成交易,现金收购.
    他们提到了三个不变: 业务,人员和办公地点.这下大伙的心才放了下来,松了一口气.
    在QA问答时段,席间好多同事积极表示了去西雅图亚马逊工作的兴趣,他们的回答是公司鼓励应聘内部职位,优先考虑.本地西人同事真是直爽!

    收购并不是一帆风顺,期间受到了加拿大政府遗产部门的刁难,区区一个十年历史的创业型公司,咋样也不能算作一个加拿大遗产呀!!? "老憨"(德国CEO老大)多次亲自跑到渥太华,同政府官员进行激烈的争论,终于在11月底得到政府批准,(而接待我们CEO的竟然是刚毕业的实习生毛头小伙,他知道啥呀).

    结果12月1日成交,亚马逊趁机压价10%,好过收购失败,以后有大树做依靠,确保安然度过本次经济危机. 还好加币跌了,收购按美元结算,基本没有亏损.

    在说说股票和期权,这是木匠第一次从期权里面得到实惠,味道不错;在Dell工作的时候,发了600股,每股标价$60,结果到走的时候,2001年IT泡沫,每股跌倒$30,味儿都没闻着.
    原来的公司AbeBooks.com每人##股期权(Stock option),人人均等,共产主义.
    到了亚马逊好了,发的是股票Share,而且根据职务轻重差异化,终于显示出来DBA的重要性,还是大公司规范.股票分四年兑现,算下来每年差不多一万块.这年代,要求加薪五千,难于蜀道,股票发下来倒是轻松.

    号称维持三不变,其实日常工作还是受到了影响,稍微大点的项目,都要报亚马逊审批.希望今年有机会南下100公里,到西雅图亚马逊短期轮换工作.


    注释1: "老奔驰", 原名Peter, 因为他有一辆80年代造的奔驰汽车,就给他起了这个绰号.在办公室用中文议论别人是不礼貌的,所以给每个同事都起了中文外号,比如沃尔沃,豆腐丝,老汤唯,二号,研究生...etc.

    河狸湖(Beaver Lake)结冰了,1996年以来首次,记录一下.

    Saturday, January 03, 2009

    Data accuracy and consistency分布式异步数据处理的可行性

    2009年定下一个实在的目标: 坚持每周一篇博客. 主要写个人在加拿大的生活趣事, 以及数据库开发和设计模式作为辅助.
    -- '大多数的事例告诉我们,我们不因才干、天赋、美丽的帮助下取得成功。反而,成功来自于最简单的"坚持"'.

    好了,言归正传,谈谈当下如火如荼BASE设计架构中异步处理的可行性.
    BASE (basically available, soft state, eventually consistent)

    很久以来,产品经理和软件开发人员都把维护数据的一致性和准确性作为首要目标.
    要想构建一个scalable线性扩展的数据库系统,必须牺牲一些数据一致性,来创造出更高的可用性和减少网络依赖性(Network Partition Tolerance, or Isolation and Loose coupling).

    鄙人认为(IMHO - in my humble opinion), 除了信用卡系统和订单系统, 其余功能模块都可以异步处理,比如库存,搜索,财务,物料,后勤运输,发货...etc.
    这里提供两个真实生动的素材,帮助你说服产品经理,证明构建异步数据库系统的可行性.

    a) 航班订票系统
    某天你去国航订票,要求买靠窗户的座位,系统里显示只有3个走道的座位,但是实际上有两个靠窗户的座位.
    你会去国航找他们领导投诉吗? 答案是否定的.

    b) 网上购物-在亚马逊买书
    Doug(倒戈)刚刚出版了一本新书: "如何冬季漂流?".
    我们快乐的客户登录亚马逊主页,输入关键字"漂流", 找到3本书,但是没有Doug那一本,客户才不在乎呢.
    他们买了一本评分高的, 然后带着汽船去享受冬季漂流了.

    我猜只有作者Doug非常气愤,他会打电话给亚马逊客户服务热线,要求更新库存,将他的书上线.

    同样, Tom 刚刚出版了一本新书: "如何3分钟优化你的数据库?"
    ... ... 您自己编后边的故事吧, 嘻嘻.


    以下是我发给我们产品经理的原文.

    *) Air flight booking ticket system

    As a passenger, if you ask a seat close to window, but system shows only 3 seats available in aisle, and actually there are 2 more seats close to window.

    Will you call airplane company to complain? No.

    *) Amazon book search

    Doug published a book: “how to tube in winter?”

    If you search the book title with keyword “tube”, show 3 book, but not Doug one, the end user won’t care. They will buy one of them, and then enjoy the tube in Winter…

    I guess only editor Doug will be angry, he will call Amazon to refresh his book in Inventory.

    您有什么更好的应用场景故事呢? 欢迎留言介绍.

    注解1: Doug 是我们公司一个年轻贪玩的Web Developer, 每年夏天组织我们去Duncan市Cowichan 河漂流,而且可以观赏hot girl, 并且引诱你吸大麻(Weed).
    注解2: Scalability - 更具体点,就是Scale Out, 这个词我翻译的不好, 欢迎批评指正.
    注解3: network Partition tolerance, CAP三原则中的P, 也翻译的不好,请指正.

    p.s. 参考:

    1) BASE: An ACID Alternative
    http://acmqueue.com/modules.php?name...owpage&pid=540

    2) Scalability Best Practices: Lessons from eBay (Partition and Asynchronously)
    http://www.infoq.com/articles/ebay-s...best-practices

    *) Fenng 的 系统架构方面的文章汇总.
    http://www.dbanotes.net/arch


    从客厅窗户看我家后院.

    Friday, January 02, 2009

    Life quality beside salary 生活质量和生活成本

    上一篇讲了美国高科技公司的收入, 这里续写一篇, 生活成本, 然后您就能估算出生活质量了.

    如果你今年在硅谷湾区找到了一份满意的工作,
    开始找公寓租住,
    一房一厅 $1200 ~ $1500
    两房一厅 $1500 ~ $2200
    如果你是单身,一个月$8000,不少了吧,基本吃住生活开销,就得花掉$4000, 还有30%缴税,
    各种奢侈娱乐你就别指望享受了,闲暇时间,就在家上网溜溜花边新闻得了.
    或者休长假,去中西部偏僻省份长途旅游.

    Santa Clara中等价位房屋 $500,000
    稍微好点,中上等价位房屋 > $ 1 million.
    在硅谷的IT华人,基本赚着中上等的收入,住着中上等价位的房子.
    维多利亚的IT华人也一样; 中等价位房屋 $40万, 中上等价位房屋 > $60万.

    比如在湾区,一个家庭年收入在15万到25万,不少了吧, 每月大概一万二到两万.
    上缴30%个人所得税, 每月6千.
    然后谈房子, 基于正常贷款利率, 借十万,月供$500, 那么买个一百万的房子,
    多年的积蓄交了20万首付,咋整也得借八十万,月供$500 * 8 = $4000, 日常生活开销, 每月2k~3k.
    一般一家两个小孩, 上学加上各种知识培训(钢琴,国际象棋,游泳...等等)一个费用在1k~2k, 两个算3k,不包括玩具.
    一眨眼,每月一万六千块钱没了. 该谈玩耍娱乐了, 就在自己后院陪小孩玩玩过家家娱乐吧.

    最近半年房屋价格剧烈震荡, 半年前中等价位房屋 $70万.
    但是好地段的房子,价格基本没变, 老道理 Location, location, location!
    买房主要看位置,位置,还是位置.

    总之, 硅谷湾区生活成本高, 一个家庭里边, 夫妇双方都要工作,才能生存下去.

    以上素材来自一个我的客户,在硅谷湾区工作生活了15年,如今在 Mountain View 上班.

    注释1: 写的有点悲观, 给一些盲动的人一个清醒的认识,比如我, 全盘考虑以后再做决定. 嘻嘻 硅谷的人们依然快乐的生活着.
    Have a nice day!

    Thursday, January 01, 2009

    Salary review in glass_door职业规划

    新的一年开始了, 你定下了什么职业目标?

    2008年初我的目标是年收入增加一倍, 由于客户业务量收缩,我的目标也随着一再调整,最后减到年收入增加25%. ^_^
    今年经济形势差,正好找个借口,今年的目标是持平去年的收入,或者减少20%,不求上进.
    (不能产生价值的技能,不是我追求的技能;参考木匠的座右铭第二条: 实用)

    我三年前登录加拿大的时候,预定目标就是坐满移民监,然后南下.
    估计这个月入籍考试,三月宣誓入籍,就可以走了.
    资本主义经济5到10年一个高低循环, 让我赶上了经济低谷, 或许还要继续卧薪尝胆一年.

    亚马逊有一个内部机会,属于Payments Services部门,
    我就喜欢去最艰苦(critical business)的地方工作,提升技能,提升收入,一举两得.
    先联系试试,看看可不可以远程工作两个月,然后搬过去.

    关于工资调查,我推荐www.glassdoor.com, 一个由用户产生内容的Web2.0网站.
    在如此经济低迷时期,它居然得到了一千万风险投资.

    这里是GlassDoor网站公开的工资调查.
    你注册一个帐号,然后填上你的年收入(现在的或者历史的,都行),就可以看别人的工资和公司评价了.

    Microsoft

    Software Development Engineer base salary: $91,464
    Program Manager base salary: $89,765
    Software Development Engineer In Test base salary: $84,451

    Deloitte

    Consultant base Salarie $73,236
    Senior Consultant base Salarie $96,546
    Consulting Manager base Salarie $127,002

    Cisco Systems

    Software Engineer IV base salary $110,904
    Software Engineer III base salary $93,232
    Software Engineer base salary $90,629

    Accenture

    Consultant base salary $73,741
    Analyst base salary $58,426
    Technology Consulting Analyst base salary $59,460

    Yahoo!

    Software Engineer base salary $97,175
    Senior Software Engineer base salary $121,145
    Senior Product Manager base salary $123,000

    Google

    Software Engineer base salary $95,631
    Senior Software Engineer base salary $123,225
    Software Engineer III base salary $105,022

    Amazon

    QA
    Salary: $84,000 Bonus(Cash+Stock): $20,500 Total $97,667
    Software Engineer I
    Salary: $82,416 Bonus(Cash+Stock): $18,286 Total $97,889
    Software Engineer II
    Salary: $98,686 Bonus(Cash+Stock): $28,140 Total $122,857
    Software Engineer III
    Salary: $113,54 Bonus(Cash+Stock): $58,859 Total $161,311

    Yahoo! DBA
    Salary: $128k~141k Bonus(Cash+Stock): $24k Total $153k~165k

    QA Engineer at Yahoo!
    Salary: $88,880 Bonus(Cash+Stock): $5,500 Total $90,713

    Cisco Systems Software Engineer
    Salary: $90,629 Bonus(Cash+Stock): $12,772 Total $98,223

    eBay Principal DBA
    Salary: $138k~150k Bonus(Cash+Stock): $ 20k Total $158k~171k

    维多利亚的IT同仁,咋样,心动了,南下吧.
    看看下面这张地图,西雅图就在维多利亚南边100公里,收入却高出我们一倍,天理何在. 哈哈.
    备注: 点击看大图.