数据库迁移新篇章之DB2与GBase 8s的深度对比

一、数据库迁移概述

在当今快速发展的信息技术领域,数据库迁移已成为企业数字化转型的关键步骤。从DB2到南大通用GBase 8s的迁移不仅涉及数据的转移,更关乎架构、应用乃至整个业务流程的重塑。本文将深入探讨这两种数据库的异同,为读者提供一份详尽的迁移指南。

二、架构对比:从实例到表(Instance)

  • 实例

DB2与GBase 8s在实例概念上有所不同。在DB2中,实例是一组进程和共享内存的集合,而GBase 8s的实例包括共享内存、进程和存储。两者的逻辑结构相似,均遵循实例→数据库→表空间→表的层级

 

  • 存储模型

GBase 8s的存储模型为表空间→chunk→extent→page,而DB2则为表空间→容器→extent→page。DB2中的容器可以是目录、文件或裸设备,映射到物理存储,且每个容器仅属于一个表空间。

 

  • 获取数据库实例信息

安装目录:

DB2确认本机安装数据库的版本信息及安装目录,命令是db2ls

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase8s 是通过环境变量echo $GBASEDBTDIR来确认安装目录

数据库迁移新篇章之DB2与GBase 8s的深度对比

版本:

查询当前使用的是哪个版本:命令是db2level

数据库迁移新篇章之DB2与GBase 8s的深度对比

gbase8s查版本命令是:onstat -V

数据库迁移新篇章之DB2与GBase 8s的深度对比

实例名称:

DB2的实例名是用户名,列出所有实例名:db2ilist;   显示当前实例:db2 get instance

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase 8s 显示实例是通过环境变量:echo $GBASEDBTSERVER 

数据库迁移新篇章之DB2与GBase 8s的深度对比

监听端口:

DB2查看监听端口:db2 get dbm cfg |grep -i SVCENAME

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase8s是查看监听端口:onstat -g ntt

数据库迁移新篇章之DB2与GBase 8s的深度对比

 

  • 获取数据相关的信息

显示数据库名称:

DB2显示数据库名称:db2 list db directory

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase8s 显示数据库名称可以通过:dbaccess 进入菜单模式可以查看

数据库迁移新篇章之DB2与GBase 8s的深度对比

连接数据库:

DB2连接数据库:db2 connect to DB_NAME

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase8s连接数据库: dbaccess DB_NAME – 

数据库迁移新篇章之DB2与GBase 8s的深度对比

三、变量与参数:配置文件(Config File)

GBase 8s的配置文件onconfig是实例级别的配置文件。

查看配置命令:onstat -c 

环境变量:env|grep -i gbase

而DB2的参数配置分为两个级别,一个是实例级别,另一个是数据库级别,对数据服务性能影响较大的参数主要在数据库级别配置。

查看实例级配置参数:db2 get dbm cfg

查看数据库级配置参数:db2 get db cfg for  $DB_NAME

注册参数:db2set -all

 

四、存储限制:容量与性能(Storage)

GBase 8s在存储方面提供了一些具体的限制,例如一页包含的数据行数最多为255,一个表或分片的最大行数可达4,277,659,295行。此外,GBase 8s支持的单个SQL语句的最大长度为2GB,一个Instance最大支持的database数为21,000,000,具体如下:

GBase 8s存储相关限制 最大值
一页包含的数据行数 255
一个表或者分片最大的行数 4,277,659,295
一个表或者分片最大的数据页数 16,775,134
一个表或者分片最大占用的空间大小

(除BLOB,CLOB,BYTE,TEXT以外)

33,818,671,136 Byte
一行记录的最大rowsize32,767
表最大支持的字段数32,767
一个复合索引支持最多的列数16
单个SQL语句的最大长度2G
一个Instance最大支持的database数21,000,000
一个Instance最大支持的tables数477,102,080
一个Instance最大支持的活动用户数active users32,767
一个session最大同时访问的database数8
最大的页清理进程page-cleaner128
一个dbspace上最大支持的partition数2K pagesize 1048445

4K pagesize 1048314

一个用户同时可以使用Lock Table锁住的表的个数32
一个dbspace的最大空间
一个chunk的最大空间2K pagesize 4T

4K pagesize 8s

一个Instance最多支持的chunks数32,767
一个chunk最大存储的数据页数pages2,000,000,000
一个Instance最大支持的dbspace数2047
一个Instance最大支持的存储空间8 PB

GBase 8s与DB2在存储方面的概念对应关系如下如下表。

GBase 8s DB2
1 数据空间(dbspace) 表空间(tablespace)
2 块(Chunk) 容器(container)
3 表空间(table space)
4 区间(extent) 扩展数据块(extent)
5 页(page) 页(page)

 

