-
最近文章
标签
分类目录
七月, 2009 的归档
-
GAE对象数据库设计特点
在 2009/07/29 上发表 | 1 条评论Google App Engine的数据库属于对象数据库,设计的思路比较独特,主要适用于“多查询,少更新”的web应用。今天去参加Sun的开发者日,正好有个MySQL的讲座,其中提到MySQL的pluggable storage engine当中,针对web应用优化的MyISAM,也是延续这个思路。不过MySQL毕竟是关系数据库,对于复杂的表查询操作,专家和新手写出来的语句,效率那可是千差万别。而GAE则不同,可以保证任何人只要能完成功能,效率都不会太差。当然,这是以牺牲部分功能作为代价的。但是想一下,还是更喜欢GAE的方式,毕竟设计数据结构和关系的时候就把问题解决,总比上线以后才发现数据库操作效率低下要好。 使用GAE的Python版和Java版做的程序也有好几个了,正好把它与传统的关系数据库比较一下。 查询比更新快十倍。 查询结果数量有限制。GAE进行查询时最多返回1000条数据,即使使用count来查看记录数量,最多也只返回1000。但是,在获取数据时可以指定offset,这样可以简单分页。 想统计,就要维护计数器。由于最多返回1000,无法得知到底有多少数据,如果程序中需要总数、平均值、总和、按月总数等等统计数据,就要自己维护一个计数器对象。具体做法,参考Google官方的文章计数器。 先索引,后查询。出现在查询条件中的字段,必须设置索引。 不用严格遵循数据库设计范式。在关系数据库中,类别名称、tag名称等一般要独立成表,然后使用时放置索引。但在GAE中,对象可以直接保存这些短小的数据,这样在查询时就规避了GAE无法进行表关联的缺点,而且由于有索引,这样速度其实也非常快。 查询条件,只能有一个不等。允许有多项查询条件,但是其中只能有一项是非相等条件(例如:大于,小于)。 ID或Key的使用,用于定位获取对象,速度最快。对于帐户对象,可以使用唯一的email作为key,这样更新时就不需要再查询一次了,直接在Transaction中完成更新即可。 在一个Transaction中,不能出现不同组的对象。 尽量减小单个组内的对象数量。由于Google App Engine属于云计算,所有的对象数据都分布在无数节点之上,这样数据查询可以并行完成,速度大大提高。如果把大量对象放置在一个组内,所有这些对象只能存在一个节点之上,查询时就没有并行查询的优势了。 数据关系的强制一致性。如果删除一个对象,所有依赖于该对象的对象都将被删除。 tag的实现,可以结合对象的list属性,直接保存所有的tag字符串。这样便于查询、增减。但不利于统计例如:具有某tag一共有多少对象。 暂时想到这么多,有空再补充。 -
Agile项目半年记,Agile脑图
在 2009/07/25 上发表 | 评论暂缺做这个Agile项目也有半年了,经历了1次release,几次iteration,完成的大小不一的story也有30多个了,还有deadline临近时的繁忙。7年前在书上读过的那些关于Agile和XP的概念和名词,一直没太多机会完整地实践,现在却是天天在用。近来闲暇,正好用在线工具MindMeister,结合工作笔记和培训资料,画了一个Agile脑图,汇总一下这半年的收获。 Agile作为一个知识体系,内容很复杂,脑图有点大,时间有限,暂时没有设置太多关联,只是简单按照层级列了一下,以后慢慢补上。这也是正是脑图的一个优势,当事情层级比较多、关系比较复杂的时候,使用脑图比较容易理清脉络。 -
在线脑图制作利器:MindMeister
在 2009/07/21 上发表 | 2 条评论一直在使用Mindjet的Mind Manager Pro,制作脑图。很好用,不过有时候在不同电脑上就觉得很不方便了。最近发现了一个在线制作脑图的工具,MindMeister,可以随时保存,然后在其他电脑上继续编辑。Get Things Done! 画脑图有很多好处,比如记录头脑风暴,分享思想,计划项目,可视化思考。特别适用做课堂笔记,思考一件事情,做计划等等。MindMeister的功能很强大,除了在线创建脑图之外,还可以与朋友实时合作,一个人创建的部分会自动发送给其他人。它还提供分享,密码保护,导出成PDF或各种图片。除此之外,MindMeister还有离线模式,可以嵌入iGoogle,提供IE和FireFox浏览器扩展,更为开发人员提供API。基本上能想到的都有了! 最让人意想不到的是,这么强大的工具,居然是用JavaScript制作了,拖拽一下首页上的demo就知道了。 -
开心网:越堕落越快乐!
-
通过Analytics的Map Overlay,透视全球最有价值客户群
在 2009/07/04 上发表 | 评论暂缺专业的市场人员,最重要的工作就是收集反馈信息,分析目标客户的特点和ROI,然后微调商业策略和广告策略,再获取反馈…同时,随时关注市场趋势、变化和爆发性事件,并及时调整。在线市场也是同样,追踪、分析网站访问情况,一直在用Google Analytics。经过几年的持续更新,Analytics已经成为主要的追踪工具之一。相比于其他很多在线追踪系统和日志分析软件,Analytics的缺点是实时性不强,大约晚半天;不过,胜在功能强大,电子商务方面的追踪功能完,与Adwords集成性强,性能稳定,又是Google出品,不至于泄漏网站的商业机密。 由于网站是面向全球销售产品,所以要找出访问量最高的国家。到Google Analytics,Visters,Map Overlay。美国最高,巴西其次,然后是意大利、印度、英国等等国家。 现在,看看哪个国家的购买金额最高。美国还是最多,但是随后的名次变成了法国、英国、德国、加拿大、澳洲、巴西等等 有了访问量,总收入,还是无法知道哪个国家最有价值。那么就来看看电子商务转换率(Ecommerce Conversion Rate)。令人惊奇的是,前两名居然变成了不知名的非洲国家Buikina Faso和伊拉克,接下来才是美国、澳洲、挪威、英国、法国、加拿大等等。 看起来似乎转化率指标最有用,它表明有多少百分比的访问用户转化成了购买客户。但是,访问量太小的国家,偶然性很强,显然商业价值也有限,并不值得投入过多广告和推广。而且,每个国家的购买金额也很重要。所以几个指标综合起来来看,拥有大量最有价值客户的国家,可以列出来了:美国、法国、英国、澳洲、加拿大等等。 好钢用在刀刃上,精力有限,一定要集中在目标客户群大的那些国家。找出了目标国家,下一步自然就是使用adwords、其他广告、affiliation、reseller等方式来积极推广了。

