架构
iteye_2062
这个作者很懒,什么都没留下…
展开
-
SNS网站feed的设计思考
SNS网站一般都有这么一个功能:feed或者叫做新鲜事之类的之前在我们自己的网站也做了类似的一个功能,当时让人最郁闷的就是数据量的问题,上网搜了下,大部分结构都是类似。 我当时设计了这么一种简单的机制,数据量相对较小,但是运算复杂,并且限制较多: 1)feed字典表:feeds(id, event_type: int, //事件类别:写日记,上传照片,成为好友等...2009-06-14 14:19:08 · 118 阅读 · 0 评论 -
复杂输入分析系统设计
我们在开发中可能会遇到这样一类问题:1 你需要分步骤录入一个几页信息的大数据表2 系统会根据输入数据根据某种规则分析出结果报表3 结果需要持久化4 结果可以修改5 结果报表可以根据规则重新生成6 每个输入有唯一的一个对应的报表7 分析规则是容易测试的 我在解决这个问题的时候花了很多的时间,绕了个大弯,后来才发现是策略的问题,把最终设计的结果整理下: Pr...2009-06-15 13:50:09 · 116 阅读 · 0 评论 -
继承和数据库设计
OOP中我们经常会遇到继承的问题,在面向对象的语言中表示继承是很简单的。比如Java、Ruby。但是如果我们需要每个类对应关系数据库的表结构也能够反映出继承关系呢? 假设有一个公司员工俱乐部系统,有足球俱乐部、篮球俱乐部、读书俱乐部,我们已经有如下类结构 class Club { String name; Time createTime; } c...2009-06-20 14:36:58 · 249 阅读 · 0 评论 -
Gateway
Gateway模式最适用的场合就是当你需要和外部接口或者程序通信的时候,采用Gateway来隔离接口是非常通用的方式。我们前一阵子做的开放平台应用的时候这种接口就为我们提供了很多便利:定一个Gateway和开放平台进行验证,传输信息等操作,应用程序调用此Gateway来完成自己需要的功能。为了支持多个开放平台,可以定义一个Gateway接口,然后为每个开放平台都实现此接口Appli...原创 2009-06-24 21:06:06 · 107 阅读 · 0 评论 -
Mapper
Mapper一般使用在连接两层模块。 常用于解耦模型和数据库Model <= Mapper => Database比如我有一个Person类,我们实现一个PersonMapper类用于获取Person以及完成DB交互转换。可以看作是将一些层与层之间复杂的转换都交给Mapper来处理。...原创 2009-07-01 13:00:15 · 145 阅读 · 0 评论 -
Layer Supertype
每个层比如Dao,都有一些通用的方法,这些方法可以放到一个BaseDaoImpl里面,然后所有Dao层的都继承这个类。这个在Rails也是这种机制:Controller都是基于ApplicationController < ActionController::BaseModel基于ActiveRecord::Base,其实可以自己添加一个model作为BaseRecord <...原创 2009-07-01 13:08:14 · 108 阅读 · 0 评论 -
Rails中实现分表(1)垂直分表
我们开发的时候遇到一种情况,业务量小的时候设计了一张表来存帖子:posts(id, topic_id, content, status, created_at, updated_at) 当数据量达到百万的量级后,发现此表查找非常慢,这时候想从数据库的角度来改进。比较常用的方法是,把posts表中的大块数据的字段拆分出来,作为一个子表: posts(id, topic_id,...2009-07-15 16:29:15 · 269 阅读 · 0 评论