当我们安装完dm数据库后,进入管理端将看到如下信息:
整个体系来看,与我们常用的数据库类似。上周使用sqlserver的数据库脚本进行小改后能完成std_upp的构建,从这个角度来说,dm与sqlserver的语法基本是兼容的。
sqlserver采用了数据库名称作为分区隔离,dm数据库直接采用了表空间进行分区隔离。
当我们想进行模型分析时,在system表空间中发现了数据库自我描述信息。
基于这个模型分析,dm与sqlserver更为接近,我们在upp项目中,采用了数据库模型对象来检测表与列是否存在,使得我们必须在dm中找到类似的模型提供数据源。根据system模型,我们大体分析出了相应的对象。
整个体系以Sysobjects对象为主对象管理,区分了相应的对象类型:
select distinct type$ From sysobjects
根据进一步分析,我们本次构建的对象将基于SCHOBJ与TABOBJ进行展开。
TABOBJ核心信息管理着约束与索引。
select distinct subtype$ From sysobjects where type$='TABOBJ';
SCHOB管理的主要是表/视图等对象:
select distinct subtype$ From sysobjects where type$='SCHOBJ';
基于以上分析,dm的系统模型管理对象与sqlserver确实非常类似,所以可以参照sqlserver的版本进行兼容构建。存在细节内容再进行特性定制。
我们在产品中对数据类型的使用保持着谨慎的态度,为支持多数据库尽可能使用通用的数据类型,但时间对象是较为突出的对象,必须简化处理,下面将提供通用的日期对象:
select curdate()
select curtime()
select getdate;
select sysdate
select ADD_DAYS( getdate(), 1)
select ADD_MONTHS( getdate(), 1)
select ADD_WEEKS( getdate(), 1);
从对系统时间的提取来看,确实兼容了sqlserver、oracle、mysql的写法.............