본문 바로가기

IT관련

오라클 멀티테넌트 DB 기본개념 정리 (Oracle Multi-Tenant DB Basics)

오라클 MultiTenant 기능은 Oracle 12c 버전에서 처음 소개되었습니다. 현재는 Oracle DBMS 버전이 18c, 19c, 20c 까지 나온 상태라 이 기능도 꽤 연륜이 쌓였다고 할 수 있겠습니다.

 

개념은 그닥 복잡하지 않습니다. "DB 안에 여러 DB들이 들어가 있는 구조" 입니다. ^^

 

 

Multi-Tenant 라는 단어에서 Multi 는 "여러개" 의 뜻이고, Tenant 는 "세입자" 라는 뜻입니다.

여러 세입자(DB)가 큰 집에 옹기종기 모여산다는 개념^^ 되겄심다.

 

클라우드(Cloud)에 대해서 공부 좀 하신 분들은 쉽게 이해가 가는 구조입니다.

원래 클라우드라는 게 여러 서비스/업무/플랫폼 등을 사용자는 모르게, 한곳(데이터센터?)에 잘 담아서 서비스 하는 개념입니다. (너무 대충 성의없이 얘기했나?? ㅎㅎ)

 

보통 클라우드라고 하면 인터넷망을 통해 접근하는 것만 생각하는데, 이런 것을 "Public Cloud" 라고 하고,

우리 전산실내에서 폐쇄적으로(인터넷망을 거치지 않고) 구축한 클라우드를 "Private Cloud" 라고 구분하고 있습니다.

 

이 멀티테넌트의 개념은 Private Cloud 형태를 DBMS 내에 구축했다고 보면 되겠습니다.

 

그럼, 뭣허러 이렇게 쓰자는 거지??

뭔가 좋은 점이 있으니 이런 아키텍쳐가 만들어졌을 겁니다. ㅎㅎ 당연히 좋은 점이 있습니다.

 

우리 전산실에 싱글DB 10개가 있다고 생각해 보죠~

각 싱글DB들은 DB서버(하드웨어) 하나씩을 차지하고 있습니다.

각각의 서버 CPU, Memory 사용량을 보면 거의 대부분 10~30% 정도 밖에 사용을 안합니다.

이유는 당연히 100% 다 쓰면 시스템이 서버리거나 거북이처럼 기어가니까 만일의 사태에 대비해 항상 여유빵빵하게 시스템을 운영하는 것이지요.

 

결국, 각 DB서버들은 한달에 한번? 또는 일년에 한번? 정도만 시스템을 많이 사용하고 대부분의 경우는 70% 정도의 자원이 항상 놀고 있는 것이지요. 얘네들을 다 합쳐놓으면? ㅎㅎ

 

이 경우는 만일의 사태를 대비한 여유분을 무식하게 70% x 10 = 700% 를 다 가져갈 필요가 없겠죠?

반절 수준인 350% 정도만 가져가도 충분합니다. 그러면, 전체적으로 가져가야(운영해야) 하는 시스템자원 양이 확 줄게됩니다.

비용 세이브~~

 

이게 바로 콘솔리데이션(Consolidation)의 효과이죠~~

 

이것을 쉽게 할수 있도록 한 것이 멀티테넌트 기능 되겠습니다.

 

(출처: 오라클 다큐먼트)

 

위 그림에서는 hrpdb 와 salespdb 의 2개의 DB가 있습니다.

얘네들은 MYCDB 라는 큰 DB 안에 들어있는 구조입니다.

 

밖에서(시스템상에서) 보면 달랑 MYCDB 라는 DB 1개만 보입니다.

하지만, DB를 사용하는 사용자 입장에서 보면 hrpdb 와 salespdb 2개가 별개로 각각 존재하는 것처럼 보입니다.

 

시스템상으로는 1개의 DB 이기때문에 패치, 백업 등의 작업을 통으로 1번만 해주면 됩니다. 관리가 수월해지죠~

hrpdb 에서 salespdb 를 직접 들여다보거나 데이터를 변경하거나 할 수 없습니다. 논리적으로는 서로 다른 DB인 셈이기 때문입니다.

 

hrpdb, salepdb 와 같이 셋방살이 하고 있는 세입자(tenant) DB들을 유식한 말로 PDB (Pluggable DB) 라고 합니다.

MYCDB 처럼 hrpdb, salespdb 를 담고 있는(contain) 집주인 DB를 유식한 말로 CDB (Container DB) 라고 합니다.

 

Container 라는 단어는 느낌이 팍 오기 때문에 설명이 필요없고...  Pluggable ?  이건 뭐지??

이게 나중에 좀더 빠져들어가 보면 알 수 있는데, DB를 USB 꼽듯이 꼽았다(Plug) 뽑았다(Unplug) 하기가 매우 쉽기 때문에 이런 이름이 붙었다고 하네요~

 

아무튼, 결론적으로 Multi-Tenant 는 DB 통합, Private Cloud 구축에 아주 유용한 기능이라고 할 수 있겠습니다.

 

아~ 이 기능은 Oracle DB들만 가능합니다. 저 컨테이너 DB 에 MySQL, DB2, Sybase 등 아무 DB나 막 갖다꽂을 수는 없습니다.