상세 컨텐츠

본문 제목

데이터 가상화

Db2 for LUW

by 파란디비 2023. 1. 16. 16:14

본문

데이터 가상화란 네트웍 상의 분산된 사버에 위치한 여러 이기종 데이터소스들을 논리적으로 하나의 데이터베이스로 통합하는 기술입니다. 사용자는 다양한 데이터를 조합(Join)하여 원하는 통합 비지니스 인사이트를 도출할 수 있습니다. 


Part 1.  지원 데이터 소스

 Db2에서 제공되는 다양한 연결 드라이버를 사용하여 간편하게 이기종 데이터 소스로 연결할 수 있습니다.  

https://www.ibm.com/support/pages/data-source-support-matrix-federation-bundled-db2-luw-v115

구분 데이터 소스
Native Db2, Db2 z/OS, Db2 i/OS, BigSQL, Oracle, SAP Sybase, Teradata, Informix, MS SQL Server
ODBC Amazon Redshift, Apache Hive , Apache Spark SQL, Cloudera Impala , database.com, force.com, IBM® Red Brick® Warehouse, IBM PureData® System for Analytics (formerly Netezza®) , IBM InfoSphere® Classic Federation Server for z/OS® data sources, Informix® (with ODBC wrapper), MariaDB, Microsoft Azure, Microsoft Excel workbooks, Microsoft SQL Server (with ODBC wrapper) , Oracle (with ODBC wrapper), Oracle Cloud, Oracle MySQL, Pivotal Greenplum, Pivotal HAWQ, PostgreSQL, Salesforce, SAP HANA, SAP Sybase IQ, SAP Sybase ASE, Snowflake
NoSQL CouchDB, MongoDB, Parquet on Hadoop
JDBC Amazon Athena, Amazon RedShift, Apache Derb, Apache Hive, Apache Spark SQL, Autonomous RESTful Services, Cloudera Impala, DVM server, Google BigQuery,Db2 for LUW, Db2 for zOS, PDA(Netezza), MariaDB, SQL Server, Oracle, MySQL Community Editon, Pivotal Greenplum, PostgreSQL,Salesforce, SAP Hana, Snowflake, Teradata
기타 BioRs, table-structured file, Web service, XML

Part 2. 가상화 쿼리 성능 개선 방안

데이터 가상화는 실시간으로 분산된 이기종 데이터를 통합하는 효과적인 방안이나,현실적으로는 가상화 쿼리 수행 시 데이터 소스시스템에 자원부담을 줄 뿐만 아니라, 느린 성능으로 불편함이 초래될 수 있습니다. 데이터 가상화 환경에서  쿼리 성능을  개선할 수 있는 몇가지 방안에 대해 살펴 봅니다. 

 

1) MQT(Materialized Query Table)  활용

구체화된 쿼리 테이블(MQT)은 로컬 Db2에서 원격 데이터를 캐시하는 용도로 활용될 수 있습니다.

미리 계산되고 요약된 데이터를 저장하고 해당 데이터를 원격  테이블의 변경 사항과 자동으로 동기화하여 쿼리를 빠르게 실행하도록 돕는 MQT는 유효한 SQL 쿼리를 사용하여 만들 수 있으며 조인, UNION과 같은 집합 연산자 및 OLAP(온라인 분석 처리) 기능을 포함할 수 있습니다. 모든 가상화 데이터소스에 대해 구성이 가능합니다. 

 

1단계)  CREATE TABLE문을 작성하고 fullselect를 지정

2단계) CREATE TABLE 문에 DATA INITIALLY DEFERRED 및 REFRESH DEFERRED절을 포함

  • DATA INITIALLY DEFERRED : MQT테이블 생성 후, (MQT생성3)에 따라 데이터 갱신
  • REFRESH DEFERRED : 원격 데이터가 변경 되면 REFRESH TABLE문으로 최신 데이터 유지

3단계) CREATE TABLE 문에 구체화된 쿼리 테이블의 최신 데이터 갱신 방법 지정

  • MAINTAINED BY SYSTEM : REFRESH TABLE 문 사용
  • MAINTAINED BY USER : LOAD 유틸리티, INSERT, UPDATE, MERGE, TRUNCATE 및 DELETE문과 REFRESH TABLE문 사용

4단계) 쿼리 최적화 사용 여부 지정

  • ENABLE QUERY OPTIMIZATION : Optimizer가 MQT를 자동인식하여 쿼리에 활용
  • DISABLE QUERY OPTIMIZATION : OPtimizer가 MQT를 쿼리에 활용하지 않음

2)  캐싱 (복제) 활용

