数据仓库与Web商业智能平台架构设计
[ 2010-7-23 18:12 | by 张宴 ]
此文为《程序员》杂志约稿,发表在2010年6月刊。
文章以“KBI用户行为分析”的项目架构为原型,对Web商业智能平台的架构设计进行了概要介绍。实现海量数据的分析挖掘计算相对较易,如何以灵活的可扩展性框架,来便捷地应对项目开发周期中,来自众多项目干系人的需求变更,才是难点。
文章以“KBI用户行为分析”的项目架构为原型,对Web商业智能平台的架构设计进行了概要介绍。实现海量数据的分析挖掘计算相对较易,如何以灵活的可扩展性框架,来便捷地应对项目开发周期中,来自众多项目干系人的需求变更,才是难点。
想要个宝宝,原来的“1室1厅”太小,于是将在公司附近莱镇香格里小区的房子卖掉,暂时在南三环与南四环之间的角门路,租了个两居,离老婆单位经济日报社近一点。我上班的路程也由原来的2公里变成了28公里。“地铁4号线”换“地铁13号线”再换公司班车太折腾,且人多如蚂蚁,遂买了辆电动摩托,速度最快50码,骑行上下班。
搜狗地图的路书功能不错,可以将行驶路程用Flash动画表示出来。
最后,怀念一下,我们已经不再拥有的那曾经的家:
搜狗地图的路书功能不错,可以将行驶路程用Flash动画表示出来。
Flash Player文件
最后,怀念一下,我们已经不再拥有的那曾经的家:
当 MySQL 和 Memcached 遇到尾部空格时
[ 2010-7-6 18:42 | by 张宴 ]
同事下午遇到一问题,MySQL 和 Memcached 对于同一个key,不能对应起来。最终原因是:PHP将key写入MySQL数据库之前,没有经过trim()过滤首尾空格(关键是尾部空格),结果:
1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:
在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。
2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。
1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:
在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。
2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。