一、数据库迁移概述
在当今快速发展的信息技术领域,数据库迁移已成为企业数字化转型的关键步骤。从DB2到南大通用GBase 8s的迁移不仅涉及数据的转移,更关乎架构、应用乃至整个业务流程的重塑。本文将深入探讨这两种数据库的异同,为读者提供一份详尽的迁移指南。
二、架构对比:从实例到表(Instance)
-
实例
DB2与GBase 8s在实例概念上有所不同。在DB2中,实例是一组进程和共享内存的集合,而GBase 8s的实例包括共享内存、进程和存储。两者的逻辑结构相似,均遵循实例→数据库→表空间→表的层级。
-
存储模型
GBase 8s的存储模型为表空间→chunk→extent→page,而DB2则为表空间→容器→extent→page。DB2中的容器可以是目录、文件或裸设备,映射到物理存储,且每个容器仅属于一个表空间。
-
获取数据库实例信息
安装目录:
DB2确认本机安装数据库的版本信息及安装目录,命令是db2ls;

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

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

gbase8s查版本命令是:onstat -V

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

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

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

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

-
获取数据相关的信息
显示数据库名称:
DB2显示数据库名称:db2 list db directory

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

连接数据库:
DB2连接数据库:db2 connect to DB_NAME

GBase8s连接数据库: dbaccess DB_NAME –

三、变量与参数:配置文件(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 |
| 一行记录的最大rowsize | 32,767 |
| 表最大支持的字段数 | 32,767 |
| 一个复合索引支持最多的列数 | 16 |
| 单个SQL语句的最大长度 | 2G |
| 一个Instance最大支持的database数 | 21,000,000 |
| 一个Instance最大支持的tables数 | 477,102,080 |
| 一个Instance最大支持的活动用户数active users | 32,767 |
| 一个session最大同时访问的database数 | 8 |
| 最大的页清理进程page-cleaner | 128 |
| 一个dbspace上最大支持的partition数 | 2K pagesize 1048445
4K pagesize 1048314 |
| 一个用户同时可以使用Lock Table锁住的表的个数 | 32 |
| 一个dbspace的最大空间 | |
| 一个chunk的最大空间 | 2K pagesize 4T
4K pagesize 8s |
| 一个Instance最多支持的chunks数 | 32,767 |
| 一个chunk最大存储的数据页数pages | 2,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

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

五、锁与隔离级别:数据一致性的保障
-
锁(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