1

DomainModelDescriptor 设计的初衷是为了适应不同类型的模型定义能够通过ObjectiveSQL 写入数据库或从数据库中读取,在JDK 中也有类似的设计,如PropertyDescriptor,BeanDescriptor 等,其目的也是描述Java Bean 和Property 的基础元信息,只不过在ObjectiveSQL 中DomainModelDescriptor 是一个抽象的定义,描述的是一个能够被ObjectiveSQL 所认识的业务模型,可以是一个Java Bean,也可以是其它对象。

在我过往的项目中,除了常用的Java Bean 模型可以进行数据库的访问,还会存在一些其它类型的模型同时也需要进行数据库存储,具体示例如下:

过程介绍:

  1. 通常数据量过大的情况下会采用Apache Fluent 进行数据缓存,然后集中入库(单批次数据量超过50 万行记录)
  2. 数据需要经过不同系统间传输,也就意味着需要定义传输和存储结构,ProtoBuffer 是比较合适的结构定义,无论是扩展性、压缩和解压效率都很优秀,所以我们选择ProtoBuffer 进行结构定义和数据传输
  3. ProtoBuffer 有自身的数据载体,和普通Java Bean 不一样,如果将数据转换成Java Bean 会产生额外的性能开销,需要经过DomainModelDescriptor 描述后,ObjectiveSQL 才能授受这样的模型

上文描述的是一种 DomainModelDescriptor 的场景,由于不同使用场景下,数据模型的结构也不一样,ObjectiveSQL 充分考虑了场景的变化,所以抽象出DomainModelDescriptor,为数据库访问提供必要的元信息。


Braisdom
19 声望7 粉丝

Braisdom, ObjectiveSql 创始人,主要开发者,有着15+年软件开发&设计经验,精通Java, Ruby, Python 等语言,对面向对象设计,分布式,高并发等系统设计有独立的见解,同时也参与多个在线系统的开发和维护工作。...