admin 管理员组

文章数量: 1086019


2023年12月22日发(作者:orchid)

KingbaseES与Oracle的对比

北京人大金仓信息技术股份有限公司

2009年8月

第1页/共20页

目录

1

2

概述.................................................................................................................................................. 4

系统的运行环境 .............................................................................................................................. 4

2.1

2.2

3

KingbaseES的系统运行环境 ................................................................................................. 4

与Oracle的比较 ..................................................................................................................... 4

数据库对象 ...................................................................................................................................... 4

3.1

3.2

3.3

3.4

3.5

3.6

表空间 ..................................................................................................................................... 4

表 ............................................................................................................................................. 5

索引 ......................................................................................................................................... 5

视图 ......................................................................................................................................... 5

Sequence(序列号发生器) .................................................................................................. 5

函数和存储过程 ..................................................................................................................... 6

字符串函数 ..................................................................................................................... 6

类型转换函数 ................................................................................................................. 6

获得系统信息函数 ......................................................................................................... 7

3.6.1

3.6.2

3.6.3

3.7

3.8

4

触发器 ..................................................................................................................................... 7

KingbaseES不支持的数据库对象 ......................................................................................... 8

8

4.1

4.2

4.3

4.4

数据类型 ................................................................................................................................. 8

SQL语法 ................................................................................................................................. 9

PL/SQL .................................................................................................................................... 9

数据库编程接口和对开发工具的支持 ................................................................................ 10

4.4.1

ODBC ................................................................................................................................ 10

4.4.2

OLE DB ............................................................................................................................. 11

4.4.3

JDBC ................................................................................................................................. 11

4.4.4

.NET Data Provider ........................................................................................................... 11

5

数据库系统管理 ............................................................................................................................ 12

5.1

数据库的存储结构 ............................................................................................................... 12

与Oracle数据库的存储结构的区别 ........................................................................... 12

5.1.1

KingbaseES数据库的存储结构 ....................................................................................... 12

5.1.2

5.2

数据库的进程结构 ............................................................................................................... 13

与Oracle数据库的进程结构的区别 ........................................................................... 14

5.2.1

KingbaseES的进程结构 .................................................................................................. 13

5.2.2

5.3

5.4

5.5

数据库的内存管理 ............................................................................................................... 14

数据库的并发控制和事务处理 ............................................................................................ 14

数据库的备份和恢复 ........................................................................................................... 15

KingbaseES的数据库备份和恢复 .............................................................................. 15

与Oracle数据库备份和恢复的区别 ......................................................................... 15

5.5.1

5.5.2

5.6

5.7

数据库的性能监控 ............................................................................................................... 15

数据库的安全性 ................................................................................................................... 16

第2页/共20页

5.7.1

5.7.2

5.7.3

5.7.4

5.8

6

身份识别和认证 ........................................................................................................... 16

基于角色的权限管理和访问控制 ............................................................................... 16

审计 ............................................................................................................................... 17

数据库加密 ................................................................................................................... 17

数据库的高可用性 ............................................................................................................... 18

数据库管理工具 ............................................................................................................................ 18

6.1

6.2

6.3

6.4

6.5

6.6

KingbaseES企业管理器 ....................................................................................................... 18

KingbaseES查询分析器 ....................................................................................................... 18

KingbaseES数据迁移工具 ................................................................................................... 19

KingbaseES逻辑备份还原工具 ........................................................................................... 19

KingbaseES 物理备份恢复工具 .......................................................................................... 19

KingbaseES控制管理器 ....................................................................................................... 20

第3页/共20页

1 概述

KingbaseES是一个大型通用跨平台的多用户数据库管理系统,可以安装和运行于Windows、Linux、Unix等多种操作系统平台下。

本文档从系统的运行环境、数据库应用开发、数据库系统管理和数据库管理工具等几个方面比较了KingbaseES和Oracle的不同之处。

本文档依据于KingbaseES V6.1和Oracle 做相关比较。

2 系统的运行环境

2.1 KingbaseES的系统运行环境

硬件环境

CPU: x86或兼容机型,PowerPC,UltraSparc等;

内存:256MB以上,建议512MB以上;

硬盘:硬盘的大小与所需要存储的数据量有关。Linux上建议采用ext3文件系统,Windows上使用NTFS文件系统。

软件环境

KingbaseES服务器可以安装在Microsoft Windows 2000/XP/2003,红旗/中标/Red Hat/Turbo Linux,麒麟Kylin,IBM AIX,Sun Solaris操作系统下。在安装KingbaseES 之前,需要配置好相应系统平台的系统参数。

2.2 与Oracle的比较

Oracle支持更多的操作系统平台。KingbaseES目前虽然只提供上述操作系统平台的版本,但KingbaseES中与平台相关的代码是独立出来的,因此很容易扩展到对其他操作系统平台的支持。

3 数据库对象

3.1 表空间

KingbaseES表空间的定义和使用与Oracle基本相同。

第4页/共20页

3.2 表

