此为原创,如需转载请注明出处。仅供广大开发者学习之用,不可用于商业。谢谢合作
最近一直在做SOLARIS下的C+SYMFOWARE开发,那数据库在网上的资料可是匮乏的惊人,现在小写一点,丰富一下资源。关于理论方面,因为没有耐心去看鬼子的MANUAL,所以有些东西也是按我自己的理解去写的,仅供大家参考。
整个数据库系统的结构
最顶层:RDBSYSTEM直译大概关系数据库系统
在RDBSYSTEM下就是DB(数据库)啦。一个RDBSYSTEM下可以有多个DB。
DB下面就有很多东西了,一个一个来说。
1、SCHEMA
这东西一开始我弄不太明白是什么东西,按照现在的理解,就是一种逻辑结构,在SCHEMA下面是表、视图等东西。SCHEMA可以同时建立多个,各个SCHEMA中的表也可以重复。
2、DSO
每个表都有自己的DSO,在建立DSO的时候可以设定对DSI的划分方式,页容量等东西。就现在开发用到的来看,INDEX也有DSO。
3、DSI
这个东西跟DSO差不多,也是每个表都有自己的DSI,INDEX同样也是。DSI可以根据建立DSO时设定的划分方式去建立,比如建立DSO时的划分条件是 WHERE (XXXXX) BETWEEN (?) AND (?)。那么建立DSI的时候就可以用USING(AAAAA,BBBBB)来建立针对不同范围数据的DSI。这样在进行数据插入的时候,就会存储到相应的DSI中。USING后面的东西在SYMFOWARE中叫做分割值。分割值是可以用ALTER DSI XXXX ALTER USING修改的,但修改时如果里面有数据,而改后的分割值不包括这部分数据的话,数据库系统会报异常。如果需要在多个SCHEMA中建立一样的表,需要注意DSO和DSI的名字不要一样。
4、DBSPACE
这是数据库中数据的最终存储位置。建立DSI时需要给它划分空间,划分的空间就是在DBSPACE中。DBSPACE可以是RAWDRIVER也可以是磁盘上的文件。如果是要用文件存储的话,建立DBSPACE时应该注意,对于文件所在的路径,数据库用户必须有读写的权限。默认的数据库用户是symadm。
建简单表的基本步骤
由于开发测试都是远程连接鬼子那边进行,所以RDBSYSTEM和DB都是鬼子给建好了,没有他们的允许,我们不方便去自己建立。所以这两个具体怎么建立就不太清楚。
因为测试时是多人同时测试,为了避免大家测试的时候表中数据的冲突,所以是每人都分配一个SCHEMA,自己到里面去建立自己需要的表。
建表的简单DDL文如下
--建立DBSPACE,位置在/export/home/symadm/DATABASE/,大小是3兆
CREATE DBSPACE DBSPACE1
ALLOCATE FILE /export/home/symadm/DATABASE/DB_SP1
ATTRIBUTE SPACE(3M);
--建立SCHEMA01
CREATE SCHEMA SCHEMA01;
--建立TABLE01,有三个字段,分别是整型,字符,各国语言字符
CREATE TABLE TABLE01 (
COLUMN01 INTEGER NOT NULL,
COLUMN02 CHARACTER(3) NOT NULL,
COLUMN03 NATIONAL CHARACTER(16) NOT NULL
);
--建立DSO01,基于表SCHEMA01.TABLE01,连续存储,
CREATE DSO DSO01
FROM SCHEMA01.TABLE01
TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));
--建立DSI,为数据在DBSPACE1上分配空间280K
CREATE DSI DSI01
DSO DSO01
ALLOCATE DATA ON DBSPACE1 SIZE 280K;
写好DDL文以后,就可以用Symfoware中的数据库定义命令建立这一套东西了。
这样建立起来的数据库是不能使用的,使用前需要做的重要的一步是DSI的初期化。而DSI的初期化也是有顺序的,首先要对DATA的DSI,再然后才是INDEX的。如果反过来的话,暂时我们的解决办法就是重新做整个SCHEMA。
此为原创,如需转载请注明出处。仅供广大开发者学习之用,不可用于商业。谢谢合作