显示数据库表空间信息命令区别,db2pd 和onstat 命令非常像,都是从内存读数据。

DB2显示表空间信息: db2pd -db DB_NAME -tablespaces

数据库迁移新篇章之DB2与GBase 8s的深度对比

GBase8s显示表空间信息:onstat -d

数据库迁移新篇章之DB2与GBase 8s的深度对比

 

五、锁与隔离级别:数据一致性的保障

  • 锁(Locks)

GBase 8s默认采用页级锁,而DB2默认为行级锁。GBase 8s的锁结构存储在共享内存中,而不是dbspace中这为并发控制提供了不同的策略。

DB2显示锁信息:db2pd -db DB_NAME -lock

GBase8s信息锁信息:onstat -k

  • 隔离级别(Isolation) 

GBase 8s提供多种隔离级别,包括脏读隔离、提交读隔离、游标稳定性隔离和可重复读隔离。每种隔离级别都对应着DB2中的类似级别,为处理数据并发性问题提供了不同的机制。对应关系请参考下表。

GBase 8s DB2 ANSI
DIRTY READ Uncommitted Read read uncommitted
COMMITTED READ默认 Read Stability read committed
REPEATABLE READ Repeatable Read serializable
CURSOR STABILITY CURSOR STABILITY默认
LAST COMMITTED READ

 

六、标识符与关键

数据库对象的命名规则在两种数据库中也有所不同。DB2支持的标识符包括字符、数字以及特定符号,DB2最大表名长度128个字节,可以包括字符、数字、“_”、“$”、“#”。

而南大通用GBase 8s在命名上更为严格,不支持某些符号,且对表名长度有特定要求。最大表名长度128个字节,但不支持“#”,“$”也不可以是表名的第一个字符,不符合GBase 8s命名规则的标识符,需要在移植时用正确的名称替换。文章最后,附上GBase 8s的ANSI保留字列表,供技术读者参考。

通过以上对比,我们可以看到,尽管DB2与南大通用GBase 8s在许多方面有着高度的相似性,但在架构设计、存储管理、并发控制等方面,两者各有千秋。对于计划进行数据库迁移的使用者来说,理解这些差异是成功迁移的关键。

后续文章会以数据库架构迁移(Schema/DDL)、数据迁移(Data)和应用迁移(Application) 三个步骤为主线,介绍GBase 8s不同于DB2的技术特点,以及在迁移过程中的这两个数据库差异的转换方法与技巧。

注:红色字体的同时也是DB2的保留字