KingbaseES可以创建常规表和临时表,并在表上支持完整性约束:

(1) 实体完整性(主码)

(2) 参照完整性(外码)

(3) 用户自定义的完整性(NOT NULL,UNIQUE,CHECK,DEFAULT)。

KingbaseES支持对表的水平分片(Partition),定义和使用与Oracle基本相同。

Oracle支持,但是KingbaseES目前不支持的表的特征有:

(1) 不能指定表的物理存储特征,这与KingbaseES的物理存储结构(在后面章节中会介绍)相关。

(2) 不支持对表的并行操作(Parallel)

(3) 不支持索引组织表(Index-Organized Table)

(4) 不支持Cluster存储的表

3.3 索引

KingbaseES和Oracle都支持以下的索引类型:

(1) B树索引

a) Unique和Non-unique索引

b) 复合索引(Composite index)

(2) 函数索引

KingbaseES支持但是Oracle不支持的索引类型:Hash索引

KingbaseES不支持但是Oracle支持的索引类型:

(1) Bitmap索引

(2) Domain 索引

Oracle支持,但是KingbaseES目前不支持的索引的特征有:

(1) 不能指定索引的物理存储特征

(2) 不支持索引的分区(Partition ,与不支持表的分区相对应)

(3) 不支持索引key的压缩。

(4) 不支持reverse Key索引。

3.4 视图

与Oracle相同,KingbaseES视图的实现基本遵循SQL标准。目前KingbaseES不支持实体化视图(Materialized View)。

3.5 Sequence(序列号发生器)

序列号发生器的定义和使用与Oracle基本相同。

第5页/共20页

3.6 函数和存储过程

KingbaseES和Oracle都提供了多种类型的内置系统函数。具体函数的使用可以参看手册。

3.6.1 字符串函数

功能说明

对NULL值的处理

Oracle

语法

实例

NVL(STRING,STRING)

KingbaseES

语法

NVL(STRING,STRING)或

ISNULL(STRING,STRING)

SELECT NVL(NULL,’THIS IS

实例

NULL’) FROM DUAL;

INSTR(STRMAIN,STRSUB)

SELECT NVL(NULL,’THIS IS

NULL’) FROM DUAL;

某字符串在另一个字符串中的位置

语法 语法

INSTR(STRMAIN,STRSUB)或

POSITION(STRSUB

STRMAIN)

IN

JING’,

实例

取得字符串的长度

SELECT INSTR(‘BEI JING’,

实例

‘JING’) FROM DUAL;

LENGTH()

SELECT INSTR(‘BEI

‘JING’) FROM DUAL;

语法

实例

语法

LENGTH()或CHAR_LENGTH()或CHARACTER_LENGTH()

SELECT LENGTH(‘BEIJING’)

实例

FROM DUAL

SUBSTR(S,FROM,TO)

SELECT LENGTH(‘BEIJING’)

FROM DUAL

取得字符串的一部分

语法

实例

语法

实例

SUBSTRING(S,FROM,TO)或

SUBSTR(S,FROM,TO)

SELECT

SUBSTR('KINGBASEES',5,4)

FROM DUAL;

SELECT

SUBSTRING('KINGBASEES',5,4)

FROM DUAL;

匹配字符转换

语法

实例

TRANSLATE

SELECT

TRANSLATE('12345',

'AX') FROM DUAL;

'14',

语法

实例

TRANSLATE

SELECT TRANSLATE('12345',

'14', 'AX') FROM DUAL;

3.6.2 类型转换函数

功能说明

将日期转换为字符串

将数值转换为字符串

Oracle

语法

TO_CHAR(日期,格式)

实例

SELECT

TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;

KingbaseES

语法

TO_CHAR(日期,格式)

实例

SELECT

TO_CHAR(NOW(),'YYYY-MM-DD')FROM DUAL;

语法

TO_CHAR(VALUE)或

TO_CHAR(VALUE, FORMAT)

语法

TO_CHAR(VALUE)

实例

SELECT TO_CHAR(12345)

实例

SELECT TO_CHAR(12345) FROM

第6页/共20页

FROM DUAL; DUAL;

将字符串转换为数字

将字符串转换为日期

将字符串转换为时间

语法

TO_NUMBER(VALUE)

实例

SELECT

TO_NUMBER('12345') FROM

DUAL

语法

TO_NUMBER(VALUE)

实例

SELECT

FROM DUAL

TO_NUMBER('12345')

语法 TO_DATE(TEXT,TEXT)

实例 SELECT

TO_DATE('20080808','YYYYDDMM')FROM DUAL;

语法 TO_TIMESTAMP(TEXT,TEXT)

语法 TO_DATE(TEXT,TEXT)

实例 SELECT

TO_DATE('20080808','YYYYDDMM')FROM DUAL;

语法 TO_TIMESTAMP(TEXT,TEXT)

SELECT

