复合存储引擎的设计和实现(包含ORM和内容存储)
本项目是xProject的一部分,如果想了解更多访问xProject.codeplex.com
1. 存储服务在系统中的位置
存储服务存在于系统的最底层,为应用服务器的其它模块提供存储服务支持,系统全局cache工作在存储服务之上。系统存储配置管理器会cache系统的数据库连接信息,这一信息是本地的和非共享的cache。但是由于系统的存储是按照id 递增的,所以不会造成问题。
2. 系统的设计目标
实现一个运行时可以扩展的数据存储层。通过定义Template可以对数据Item的结构定义,数据验证。
在存储方式上,同时支持表数据和树形的存储。
使用Item方式来存储Template (先有的鸡还是先有的蛋?)
Template支持继承,多重继承,继承树,子Template的属性总是会覆盖父Template的属性,当同级Template出现同名属性但是其它属性不同时,系统报错。
当Item的某个属性没有赋值时,系统可以获得Template定义的缺省值。
3. 数据表的设计
a) Item表
ItemID GUID
itemName 字符串
ParentID GUID
LastUpdate 最后更新时间
b) Field表
ItemID GUID
FieldID GUID
FieldName 字符串
FieldType 字符串
LastUpdate 最后更新时间
Version 整数 (未实现)
Language 字符串 (未实现)
解释:系统的Item都具有一个唯一编号GUID和名称。
4. 系统设计
a) 实体定义
i. XID
ii. Item
iii. Template
b) 数据层
数据层的作用是有效的封装底层对不同数据库的接口和各种数据库对象。在各种不同数据库上实现一个统一的数据接口。目前系统采用的数据访问层来源于开源项目.
c) Provider
Provider实现大部分的数据的CRUD操作.
d) 服务层
服务层按照发布的接口实现服务的各种功能。
e) 其它辅助部分
i. 存储管理器
通过读取系统数据的信息了解所有的存储的连接信息。并且把信息保留在本地cache中。
ii. 配置管理器
为其它模块提供对应的配置信息。
iii. 基本类型表
系统内部管理着一个基本类型表,包含所有的内部数据类型和数据库类型的映射关系。(目前系统没有实现自己的基本数据类型)
5. 关键问题讨论
浙公网安备 33010602011771号