A
ABSOLUTE ALLOCATE ATTACH
ACCESS ALTER AUDIT
ACCESS_METHOD AND AUTHORIZATION
ADD ANSI AUTO
AFTER ANY AUTOFREE
AGGREGATE APPEND AVG
ALLIGNMENT AS AVOID_EXECUTE
ALL ASC AVOID_SUBQF
ALL_ROWS AT
B
BEFORE BOOLEAN BY
BEGIN BOTH BYTE
BETWEEN BUFFERED
BINARY BUILTIN
C
CACHE CLOSE CONNECTION
CALL CLUSTER CONST
CANNOTHASH CLUSTERSIZE CONSTRAINT
CARDINALITY COARSE CONSTRAINTS
CASCADE COBOL CONSTRUCTOR
CASE CODESET CONTINUE
CAST COLLATION COPY
CHAR COLLECTION COSTFUNC
CHAR_LENGTH COLUMN COUNT
CHARACTER COMMIT CRCOLS
CHARACTER_LENGTH COMMITTED CREATE
CHECK COMMUTATOR CURRENT
CLASS CONCURRENT CURSOR
CLIENT CONNECT CYCLE
D
DATABASE DECLARE DIAGNOSTICS
DATAFILES DECODE DIRTY
DATASKIP DEFAULT DISABLED
DATE DEFERRED DISCONNECT
DATETIME DEFERRED_PREPARE DISTINCT
DAY DEFINE DISTRIBUTEBINARY
DBA DELAY DISTRIBUTEREFERENCES
DBDATE DELETE DISTRIBUTIONS
DBMONEY DELIMITER DOCUMENT
DBPASSWORD DELUXE DOMAIN
DEALLOCATE DEREF DONOTDISTRIBUTE
DEBUG DESC DORMANT
DEC DESCRIBE DOUBLE
DEC_T DESCRIPTON DROP
DECIMAL DETACH DTIME_T
E
EACH ESCAPE EXPLAIN
ELIF EXCEPTION EXPLICIT
ELSE EXCLUSIVE EXPRESS
ENABLE EXEC EXPRESSION
END EXECUTE EXTEND
ENUM EXECUTEANYWHERE EXTENT
ENVIRONMENT EXISTS EXTERNEXTERNAL
ERROR EXIT
F
FAR FIXED FOUND
FETCH FLOAT FRACTION
FILE FLUSH FRAGMENT
FILLFACTOR FOR FREE
FILTERING FOREACH FROM
FIRST FOREIGN FUNCTION
FIRST_ROWS FORMAT
FIXCHAR FORTRAN
G-H
GENERAL GOTO HAVING
GET GRANT HIGH
GK GROUP HOLD
GLOBAL HANDLESNULLS HOUR
GO HASH HYBRID
I
IF
ifx_int8_t INDICATOR INTERNALLENGTH
ifx_lo_create_spec_t INIT INTERVAL
ifx_lo_stat_t INNER INTO
IMMEDIATE INSERT intervl_t
IMPLICIT INSTEAD IS
IN INT ISCANNONICAL
INCREMENT INT8 ISOLATION
INDEX INTEG ITEM
INDEXES INTEGER ITERATOR
J-K
join keep key
L
LABELEQ LAST LOCALLOCATOR
LABELGE LEADING LOCK
LABELGLB LEFT LOCKS
LABELGT LET LOG
LABELLE LEVEL LONG
LABELLT LIKE LOW
LABELUB LIST LOWER
LABELTOSTRING LISTING LVARCHAR
LANGUAGE LOC_T
M
MATCHES MEDIUM MODERATE
MAX MEMORY_RESIDENT MODIFY
MAXERRORS MIDDLE MODULE
MAXLEN MIN MONEY
MAXVALUE MINUTE MONTH
MDY MINVALUE MOUNTING
MEDIAN MODE MULTISET
N
NAME NOCYCLE NORMAL
NCHAR NOMAXVALUE NOT
NEGATOR NOMIGRATE NOTEMPLATEARG
NEW NOMINVALUE NULL
NEXT NON_RESIDENT NUMERIC
NO NONE NVARCHAR
NOCACHE NOORDER NVL
O
OCTET_LENGTH OPAQUE OPTION
OF OPCLASS OR
OFF OPEN ORDER
OLD OPERATIONAL OUT
ON OPTICAL OUTER
ONLY OPTIMIZATION
P
PAGE PLI PRIVATE
PARALLELIZABLE PLOAD PRIVILEGES
PARAMETER PRECISION PROCEDURE
PASCAL PREPARE PUBLIC
PASSEDBYVALUE PREVIOUS PUT
PDQPRIORITY PRIMARY
PERCALL_COST PRIOR
R
RAISE REMAINDER RETURNS
RANGE RENAME REUSE
RAW REOPTIMIZATION REVOKE
READ REPEATABLE ROBIN
REAL REPLICATION ROLE
RECORDEND RESERVE ROLLBACK
REF RESOLUTION ROLLFORWARD
REFERENCES RESOURCE ROUND
REFERENCING RESTART ROUTINE
REGISTER RESTRICT ROW
REJECTFILE RESUME ROWID
RELATIVE RETAIN ROWIDS
RELEASE RETURN ROWS
RETURNING
S
SAMEAS SHARE START
SAMPLES SHORT STATIC
SCHEDULE SIGNED STATISTICS
SCHEMA SIZE STDEV
SCRATCH SKALL STEP
SCROLL SKINHIBIT STOP
SECOND SKSHOW STORAGE
SECONDARY SMALLFLOAT STRATEGIES
SECTION SMALLINT STRING
SELCONST SOME STRINGTOLABEL
SELECT SPECIFIC STRUCT
SELFUNC SQL STYLE
SEQUENCE SQLCODE SUBSTR
SERIAL SQLCONTEXT SUBSTRING
SERIAL8 SQLERROR SUM
SERIALIZABLE SQLWARNING SUPPORT
SERVERUUID STABILITY SYNC
SESSION STACK SYNONYM
SET STANDARD SYSTEM
T
TABLE TO
TEMP TODAY TRIGGERS
TEXT TRACE TRIM
THEN TRAILING TRUNCATE
TIME TRANSACTION TYPE
TIMEOUT TRIGGER TYPEDEF
U
UNCOMMITTED UNITS USAGE
UNDER UNLOCK USE_SUBQF
UNION UNSIGNED USER
UNIQUE UPDATE USING
V
VALUE VARIABLE VIEW
VALUES VARIANCE VIOLATIONS
VAR VARIANT VOID
VARCHAR VARYING VOLATILE
W
WAIT WHERE WORK
WARNING WHILE WRITE
WHEN WITH WHENEVER
WITHOUT
X
XLOAD XUNLOAD YEAR

 

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317893.html

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表回复

登录后才能评论