TO_TIMESTAMP('2006-12-13

23:54:32', 'YYYY-MM-DD

HH24:MI:SS')FROM DUAL;

实例 SELECT 实例

TO_TIMESTAMP('2006-12-13

23:54:32', 'YYYY-MM-DD

HH24:MI:SS')FROM DUAL;

3.6.3 获得系统信息函数

功能说明

取系统当前日期

Oracle

语法

SYSDATE

KingbaseES

语法

SYSDATE

或CURRENT_DATE()

实例

SELECT SYSDATE FROM

实例

SELECT SYSDATE FROM DUAL;

DUAL;

取系统当前时间

语法

SYSDATE

或CURRENT_TIMESTAMP

语法

CURRENT_TIMESTAMP()

或NOW()

实例

SELECT

CURRENT_TIMESTAMP

FROM DUAL;

实例

SELECT CURRENT_TIMESTAMP

FROM DUAL;

取当前的语法

USER

访问用户

实例

SELECT USER FROM DUAL;

语法

USER

或CURRENT_USER

实例

SELECT USER FROM DUAL;

另外,KingbaseES和Oracle都可以自定义函数和存储过程来扩充系统的功能。

自定义的函数和存储过程通常使用PL/SQL编写。有关PL/SQL差异在后面的章节中介绍。

3.7 触发器

KingbaseES和Oracle都支持在触发事件前后的语句级和行级的触发器。

Oracle支持但是KingbaseES不支持的触发器特征如下:

(1) 触发事件:

KingbaseES支持的事件是对表的增、删、改操作。

Oracle除此之外还支持修改某个列、DDL事件和DATABASE事件。

(2) 触发事件前后触发器,Oracle还支持在视图上的INSTAEDOF触发器

第7页/共20页

(3) 在触发器动作的定义中,Oracle允许使用在触发器定义中给old 和new定义别名。

触发器的动作通常使用PL/SQL编写。有关PL/SQL差异在后面的章节中介绍。

3.8 KingbaseES不支持的数据库对象

Oracle支持而KingbaseES目前的版本没有的数据库对象包括:

(1) 同义词(synonyms)

(2) package

(3) Materialized views

(4) Index-organized Table

(5) Cluster

(6) Dimensions

(7) Contexts

(8) Directories

(9) Profiles

(10) Rollback segment

4 SQL

4.1 数据类型

KingbaseES支持多种内置的数据类型,其数据类型的实现基本上遵循SQL标准中的定义, 下图为与Oracle的数据类型对照表。

说明

字符串类型

VARCHAR2

LONG

CLOB

Oracle

TEXT

CLOB

NUMERIC

TIMESTAMP

BLOB

BYTEA

BLOB

KingbaseES

VARCHAR或VARCHAR2

数值数据类型

NUMBER

日期时间型

DATE或TIMESTAMP

二进制串类型

BFILE

RAW或LONG RAW

BLOB

目前Oracle支持,但是KingbaseES目前不支持的数据类型有:

(1) BFILE

(2) "Any" Types

(3) XML Types

(4) Spatial Type

(5) Media Types

与Oracle一样,KingbaseES用户可以创建新的数据类型。

第8页/共20页

4.2 SQL语法

功能说明

查询分支处理

Oracle

语法

DECODE(字段名称或常量WHEN 条件 THEN 结果

WHEN 条件 THEN 结果 …

ELSE 结果)

KingbaseES

语法

DECODE(字段名称或常量WHEN 条件 THEN 结果 WHEN 条件 THEN

结果 … ELSE 结果)

或:CASE WHEN 条件 THEN 结果

WHEN 条件 THEN 结果 … ELSE

结果

实例

SELECT DECODE(字段名称或常量WHEN 条件 THEN 结果

WHEN 条件 THEN 结果 …

ELSE 结果) FROM…

字符串的连接

实例

SELECT DECODE(字段名称或常量WHEN 条件 THEN 结果 WHEN 条件 THEN 结果 … ELSE 结果)

FROM…

语法

操作操作符为 ||

DUAL;

语法

操作操作符为 ||

实例

SELECT 'AAA'||'BBB' FROM

实例

SELECT 'AAA'||'BBB' FROM DUAL;

语法

LEFT OUTER JOIN或RIGHT

语法

LEFT OUTER JOIN或RIGHT

OUTER JOIN或BOTH OUTER

JOIN 或 左、右+

OUTER JOIN或左、右+

左、右连接的用法

实例

左连接:SELECT A.* FROM

实例

左连接:SELECT A.* FROM TBA

TBA A ,TBB B WHERE

(+)=;

右连接:SELECT A.* FROM

TBA A ,TBB B WHERE

=(+);

A ,TBB B WHERE (+)=;

右连接:SELECT A.* FROM TBA

A ,TBB B WHERE =(+);

取得序列的值

语法

SEQUENCE_L

实例

SELECT

SEQUENCE_L

FROM DUAL

语法

NEXTVAL(SEQUENCE_NAME)

实例

SELECT

NEXTVAL('SEQUENCE_NAME')

FROM DUAL

取得表的一定范围的记录

语法

ROWNUM ><= X

实例

SELECT * FROM

语法

ROWNUM ><= X

或LIMIT X,OFFSET Y

TEST

实例

SELECT * FROM TEST WHERE

ROWNUM

ROWNUM>90

<=100 AND WHERE ROWNUM <=100 AND

ROWNUM>90

4.3 PL/SQL

用户自定义的函数、存储过程、触发器通常使用PL/SQL编写。KingbaseES和Oracle的PL/SQL大部分功能相同,可能有些语法细节上不同。例如:

(1) 声明变量

(2) 支持控制结构

(3) 支持游标

第9页/共20页

(4) 支持错误处理

Oracle支持,但KingbaseES不支持的功能包括:

(1) KingbaseES不支持自治事务

(2) KingbaseES不支持事务控制语句

(3) KingbaseES对动态SQL的支持不如Oracle

详见下表所示:

Oracle

支持事务控制语句

支持使用%ROWTYPE定义变量类型

支持使用%TYPE定义变量类型

支持使用%RECORD定义变量类型

在变量定义之前不需要DECLARE关键字

可以将CURSOR声明到程序中的任意位置

KingbaseES

不支持事务控制语句

支持使用%ROWTYPE定义变量类型

支持使用%TYPE定义变量类型

支持使用%RECORD定义变量类型

在变量定义之前需要DECLARE关键字

只能在DECLARE 中声明CURSOR,然后在下面的程序中引用。

在参数定义之后支持IS或者AS关键字

函数返回值关键字为RETURN

提供DBMS_OUTPUT等工具包

在参数定义之后只支持AS关键字

函数返回值关键字为RETURNS

不提供工具包

4.4 数据库编程接口和对开发工具的支持

KingbaseES支持标准的数据库编程接口:

(1) ODBC 遵循ODBC 3.0标准

(2) JDBC遵循JDBC 3.0标准

(3) OLEDB遵循OLEDB 2.7标准

(4) .NET Data Provider遵循 2.0

(5) KingbaseES支持OCI接口

KingbaseES也有自己内部的数据库编程接口,但通常是内部使用(例如编写数据库客户端工具)。

与Oracle的内部接口OCI部分兼容。

虽然KingbaseES的JDBC遵循JDBC3.0标准,但Oracle的JDBC进行了扩展,以支持Oracle特有的数据库对象。

凡是支持标准数据库编程接口的开发工具都可以开发KingbaseES上的数据库应用,例如Delphi, Power Builder, VB, …..。不支持Oracle专有的Develop 2000和Design 2000等。

4.4.1 ODBC

参数:

DRIVER={KingbaseES 6 ODBC driver};

DATABASE=DatabaseName

第10页/共20页

SERVER=host;

PORT=PortNumber;

UID=UserName;

PWD=Password;

示例:

ConnectionString =

“DRIVER={KingbaseES 6 ODBC driver};

DATABASE=TEST;SERVER=127.0.0.1;PORT=54321;UID=SYSTEM;PWD=MANAGER;”

4.4.2 OLE DB

参数:

Provider=KDBOLE6;

User ID=userName;

Location=Host;

Password=Password;

Initial Catalog=DBName;

示例:

connectionString =

“Provider=KDBOLE6;

Password=MANAGER;UserID=SYSTEM;Initial Catalog=TEST;Location=127.0.0.1;”

4.4.3 JDBC

说明

JDBC--声明连接

基本Connection con;

使用

--加载驱动程序

--连接串

String url =

"jdbc:oracle:thin:@

192.168.0.1:1521:databasename";

--获得连接

Oracle

--声明连接

Connection con;

--加载驱动程序

--连接串

String url =

"jdbc:kingbase://

KingbaseES

e("Driver "); e("");

192.168.0.1:54321/databasename";

--获得连接

con= nection(url,user,pwd);

con= nection(url,user,pwd);

4.4.4 .NET Data Provider

参数:

Server=host

User ID=userName;

Password=Password;

Database=DBName;

第11页/共20页

示例:

string connString = "Server=127.0.0.1;User

Id=SYSTEM;Password=MANAGER;Database=SAMPLES;";

KingbaseESConnection conn = new KingbaseESConnection(connString);

();

();

5 数据库系统管理

5.1 数据库的存储结构

5.1.1 KingbaseES数据库的存储结构

KingbaseES数据库系统在逻辑上由多个数据库组成,每个数据库中可以包含多个数据对象:表、索引、视图、存储过程、触发器、序列等,它们可以放在不同的模式(Schema)中。每个数据库连接(Connection)连接到一个指定的数据库上,可以操纵该数据库中的数据。在物理上,数据库中的数据都是以操作系统文件的方式存放在磁盘上。 。

在进行系统初始化的时候,可以指定“数据目录”。 例如可以指定数据目录为“C:Program

FilesBasesoftKingbaseES6.1data”。数据目录中存放系统数据和用户数据,包括数据文件、控制文件和日志文件。

系统初始化完成后,系统中会存在四个数据库:TEMPLATE0、TEMPLATE1、TEMPLATE2、SAMPLES和一个用户在初始化时指定的数据库。其中前三个是模板数据库,TEMPLATE0用户不能修改,TEMPLATE1是用户创建数据库时使用的模板数据库,对其的任何修改都体现在以后创建的数据库中,TEMPLATE2供系统内部使用。

KingbaseES数据库系统的物理数据文件读写单位是数据块,每个数据块的大小缺省是8K,在初始化数据库时可以指定成16K或者32K。

5.1.2 与Oracle数据库的存储结构的区别

在逻辑存储结构上,KingbaseES与Oracle数据库的主要区别是:

(1) KingbaseES的数据库系统可以由多个数据库组成,KingbaseES启动后,每个数据库连接只能使用一个数据库,但是不同的用户可以建立不同的连接。Oracle数据库系统也可以由多个数据库组成,但是一个Oracle Instance只能操纵一个数据库。

(2) KingbaseES中有“模式”的概念,数据库对象可以放在不同的模式中,在创建数据库对象时指定。与Oracle不同的是,Oracle每个用户都默认有自己同名的模式,每个用户的数据库对象都放在自己的模式中。KingbaseES提供了兼容Oracle用户模式的方案,在创建用户时自动创建同名的模式。

在物理存储结构上,KingbaseES与Oracle数据库一样,都是自己管理数据的物理存储。

第12页/共20页

KingbaseES数据库初始化过程会创建一个数据库集群。数据库集群是一个KingbaseES数据库实例所能管理的数据集合,由多个数据库组成。

KingbaseES数据库集群管理的所有数据在物理上都以操作系统文件的方式存放在磁盘上。这些文件按照作用的不同可以分为四类:数据文件、控制文件、日志文件和临时文件。其中数据文件隶属于数据库,而控制文件、日志文件和临时文件都隶属于数据库集群。

为方便用户的管理,KingbaseES又将数据库中的数据文件从逻辑上划分成若干个表空间。表空间是一个或多个数据文件的集合,每个数据文件只能隶属于一个表空间。

每个数据库中可以包含多个数据库对象,如表、索引、序列等。KingbaseES数据库中,每个表、索引、序列对象都隶属于一个表空间,其数据逻辑上存储在该表空间中,物理上存储在该表空间对应的物理文件中。

5.2 数据库的进程结构

5.2.1 KingbaseES的进程结构

KingbaseES采用的是客户端/服务器的计算模式,客户端和服务器可以运行在不同的主机上,它们之间通过TCP/IP协议进行通讯。

KingbaseES目前的版本采用多线程的体系结构。KingbaseES数据库服务器启动后,系统中会存在下面的进程:

(1)KingbaseES Listener Service进程:KingbaseES监听服务

(2)KingbaseES数据库服务进程:我们称该进程为一个“KingbaseES数据库实例”。该服务采用多线程架构,因此该进程中会包含多个线程。这些线程按照功能的不同可以分为后台线程和服务线程两类:

 后台线程:为提高性能和方便用户使用,KingbaseES数据库服务会在启动时或运行过程中自动启动一些线程,我们称之为后台线程。KingbaseES中的后台线程包括:

 系统写线程:负责将数据库缓冲区中被修改过的页面(脏页)写出到数据文件中。该线程随数据库服务一起启动,并且在数据库服务的运行过程中一直存在。

 数据库统计线程:负责收集、统计数据库中各种操作(元组、页面等)的信息。用户可以通过修改stats_start_collector系统参数来设置是否启动该线程。如果设置为启动,则该线程随数据库服务一起启动,并且在数据库服务的运行过程中一直存在。用户还可以设置stats_block_level和stats_row_level统计线程具体统计哪些信息。

 空间清理线程:负责检查、清理系统运行过程产生的垃圾空间。用户可以通过修改autovacuum系统参数来设置是否启动该线程。如果设置为启动,则该线程会定时启动进行必要的空间清理,并在清理完成后退出。

 归档线程:负责将日志文件归档到指定的位置。用户可以通过修改archive_command系统参数来设置是否启动该线程。如果设置为启动,则该线程随数据库服务一起启动,并且在数据库服务的运行过程中一直存在。

 输出信息写线程:负责将数据库服务中的LOG及错误信息输出到指定的文件中。用户可以通过修改redirect_stderr和log_destination系统参数来设置是否启动该线程,以及将信息输出到哪里。如果设置为启动,则该线程随数据库服务一起启动,并且在数据库服务的运行过程中一直存在。注:Windows平台下为第13页/共20页

两个输出写线程。

 以及两个系统内部线程:这两个线程总是随数据库服务一起启动。

 服务线程:KingbaseES是一个多用户的数据库管理系统,它可以处理来自客户端的多个用户的并发请求。KingbaseES用服务线程来处理连接到数据库服务的客户端请求。对于每个客户端的连接,KingbaseES会为其创建一个新的服务线程。

5.2.2 与Oracle数据库的进程结构的区别

从数据库的体系结构上,KingbaseES只支持一用户一线程的多线程体系结构,而Oracle支持两种服务器体系结构:

(1) 专用服务器(Dedicated server architecture),与KingbaseES相同

(2) 共享服务器(Shared server architecture)

Oracle具有更多的后台进程,例如:DBWR,LGWR,SMON,CKPT,SMON,PMON。KingbaseES以后的版本中会增加后台进程,例如DBWR等???。

5.3 数据库的内存管理

与Oracle的内存结构相同,KingbaseES数据库系统的内存结构主要有两部分组成:系统全局区(SGA)和每个数据库进程所占用的私有存储空间。数据库服务进程共享SGA中的数据。

KingbaseES的SGA中主要包括以下内容:

(1) 数据缓冲区

(2) 日志缓冲区

(3) 保存其它控制信息的结构(门闩、锁表等)

其中数据缓冲区和日志缓冲区的大小可以在配置文件中指定。

与Oracle内存结构的主要区别如下:

(1) Oracle的SGA的大小可以动态调整,而KingbaseES必须重新启动才能调整数据缓冲区的大小

(2) KingbaseES数据缓冲区的缓存块大小固定是8K,而Oracle可以支持不同大小的数据缓存块。

(3) Oracle数据库缓存可以配置成几个独立的缓存池:KEEP,DEFAULT,RECYCLE。KingbaseES目前的版本不支持,以后的版本会支持。

(4) Oracle可以缓存已经解析并执行过的SQL程序, KingbaseES目前的版本不支持,以后的版本会支持。

(5) Oracle支持大型池,用于需要大量的缓存的操作(例如,执行具有大量排序操作的SQL语句),KingbaseES目前的版本不支持。

(6) KingbaseES的新版本会实现SQL的执行计划和结果集的缓存。

5.4 数据库的并发控制和事务处理

在数据库的并发控制和事务处理方面与Oracle的相同点如下:

(1) Oracle 与KingbaseES都采用多版本的并发控制(MVCC)与封锁处理相结合的并发控制策略,实现了数据库操作的读写不冲突,写操作也只在行级冲突。

第14页/共20页

(2) 支持事务的ACID特性

(3) 支持SQL标准中的READ COMMITTED和SERIALIZABLE事务隔离级别

(4) 数据库对象的封锁由DBMS自动完成,同时提供显式的封锁语句(不提倡使用)

(5) 自动进行死锁检测和处理

在数据库的并发控制和事务处理方面与Oracle的不同点则是:Oracle的多版本并发控制是通过回滚段(UNDO表空间)来实现,因此Oracle需要DBA进行烦琐的回滚段(UNDO表空间)管理,而KingbaseES中数据的多个版本是保存在数据库中,因此对于更新操作频繁的应用,数据库中会保存很多无用的元组,需要对数据库整理,回收空间。

5.5 数据库的备份和恢复

KingbaseES和Oracle都提供了数据库的备份和恢复措施来规避由各种故障带来的数据丢失。

5.5.1 KingbaseES的数据库备份和恢复

KingbaseES逻辑备份和还原工具,可以备份整个数据库、备份单个表、备份多个表、以及备份指定模式并进行恢复。

KingbaseES物理备份和恢复工具提供了全系统的联机、脱机备份恢复功能。它支持数据文件与控制文件分别进行物理备份、恢复的方式,目前只提供了完全备份方式。

KingbaseES利用日志系统和数据库备份来应对各种故障所带来的数据损失:

(1) 事务故障 系统自动进行事务回滚

(2) 系统故障 系统在重新启动时,利用日志,系统自动把数据恢复到故障发生的时间点

(3) 介质故障 首先利用数据库备份把数据库数据恢复到备份的时间点,然后利用归档和在线日志把数据恢复到最近的时间点。

5.5.2 与Oracle数据库备份和恢复的区别

KingbaseES与Oracle数据库备份和恢复的区别如下:

(1) Oracle支持数据库的不完全恢复(应用部分归档和在线日志,恢复到某个过去的时间点),KingbaseES在新版本中即将提供。

(2) Oracle的备份恢复工具RMAN功能强大,例如,用户可以自动进行物理备份,用户还可以进行块级别的介质恢复等。

5.6 数据库的性能监控

KingbaseES现有的系统监控信息主要分为以下几类:

(1) 系统当前运行状态

系统的当前状态信息主要反映系统当前的运行状况,例如系统中每个会话当前的等待事件、当前缓冲区的使用情况、当前的系统封锁情况等。

(2) 会话级的统计信息

第15页/共20页

会话级的统计信息反映了该连接建立后,在该连接上所收集信息的统计,例如在当前每个活动连接上每个等待事件的等待时间的统计、缓冲区读、写、命中情况的统计等

(3) 系统级的统计信息

系统级的统计信息反映了自系统启动以来,在各个数据库对象上进行的操作信息的统计,例如每个数据库上的信息、每个表或索引上的读写信息等。系统级的统计信息的收集必须借助系统的统计进程来完成,因此如果需要系统级的统计信息必须启动统计进程(系统参数stats_start_collector设置为true)。

(4) 系统中的数据库对象状态信息

数据库对象状态信息是指系统中表、索引、日志、文件等信息

KingbaseES的系统监控信息可以通过查询系统视图获取,相关的图形界面会在以后的版本中提供。

5.7 数据库的安全性

KingbaseES和Oracle都提供一系列安全措施来保护数据库中数据的安全,下面分别介绍。

5.7.1 身份识别和认证

在身份识别和认证方面,Oracle和KingbaseES都提供以下的功能:

(1) 提供基于IP的身份识别,指定可以登录数据库系统的IP地址区间。

(2) 提供用户名/密码认证。Oracle和KingbaseES都提供一些默认的DB帐号,可以通过创建不可能的密码、取消登录权限、设置登录触发器、锁定帐户等措施对用户的登录进行限制。

(3) 支持外部认证,如操作系统的认证;

Oracle还提供了更强的身份认证方式,KingbaseES可以在以后的版本中增强实现:

(1) 强认证,包括PKI数字证书、Kerberos、DCE和RADIUS;

(2) 代理认证,主要用于Web环境下的连接池应用;

(3) 为了提高系统的可用性,Oracle中支持单点登录。

(4) Oracle还提供EUS(企业用户安全)特性。通过EUS集中管理数据库的用户。

5.7.2 基于角色的权限管理和访问控制

Oracle和KingbaseES都实现了在SQL标准中定义的数据访问控制。

提供以下的功能:

(1) 采用基于角色的权限管理和访问控制来管理数据的安全,

(2) 都提供系统权限、对象权限和列权限

(3) 都支持通过角色进行权限的授予和回收。角色与角色之间可以继承(包括多重继承),但是继承关系不能形成环。

Oracle和KingbaseES在权限管理方面主要的区别是:

(1) Oracle的权限划分更为细致,提供了更多的系统权限。

(2) Oracle支持通过角色的启用和禁用来限制用户的访问权限。

第16页/共20页

(3) Oracle提供了一些更细粒度的访问控制,例如面向安全的应用上下文、虚拟私有数据库、标签安全。

在目前的权限系统中,DBA用户的权限过大,KingbaseES在安全版中实现了“三权分立”的权限系统。所谓三权分立,是指: DBA(DataBase Administrator)、SSO(System Security

Officer)和SAO (System Audit Officer)这三个角色是互斥的,一个用户最多拥有这三个角色之一。DBA负责与数据库系统管理有关的操作;SAO的职责是负责审计子系统的开启和关闭、查阅和删除审计记录、设置/取消审计配置、分析审计记录;SSO负责生成/删除安全策略、赋予/撤销用户的安全许可证等。

5.7.3 审计

Oracle和KingbaseES都提供了数据库审计功能:

(1) Oracle和KingbaseES中审计是语句级的,而不是事务级的。即使事务回滚,事务中的已执行操作也会保存到审计记录;

(2) 对存储过程中的SQL都进行审计;

(3) Oracle中审计记录可以保存在DB和OS中,KingbaseES中审计记录只能保存在DB中;

(4) Oracle中审计分为:强制审计、标准审计、细粒度审计,KingbaseES中审计只包括标准审计。强制审计包括数据库的启动、关闭,以及通过SYSDBA或SYSOPER角色验证的用户;细粒度审计支持SELECT、UPDATE、DELETE、ALTER操作的细粒度审计。

(5) Oracle和KingbaseES中审计的开启和关闭都通过修改配置文件中的参数并重新启动数据库来实现,但是两者的具体参数设置不同。

(6) Oracle和KingbaseES中的标准审计都包括statement、privilege、object三类。不同之处在于:Oracle中,statement针对非系统权限、privilege针对系统权限,KingbaseES中,statement针对某类客体的DDL操作、privilege针对某个权限;Oracle中,statement、privilege配置的改变必须在以后的session中才能生效,KingbaseES中所有配置的改变都立刻生效;

(7) 审计记录的内容有所不同,Oracle中只有当AUDIT_TRAIL配置为DB_EXTENDED时,才记录SQL语句,而KingbaseES中一直记录SQL。

(8) Oracle和KingbaseES中为了方便使用,都提供了视图。

(9) Oracle中没有单独的审计角色,只要拥有SYSDBA或SYSOPER角色就可以进行审计配置和查阅;KingbaseES中定义了单独的审计角色,一个用户不能同时拥有DBA和SAO;

5.7.4 数据库加密

在数据传输方面,Oracle和KingbaseES中都支持利用SSL进行网络加密传输。

对于数据库中的数据,Oracle提供了加解密函数供用户直接调用,对所需要加密的数据进行加密,密钥的管理也由用户自行决定。

KingbaseES对于数据库加密则采用不同的思路,它与数据加密的硬件厂商合作,给数据库用户提供透明加密,具有以下的特点:

(1) 数据库的应用程序不需要做任何修改,只需要在创建表时,在建表语句说明需要加密的字段即可。

第17页/共20页

(2) 索引可以继续使用,带密检索的性能不会有太大的影响。

(3) 密钥的管理由加密系统自行完成,减轻用户的负担。

5.8 数据库的高可用性

KingbaseES的高可用性可通过下面两种方式实现:

(1) 在共享磁盘的系统方案下,利用操作系统的集群功能,KingbaseES可以实现双机热备,一旦正在运行的系统出现故障时,KingbaseES可以迅速切换到备用机上。它可以规避由于计算机硬件故障而导致的系统停机,但它不能解决数据出现故障的问题。

(2) KingbaseES的新版本中提供Standby数据库的功能,它相当于Oracle的Data

Guard。它主要利用KingbaseES的日志系统实现数据库数据的镜像(物理镜像和逻辑镜像),一旦数据库出现故障,系统可以切换到镜像数据库上运行。该实现数据库镜像技术对生产数据库的运行性能的影响很小,同时它也可以作为一种数据库的实时备份方式使用。

KingbaseES目前还不能提供类似于Oracle的RAC(Real Application Cluster)的功能。

6 数据库管理工具

KingbaseES和Oracle都有自己的一组外围工具来方便操纵和管理数据库,因为工具不具有可比性,这里只介绍KingbaseES的外围工具。

6.1 KingbaseES企业管理器

KingbaseES企业管理器(简称JManager)是基于JAVA语言开发的能运行在不同操作系统平台上的图形工具,是一个总控的管理平台。它提供了更多图形和命令提示实用工具,允许用户、程序员和系统管理员进行下列操作:

 使用JManager管理和配置KingbaseES数据库服务器。

 使用JManager管理各种KingbaseES数据库对象。

 使用JManager进行KingbaseES数据安全的管理。

 使用JManager监视KingbaseES数据库服务器活动。

 使用JManager诊断、修改和优化KingbaseES数据库。

 调用JSQL查询分析器设计、测试SQL语句和查询、检索KingbaseES数据。

 调用JDTS数据库迁移工具导入、导出和转换数据。

 调用JControl启动、停止KingbaseES数据库服务器。

6.2 KingbaseES查询分析器

KingbaseES查询分析器(JSQL)是KingbaseES的客户端交互式系统,是基于JAVA语言开发的能运行在不同操作系统平台上的SQL交互式图形工具,用户通过这个图形化工具执行不同的SQL语句,JSQL负责对提供方便的SQL语句的执行方式并显示相应的结果,第18页/共20页

其窗口友好、操作简便。JSQL既可作为DBA管理工具,也可为普通用户使用,进行交互式数据库操作。

6.3 KingbaseES数据迁移工具

KingbaseES数据迁移工具(JDTS)能够进行KingbaseES 数据库与其他异构数据源之间的数据导入、导出和转换,包括:

 关系数据库系统

 Microsoft SQL Server 2000

 Microsoft SQL Server 2005

 Oracle 8i

 Oracle 9i

 Oracle 10g

 DB2 7.X

 DB2 8.X

 MySQL4.x

 MySQL5.0

 各种JDBC/ODBC数据源

 Excel工作表

 文本文件

与KingbaseES JManager、JSQL等图形化工具一样,它具有跨平台转换的性能,能支持不同平台的不同DBMS数据库数据之间的迁移,支持较大量数据的快速迁移。。

数据迁移工具可以进行迁移的数据库对象包括:

(1) 表(包括主键及各种表约束)

(2) 视图(部分支持视图)

(3) 索引

(4) 存储过程

(5) 函数

(6) 触发器

6.4 KingbaseES逻辑备份还原工具

KingbaseES逻辑备份还原工具提供了对数据库对象的联机备份还原功能,包括对指定数据库、指定对象和指定模式。

逻辑备份工具提供四种备份方式:备份整个数据库、备份单个表、备份多个表、以及备份指定模式。

逻辑还原工具提供两种还原方式--还原所有备份对象、还原部分备份对象。

用户可灵活调整、实施数据的备份计划。

6.5 KingbaseES 物理备份恢复工具

KingbaseES的物理备份工具提供了全系统级的联机、脱机备份恢复功能。它支持数据第19页/共20页

文件与控制文件分别进行物理备份、恢复的方式,目前只提供了完全备份方式,为数据库的安全提供最有力的保证。

6.6 KingbaseES控制管理器

KingbaseES控制管理器(JControl)用于启动、停止KingbaseES数据库服务器,并且可以完成一些管理控制和启动、停止数据库相关的管理工作。

JControl是客户端界面工具,其通过KLS(在Windows操作系统上注册为系统服务,对应的程序名为,Linux操作系统也注册为服务,对应的程序名为KLS)来控制远程的KingbaseES数据库服务器的启动、停止。

第20页/共20页


本文标签: 数据库 系统 支持