SYMFOWARE的一些应用心得(1)

此为原创,如需转载请注明出处。仅供广大开发者学习之用,不可用于商业。谢谢合作

 

最近一直在做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。


此为原创,如需转载请注明出处。仅供广大开发者学习之用,不可用于商业。谢谢合作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值