DomainModelDescriptor 设计的初衷是为了适应不同类型的模型定义能够通过ObjectiveSQL 写入数据库或从数据库中读取,在JDK 中也有类似的设计,如PropertyDescriptor,BeanDescriptor 等,其目的也是描述Java Bean 和Property 的基础元信息,只不过在ObjectiveSQL 中DomainModelDescriptor 是一个抽象的定义,描述的是一个能够被ObjectiveSQL 所认识的业务模型,可以是一个Java Bean,也可以是其它对象。
在我过往的项目中,除了常用的Java Bean 模型可以进行数据库的访问,还会存在一些其它类型的模型同时也需要进行数据库存储,具体示例如下:
过程介绍:
- 通常数据量过大的情况下会采用Apache Fluent 进行数据缓存,然后集中入库(单批次数据量超过50 万行记录)
- 数据需要经过不同系统间传输,也就意味着需要定义传输和存储结构,ProtoBuffer 是比较合适的结构定义,无论是扩展性、压缩和解压效率都很优秀,所以我们选择ProtoBuffer 进行结构定义和数据传输
- ProtoBuffer 有自身的数据载体,和普通Java Bean 不一样,如果将数据转换成Java Bean 会产生额外的性能开销,需要经过DomainModelDescriptor 描述后,ObjectiveSQL 才能授受这样的模型
上文描述的是一种 DomainModelDescriptor 的场景,由于不同使用场景下,数据模型的结构也不一样,ObjectiveSQL 充分考虑了场景的变化,所以抽象出DomainModelDescriptor,为数据库访问提供必要的元信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。