Tibero DB

문지원(JiwonMoon)·2022년 12월 12일
0

Tibero 란?

티맥스 소프트에서 2006년에 개발한 한국산 DBMS 이다.

티베로의 데이터베이스 모델은 RDBMS 이며, 데이터베이스 클러스터링, 병렬 쿼리 옵티마이저 기능을 제공하여 고가용성 및 고성능을 보장한다.

또한 SQL 들을 포함해서 오라클의 제품과 거의 동일한 호환성을 제공함에 따라 오라클 DB의 대안으로 주장되고 있다.

그러므로 독단적인 Tibero 의 학습보다는 오라클사의 DBMS를 학습 후 사용이유와 차이점을 확인하면서 사용하면 된다.

사용 이유

티베로는 실제 오라클 DB를 참고해서 만든 DB이다.
그런데 오라클을 쓰지 않고 티베로를 사용해야할 이유는 오라클을 사용하면 유지 관리 및 라이센스 비용을 연간 $40000 ~ $50000 지불해야 한다.
그에 비해 티베로는 오라클 절반 가격으로 운영하며 특히 한국 기업이라면 직접 유지보수도 가능한 장점이 있다.
즉, 국내 DB로 비용절감 차원에서 많이 사용되는 것

주요 파트너

공공기업 : 경찰청, 국방부, 국민건강보험, 등등

제조업 : 현대, 포스코, lg 화학, 등등

금융 : 삼성생명, 신한은행, 한화생명, 등등

이외 : 인터파크, SK Telecom, 전자랜드, 등등

주요 기능

대용량 데이터를 관리하고 안정적인 비지니스의 연속성을 보장하기 위해 아래와 기능을 갖추고 있다.

  • 분산 데이터베이스 링크
    데이터베이스 인스턴스별로 각각 서로 다른 데이터를 저장하는 기능이다. 이 기능을 통해 원격 데이터베이스에 저장된 데이터를 네트워크를 통해 읽기 및 쓰기를 수행할 수 있다.

또한 이 기능은 다양한 벤더의 DB 제품을 연결하여 읽기 및 쓰기를 수행할 수 있다.

  • 데이터 이중화
    현재 운영 중인 데이터베이스에서 변경된 모든 내용을 Standby DB로 복제하는 기능이다. 즉, 네트워크를 통해서 변경 로그(Change log)만 전송하면 Standby DB에서 데이터에 적용하는 방식이다.

  • 데이터베이스 클러스터
    여러 개의 데이터베이스 인스턴스가 공유 디스크를 이용하여 동일한 데이터베이스를 공유할 수 있다. 이때 각 데이터베이스 인스턴스는 내부의 데이터베이스 캐시(Database cache) 사이의 일관성을 유지하는 기술이 매우 중요하다. 따라서 이러한 기술도 Tibero Active Cluster에 포함하여 제공하고 있다. 보다 자세한 내용은 “제10장 Tibero Active Cluster”를 참고한다.

  • 병렬 쿼리 처리
    기업의 데이터 크기는 계속적으로 증가하고 있다. 대용량 데이터를 처리하기 위해 서버의 리소스를 최대한 활용할 수 있는 병렬 처리 기술이 필수적으로 요구되고 있다.

Tibero는 이러한 요구사항에 맞추어 온라인 트랜잭션 처리(On-Line Transaction Processing, 이하 OLTP) 환경에 최적화된 기능을 제공할 뿐만 아니라 OLAP(Online Analytical Processing) 환경에 최적화된 SQL 병렬 처리 기능을 제공하고 있다. 이로 인해 쿼리는 빠른 응답 속도로 수행되며 기업의 빠른 의사 결정을 돕는다.

  • 쿼리 최적화기(Optimizer)
    쿼리 최적화기는 스키마 객체의 통계 정도를 바탕으로 다양한 데이터 처리 경로들을 고려하여 어떤 실행 계획이 가장 효율적인지를 결정한다.

쿼리 최적화기는 논리적으로 다음과 같은 단계를 통해 수행된다.

1. 주어진 SQL 문을 처리하는 다양한 실행 계획들을 만들어 낸다.

2. 데이터의 분산도에 대한 통계 정보와 테이블, 인덱스, 파티션 등의 특징을 고려하여 각각의 실행 계획의 비용을 계산한다. 여기서 비용이란 특정 실행 계획을 수행하는 데 필요한 상대 시간을 나타내고, 최적화기는 I/O, CPU, 메모리 등의 컴퓨터 자원을 고려하여 그 비용을 계산해 낸다.

3. 실행 계획들의 비용을 비교하여 가장 비용이 작은 계획을 선택한다.

쿼리 최적화기의 주요 기능은 다음과 같다.

- 최적화 목표

사용자는 최적화기의 최종 목표를 바꿀 수도 있는데 다음의 두 가지 목표를 선택할 수 있다.

전체 처리 시간: ALL_ROWS 힌트를 사용하면 최적화기는 마지막 row까지 얻어내는 시간을 최대한 단축하도록 최적화한다.
최초 반응 시간: FIRST_ROWS 힌트를 사용하면 최적화기는 첫 번째 row를 얻어내는 시간을 최대한 단축하도록 최적화한다.

- 질의 변형

질의의 형태를 바꿔서 더 좋은 실행 계획을 만들 수 있도록 한다. 질의 변형의 예에는 뷰 병합, 부질의 언네스트, 실체화 뷰의 사용 등이 있다.

- 데이터 접근 경로 결정

데이터를 데이터베이스로부터 꺼내오는 작업은 전체 테이블 스캔, 인덱스 스캔, rowid 스캔 등의 다양한 방법을 통해서 수행될 수 있다. 각 방법마다 필요한 데이터의 양이나 필터링의 형태 등에 따라 장단점이 있어서 질의에 따라 최적의 접근 방식이 다르다.

- 조인 처리 방식 결정

여러 테이블에서 데이터를 꺼내오게 되는 조인의 경우 최적화기는 조인의 순서와 방법을 결정해야 한다. 여러 테이블 간의 조인일 때 어떤 테이블을 먼저 조인할지에 대한 순서와 각각의 조인에 있어서 중첩 루프 조인, 합병 조인, 해시 조인 등의 다양한 방법 중 어떤 것을 사용할지가 실행 속도에 큰 영향을 미치게 된다.

- 비용 추정

각각의 실행 계획에 대해 비용을 추정한다. 비용 추정을 위해서 필요한 predicate의 선택도나 각 실행 단계에서 데이터의 row 수 등을 통계 정보를 사용해서 추정하고 이를 바탕으로 각 단계에서의 비용을 추정한다.

지원하는 언어

티베로에서 지원하는 언어는 C,C#,C++,Cobol,Java,Objective-C,Perl,PHP,Python,Ruby,Visual Basic 등이 있다.

사용 방법

  1. tbboot : Tibero 를 구동
  2. tbdown : Tibero 를 중지

더 자세한 사항은 여기를 참고

References (참고 자료)

0개의 댓글