제품 여행

CUBRID 전환 시에 어떤 고민을 해야 할까요?

by 권호일 posted Dec 26, 2017

최근 공개소프트웨어에 대한 관심이 높아지면서 국내 유일의 오픈소스 DBMSCUBRID도 많은 주목을 받고 있습니다전환을 생각하는 사용자로부터 많이 받는 질문 중 하나는 우리가 운영하고 있는 시스템의 DBMS가 오라클/MySQL/MS-SQL 인데 CUBRID로 전환이 가능한가요?” 입니다. 그래서, 오라클 기반의 서비스를 CUBRID로 전환할때 전환에 절차 및 고려 사항들에 대한 대략적인 내용을 정리해보았습니다.

우선, CUBRID로 전환하기 위한 절차는 1)전환 가능성 분석  2) 기존 환경분석  3) 개발환경 구성 4) SQL 전환 순으로 진행됩니다. 이후의 절차인 운영환경 전환, 성능테스트, 운영 유지보수 등의 내용은 생략하도록 하겠습니다.

그럼, 각 절차에 대해서 상세히 알아보도록 하겠습니다


1) 전환 가능성 분석

아래 표와 같이 각 항목별로 배점을 부여하여 DBMS 전환이 가능한지를 확인합니다각 항목별배점 예시는 50:30:20, 60:20:20 등과 같이 배점기준을 정하여 가능성을 분석하며, 배점결과가 약 70~80 이상일 경우에는 전환이 가능하다고 판단하면 됩니다.

블로그_01.JPG


2) 기존 환경 분석

전환이 가능하다고 판단되면, 전환범위와 DBMS 스키마, DB크기 등에 대한 시스템 전반적인 항목들을 검토합니다현 시스템의 전체를 전환 할 것인지, 일부만 전환 할 것인지를 확인하고, 그에 따른 DBMS 전환을 검토합니다.

 아래 표에서는 오라클 스키마에서 CUBRID로 전환 시에 고려해야 할 주요 분석 항목에 대해서 정리하였습니다. 데이터용량 크기는 데이터 전환 소요시간 측정의 중요 정보 입니다

데이터 문자셋은 EUC-KR일 경우에 그대로 유지 할 지, 또는 UTF-8로 변경 할 지에 대한 부분을 고려해야 합니다.  CUBRID 마이그레이션 툴에서는 문자셋을 변경하는 기능도 지원 됩니다, 한글을 저장 할 때 EUC-KR2byte, UTF-83byte의 저장 공간이 필요 함으로 UTF-8로 저장하기 위해서는 좀 더 큰 저장 공간이 필요하는 것을 인지하셔야 합니다.

블로그_02.JPG


3) 개발환경 구성

개발환경을 구성하기 위해서는 CUBRID 엔진을 설치하고, DB생성과 DB환경설정 작업을 합니다기존 DB의 스키마와 데이터를 이관하고, 응용AP와의 DB연결을 진행합니다각각의 세부내용은 아래의 링크정보를 확인하여 개발환경을 구성할 수 있습니다. 최근 개발 추세가 JAVA언어를 많이 사용하여 개발을 함으로 JDBC 연결설정 관련 URL을 링크해 두었고 그 밖의 개발언어(PHP )는 아래 DB접속 드라이버를 참조하시면 됩니다.

- DBMS 환경구성

DB설치 : https://www.cubrid.org/manual/ko/9.3.0/install_upgrade.html

DB생성 : https://www.cubrid.org/manual/ko/9.3.0/admin/admin_utils.html#db-create-add-delete

DB환경설정 : https://www.cubrid.org/manual/ko/9.3.0/admin/config.html

- WAS 또는 AP에서의 DB 연결설정

JDBC 연결 설정 : https://www.cubrid.org/manual/ko/9.3.0/api/jdbc.html#jdbc-connection-conf

DB 접속 드라이버 : https://www.cubrid.org/manual/ko/9.3.0/api/index.html

- 스키마 및 데이터 이관

마이그레이션 참고자료 http://www.cubrid.com/index.php?mid=faq&category=3794207

 

4) SQL 전환

현재 사용 중인 SQL 문장을 CUBRID에서 사용가능한 형태로 변환합니다. 표준 SQL 만을 사용한다면 문제가 없지만, 특정 DBMS를 사용하는 과정에서 개발자에게 편리한 형태의 비표준 SQL을 사용하거나, 성능 개선 과정에서 비표준 SQL을 사용할 수 있습니다. 따라서 이러한 비표준 SQLCUBRID에서 지원하는 SQL 로 변환을 해주어야 합니다.

블로그_03.JPG

또한 SQL 의 성능을 위해 CUBRID에서 제공하는 기능들을 활용할 수 있습니다. 그러나 이관 단계에서 성능까지 고려하여 변환을 하다 보면 이관 작업의 진행이 느려지게 되므로, 성능적인 부분에 대하여 간단히 조정할 수 있는(예를 들어 페이징 처리) 부분을 제외하고는 CUBRID에서 에러 없이 수행되는 수준으로만 변환 작업을 진행 하도록 합니다.

CUBRID 예약어 : https://www.cubrid.org/manual/ko/9.3.0/sql/keyword.html


- Stored Procedure 이관

PL/SQLORACLE에서 개발하고 저작권을 가지고 있는 스크립트의 하나입니다. CUBRID에서는 저작권 이슈등의 문제로 PL/SQL 대신, 개발자들이 사용하는 언어 중 가장 범용적이며, 일반 응용 프로그램으로의 이식도 수월하도록 하기 위해 JAVA를 이용한 Store Procedure를 제공합니다. 그러므로, 기존 PL/SQL에서 JAVA 로 변환이 필요하게 됩니다. 과거 procedure 는 공통 로직을 이용하므로 개발기간 단축에 도움이 되고, 서버 사이드 수행으로 성능 개선에 도움이 된다고 하였으나, 최근에는 응용 로직 파악의 어려움 및 procedure 수정 시 공통 모듈로 인한 검증이 어려워 적극 사용을 권장하지는 않는 추세 이기도 합니다.

l 프로시져 : JAVA를 이용하여 변환하거나, 응용 프로그램에서 처리합니다.

l 함수 : 함수 내에서 다른 질의 수행이나, 불필요한 공통 처리 부분의 추가 등으로 인하여 성능 저하가 많이 발생할 수 있는 부분입니다. 또한 응용에서 처리할 수 있거나, 조인 질의로 처리할 수 있는 경우가 많으므로 업무에 맞게 응용에서 처리할 수 있도록 수정합니다.


Java 저장 함수/프로시저 https://www.cubrid.org/manual/ko/9.3.0/sql/jsp.html

JAVA SP 사용 시 로그 처리 방법

http://www.cubrid.com/index.php?mid=faq&category=3794206&document_srl=3794688

Windows 환경에서 JAVA SP 사용 utf-8 한글 깨짐 해결

http://www.cubrid.com/index.php?mid=faq&category=3794206&document_srl=3794775



Oracle 대비 CUBRID에 대한 차이점을 표로 도식화해 보았습니다. 참고하세요.

Oracle VS CUBRID 차이점

블로그_04.JPG


혹시, MySQL에서 CUBRID로 전환을 고려하시는 분은 아래 URL을 참조하시면 도움이 될 것 같네요.

http://www.cubrid.com/index.php?mid=faq&category=3794207&document_srl=3794656