暂无图片
暂无图片
12
暂无图片
暂无图片
暂无图片

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

原创 GBASE数据库 2024-05-28
439

一、数据库迁移概述

在当今快速发展的信息技术领域,数据库迁移已成为企业数字化转型的关键步骤。从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
一行记录的最大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

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 READUncommitted Readread uncommitted
COMMITTED READ默认Read Stabilityread committed
REPEATABLE READRepeatable Readserializable
CURSOR STABILITYCURSOR 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  
ABSOLUTEALLOCATEATTACH
ACCESSALTERAUDIT
ACCESS_METHODANDAUTHORIZATION
ADDANSIAUTO
AFTERANYAUTOFREE
AGGREGATEAPPENDAVG
ALLIGNMENTASAVOID_EXECUTE
ALLASCAVOID_SUBQF
ALL_ROWSAT 
B  
BEFOREBOOLEANBY
BEGINBOTHBYTE
BETWEENBUFFERED 
BINARYBUILTIN 
C  
CACHECLOSECONNECTION
CALLCLUSTERCONST
CANNOTHASHCLUSTERSIZECONSTRAINT
CARDINALITYCOARSECONSTRAINTS
CASCADECOBOLCONSTRUCTOR
CASECODESETCONTINUE
CASTCOLLATIONCOPY
CHARCOLLECTIONCOSTFUNC
CHAR_LENGTHCOLUMNCOUNT
CHARACTERCOMMITCRCOLS
CHARACTER_LENGTHCOMMITTEDCREATE
CHECKCOMMUTATORCURRENT
CLASSCONCURRENTCURSOR
CLIENTCONNECTCYCLE
D  
DATABASEDECLAREDIAGNOSTICS
DATAFILESDECODEDIRTY
DATASKIPDEFAULTDISABLED
DATEDEFERREDDISCONNECT
DATETIMEDEFERRED_PREPAREDISTINCT
DAYDEFINEDISTRIBUTEBINARY
DBADELAYDISTRIBUTEREFERENCES
DBDATEDELETEDISTRIBUTIONS
DBMONEYDELIMITERDOCUMENT
DBPASSWORDDELUXEDOMAIN
DEALLOCATEDEREFDONOTDISTRIBUTE
DEBUGDESCDORMANT
DECDESCRIBEDOUBLE
DEC_TDESCRIPTONDROP
DECIMALDETACHDTIME_T
E  
EACHESCAPEEXPLAIN
ELIFEXCEPTIONEXPLICIT
ELSEEXCLUSIVEEXPRESS
ENABLEEXECEXPRESSION
ENDEXECUTEEXTEND
ENUMEXECUTEANYWHEREEXTENT
ENVIRONMENTEXISTSEXTERNEXTERNAL
ERROREXIT 
F  
FARFIXEDFOUND
FETCHFLOATFRACTION
FILEFLUSHFRAGMENT
FILLFACTORFORFREE
FILTERINGFOREACHFROM
FIRSTFOREIGNFUNCTION
FIRST_ROWSFORMAT 
FIXCHARFORTRAN 
G-H  
GENERALGOTOHAVING
GETGRANTHIGH
GKGROUPHOLD
GLOBALHANDLESNULLSHOUR
GOHASHHYBRID
I  
IFINDICATORINTERNAL
ifx_int8_tINFORMIXINTERNALLENGTH
ifx_lo_create_spec_tINITINTERVAL
ifx_lo_stat_tINNERINTO
IMMEDIATEINSERTintervl_t
IMPLICITINSTEADIS
ININTISCANNONICAL
INCREMENTINT8ISOLATION
INDEXINTEGITEM
INDEXESINTEGERITERATOR
J-K  
joinkeepkey
L  
LABELEQLASTLOCALLOCATOR
LABELGELEADINGLOCK
LABELGLBLEFTLOCKS
LABELGTLETLOG
LABELLELEVELLONG
LABELLTLIKELOW
LABELUBLISTLOWER
LABELTOSTRINGLISTINGLVARCHAR
LANGUAGELOC_T 
M  
MATCHESMEDIUMMODERATE
MAXMEMORY_RESIDENTMODIFY
MAXERRORSMIDDLEMODULE
MAXLENMINMONEY
MAXVALUEMINUTEMONTH
MDYMINVALUEMOUNTING
MEDIANMODEMULTISET
N  
NAMENOCYCLENORMAL
NCHARNOMAXVALUENOT
NEGATORNOMIGRATENOTEMPLATEARG
NEWNOMINVALUENULL
NEXTNON_RESIDENTNUMERIC
NONONENVARCHAR
NOCACHENOORDERNVL
O  
OCTET_LENGTHOPAQUEOPTION
OFOPCLASSOR
OFFOPENORDER
OLDOPERATIONALOUT
ONOPTICALOUTER
ONLYOPTIMIZATION 
P  
PAGEPLIPRIVATE
PARALLELIZABLEPLOADPRIVILEGES
PARAMETERPRECISIONPROCEDURE
PASCALPREPAREPUBLIC
PASSEDBYVALUEPREVIOUSPUT
PDQPRIORITYPRIMARY 
PERCALL_COSTPRIOR 
R  
RAISEREMAINDERRETURNS
RANGERENAMEREUSE
RAWREOPTIMIZATIONREVOKE
READREPEATABLEROBIN
REALREPLICATIONROLE
RECORDENDRESERVEROLLBACK
REFRESOLUTIONROLLFORWARD
REFERENCESRESOURCEROUND
REFERENCINGRESTARTROUTINE
REGISTERRESTRICTROW
REJECTFILERESUMEROWID
RELATIVERETAINROWIDS
RELEASERETURNROWS
RETURNING  
S  
SAMEASSHARESTART
SAMPLESSHORTSTATIC
SCHEDULESIGNEDSTATISTICS
SCHEMASIZESTDEV
SCRATCHSKALLSTEP
SCROLLSKINHIBITSTOP
SECONDSKSHOWSTORAGE
SECONDARYSMALLFLOATSTRATEGIES
SECTIONSMALLINTSTRING
SELCONSTSOMESTRINGTOLABEL
SELECTSPECIFICSTRUCT
SELFUNCSQLSTYLE
SEQUENCESQLCODESUBSTR
SERIALSQLCONTEXTSUBSTRING
SERIAL8SQLERRORSUM
SERIALIZABLESQLWARNINGSUPPORT
SERVERUUIDSTABILITYSYNC
SESSIONSTACKSYNONYM
SETSTANDARDSYSTEM
T  
TABLETO 
TEMPTODAYTRIGGERS
TEXTTRACETRIM
THENTRAILINGTRUNCATE
TIMETRANSACTIONTYPE
TIMEOUTTRIGGERTYPEDEF
U  
UNCOMMITTEDUNITSUSAGE
UNDERUNLOCKUSE_SUBQF
UNIONUNSIGNEDUSER
UNIQUEUPDATEUSING
V  
VALUEVARIABLEVIEW
VALUESVARIANCEVIOLATIONS
VARVARIANTVOID
VARCHARVARYINGVOLATILE
W  
WAITWHEREWORK
WARNINGWHILEWRITE
WHENWITHWHENEVER
WITHOUT  
X  
XLOADXUNLOADYEAR

 


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论