复合存储引擎的设计和实现(包含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. 关键问题讨论
转载于:https://www.cnblogs.com/xProject/archive/2009/09/08/1562779.html
复合存储引擎的设计和实现(包含ORM和内容存储)相关推荐
- 思考:固态硬盘的普及,是否影响到了存储引擎的设计?
思考 1:固态硬盘的普及,是否影响到了存储引擎的设计? Reference: Let's Talk About Storage & Recovery Methods for Non-Volat ...
- 存储引擎——概述|| 各种存储引擎的特性(InnoDB||MyISAM||MEMORY||MERGE) ||存储引擎的选择
存储引擎概述 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式. 存储引擎是基于表 ...
- mysql技术innodb存储引擎读后感_《MySQL技术内幕:InnoDB存储引擎》读书笔记.
一.MySQL 体系架构和存储引擎 1.MySQL 被设计成一个单进程多线程架构的数据库,MySQL 数据库实例在系统上的表现就是一个进程. 2.MySQL 的体系架构,需要特别注意的是,存储引擎是基 ...
- mysql内置多个数据存储引擎_一个mysql数据库,既有myisam存储引擎,又有innodb存储引擎,参数如...
key_buffer_size - 这对MyISAM表往说十分紧张.假设只是利用MyISAM表,可以把它设置为可用内存的 30-40%.合理的值取决于索引大年夜小.数据量和背载 -- 记住,MyISA ...
- 基于LSM-Tree的键值存储引擎的设计与实现
资源下载地址:https://download.csdn.net/download/sheziqiong/85709667 资源下载地址:https://download.csdn.net/downl ...
- mysql技术内幕 innodb存储引擎 第2版_MySQL技术内幕:InnoDB存储引擎(第2版)
领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...
- mysql无法存储微表情、微信昵称包含微表情无法存储数据库
网上搜到了很多关于这个问题的解决办法,但是都没解决我的问题.我的mysql用的是windows版mysql-server 5.7 首先我按照基本方法,修改my.inf配置文件,添加下面配置: [mys ...
- [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式
[数据库03]-约束(唯一性-主键-外键)/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式 一.约束 1.1 唯一性约束(unique) 1.2 主键约束 1.3 外键约束 二.存储引擎 2 ...
- 分布式数据库设计——存储引擎原理
摘要 数据库的一个首要目标是可靠并高效地管理数据,以供人们使用.进而不同的应用可以使用相同的数据库来共享它们的数据.数据库的出现使人们放弃了为每个独立的应用开发数据存储的想法,同时,随着数据库广泛的使 ...
- MySQL性能调优与架构设计——第11章 常用存储引擎优化
第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...
最新文章
- 图解5G NR帧结构
- 阿里云:国际化是云计算技术能力的照妖镜
- mysql innodb文件_MySQL文件和Innodb引擎文件
- json_encode 中文乱码
- 敏捷结果: 学习笔记
- 介绍一个使用 cl_abap_corresponding 进行两个内表不同名称字段赋值的快捷方法
- linux ssh非交互脚本,sshpass实现shell脚本非交互密码验证
- The Clean Architecture--一篇很不错的关于架构的文章
- Codeforces 509C Sums of Digits
- 进程间通信系列 之 信号实例
- 剪映怎么导入mkv_mkv用什么播放器打开_什么播放器可以打开mkv格式-系统城
- php 固定表头,PHPExcel如何冻结(锁定)表头
- css 绘制心形图案
- ATUO CAD 如何延伸线段?
- BZOJ 3270: 博物馆 1778: 驱逐猪猡 【概率DP+高斯消元】
- H264视频高压心得——兼容华为U8800+(硬解720P)
- vuex两个问题:vuex__WEBPACK_IMPORTED_MODULE_1__.default.store is not a constructor,“$store“ is not defin
- 一个产品经理的自述:我在腾讯工作的这一年
- NAND FLASH的读写操作(硬件原理图分析)
- 17种外链方法助你做好外链