기본으로 제공되는 복제 기능을 활용하여 스케줄에 의해 자동 변경되도록 구성 가능합니다. 지원되는 소스는 Db2 Family, Informix, SQL Server, Oracle, Sybase 등이며, Nickname, MQT, 복제 구성이 필요합니다.  (https://www.ibm.com/docs/en/db2/11.5?topic=data-creating-sample-cache-tables)

 

3) 병렬 기능 활용 

Db2 MPP의 병렬 시스템에서는 모든 Active 파티션(노드)에서 가상화 기능 활성화로 가상화 쿼리 성능을 선형적으로 향상시킬 수 있습니다.  지원되는 소스는 Db2 Family, Oracle, PostgreSQL, Greenplum, Netezza, Informix, Teradata등입니다.  (https://www.ibm.com/docs/ko/db2/11.5?topic=fetching-turning-nickname-interpartition-parallelism-parallel)

1단계) 데이터 가상화 인스턴스 환경 구성
$db2 update dbm cfg using FEDERATED YES
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully.

$ db2 get dbm cfg | grep FEDERATED
Federated Database System Support (FEDERATED) = YES

2딘계) 병렬 처리 레지스트리 변경
db2set -immediate DB2_EXTENDED_OPTIMIZATION=”NICKNAME_PARALLEL ON”

3단계) 가상화 Wrapper 등록
Db2 : CREATE WRAPPER "DRDAWRAPPER" LIBRARY 'libdb2drda.so' OPTIONS(DB2_FENCED 'Y')
Oracle : CREATE WRAPPER NET8 ; 

4단계) 가상화 Server 등록
Db2 : CREATE SERVER DRDASERVER TYPE DB2/UDB VERSION 11 WRAPPER "DRDAWRAPPER" AUTHORIZATION DB2INST1 PASSWORD "******" OPTIONS (HOST ‘hostname’, PORT '50000', DBNAME 'FED', PUSHDOWN 'Y', DB2_MAXIMAL_PUSHDOWN 'Y', SUPPORT_PARALLELISM 'Y')
Oracle : CREATE SERVER oraserver TYPE oracle VERSION 8.1.7 WRAPPER wrapper_name 
       OPTIONS (NODE 'paris_node', VARCHAR_NO_TRAILING_BLANKS 'Y') ;

5단계) 가상화 사용자 등록
Db2: CREATE USER MAPPING FOR USER SERVER DRDASERVER OPTIONS (REMOTE_AUTHID 'DB2INST1', REMOTE_PASSWORD ‘then4now’)
Oracle : CREATE USER MAPPING FOR USER SERVER oraserver
       OPTIONS (REMOTE_AUTHID 'rob', REMOTE_PASSWORD 'then4now') ;

6단계) Nickname 생성
Db2 : CREATE NICKNAME N1 FOR DRDASERVER.DB2INST1.T1
Oracle : CREATE NICKNAME N1 FOR ORASERVER.ROB.T1

7단계) Nickname별 병렬 처리 기능 Enable
db2set -immediate DB2_EXTENDED_OPTIMIZATION="NICKNAME_PARALLEL OFF" 
db2set -immediate DB2_EXTENDED_OPTIMIZATION="NICKNAME_PARALLEL ON"

8단계) Query 별 병렬 처리 기능 Enalbe
/* <OPTGUIDELINES> <REGISTRY> <OPTION NAME='DB2_EXTENDED_OPTIMIZATION' VALUE='NICKNAME_PARALLEL ON'/> </REGISTRY> </OPTGUIDELINES> */
/* <OPTGUIDELINES> <REGISTRY> <OPTION NAME='DB2_EXTENDED_OPTIMIZATION' VALUE='NICKNAME_PARALLEL OFF'/> </REGISTRY> </OPTGUIDELINES> */

 


Part 3.  Insert /Update 지원

 Db2는 Select 뿐 아니라 Insert/Update/Delete를 대부분의 데이터 소스에 대해 지원합니다.

지원되지 않는 경우는 아래와 같습니다. 

  • BioRS, Excel, Table-structured files, Web services, XML 데이터 소스
  • Join , Union ALL 로 생성된 Nickname

맺음말

데이터 가상화는 성능개선 방안이 함께 보완/적용된다면, 기존의 ETL 이나 CDC로 구현 시 보다 신속하고 비용 효율적으로 기업 내 데이터를 통합하는 좋은 방안이 될 수 있습니다. 

'Db2 for LUW' 카테고리의 다른 글

스마트하게 워크로드 관리하기  (0) 2023.03.12
In-DB 머신러닝  (0) 2023.02.10
dbsummary로 Db2 성능 문제 원인 찾기  (0) 2022.12.20
Db2 OLTP 아키텍처 구성  (0) 2022.12.05
Db2 Trace Facility  (0) 2022.11.29

관련글 더보기

댓글 영역