[RDB] RDBMS란
1.1 RDBMS의 정의 (Relational Database Management System)
Relational Model(관계형 모델)을 기반으로한 데이터베이스를 의미하며, RDB를 이용할 수 있는 총제적인 시스템을 말한다. RDB 기능 뿐만 아니라 Transaction, Stored Procedure같은 기능들을 제공한다.
Relational Model은 다음과 같은 특징을 가진다.
- 데이터를 row와 column으로 구성된 테이블 형태로 표현한다.
- 각 row는 구분할 수 있는 unique key를 가지며 PK(Primary key)라고 한다.
- row의 unique key를 이용해서 다른 테이블의 row로 연결될 수 있다.
- 다른 테이블은 해당 row를 연결(link)할 수 있는 키를 column으로 가질 수 있으며 FK(Foreign Key)라고 한다.
- 이 테이블 형태의 데이터를 조작할 수 있는 Operator를 제공한다.
- PK와 FK를 이용해서 두 테이블 사이의 관계는 one-to-one, one-to-many를 가질 수 있다.
- 중간 테이블을 이용하는 방식으로 many-to-many를 구현할 수도 있다.
1.2 RDBMS의 활용
테이블 모델링하는 방법
- 표현하고자 하는 대상이 가진 속성을 먼저 정리한다.
- 개념적으로 같은 속성을 가진 대상을 하나의 테이블로 정의한다.
- 속성을 모두 column으로 나열한다.
- 각 column의 데이터 타입을 정한다.
- 유일한 값을 구분할 PK의 조건이 되는 column을 선택하거나 만든다.
- 어떤 대상을 표현하는데 다른 대상의 속성이 필요하다면 FK로 연결한다.
- FK는 연결하려는 테이블의 PK 또는 unique key만 될 수 있다.
- 모델링한 결과를 데이터의 라이프사이클, 활용 방식에 따라서 재 검토한다. (etc 분석, 성능 등을 위해 재 검토과정 필요)
1.3 RDMBS의 종류들
1.3.1 Oracle
최초의 프토타입은 IBM에서 연구성으로 만들어졌다. 실제 사용가능한 신뢰있는 RDBMS시스템은 Oracle에서 만들었다. 그 이후로 RDBMS가 대중화 되고 나서도 Enterprise용으로 가장 많이 쓰이는 RDMS가 Oracle의 데이터베이스이다. RDBMS 기술과 관련해서는 Oracle이 산업을 이끌어왔고 표준도 다수 만들었다.
(참고: Oracle SQL은 표준 SQL이 아님)
다른 RDBMS와 비교해서 Oracle RDBMS가 우위를 가지고 있는 대표적인 장점은 다음과 같다.
- 신뢰성
- 속도
- 다양한 기능들
Oracle은 오픈소스로는 공개되지 아니지만 Oracle에만 동작하는 기능들이 꽤 있다.
현재는 오픈소스로도 기업형 소프트웨어를 충분히 만들 수 있지만, 그동안의 쌓인 노하우, 신뢰성, 매뉴얼, 기존 고객들 관성 등의 이유로 아직도 압도적으로 기업에서 많이 사용하는 RDBMS이다. (신뢰성이 중요한 은행권에서는 99% 오라클을 사용하고있다고 봐야됨)
하지만 비용이 상당히 비싼 편이다.
1.3.2 MySQL
오픈소스로 구현된 RDBMS중에서 가장 많이 사용되는 데이터베이스이다. Oracle에서 있던 SQL, 기능들을 지원하는데 강점이 있다. 하지만 모두 구현되지는 않았고, 아키텍처상의 이유로 비슷하지만 다르게 구현한 기능도 많다.
오픈소스를 사용하는 회사들 중에서는 MySQL이 역사가 오래되고 Oracle과 유사한 부분이 많기 대문에 MySQL로 노하우를 쌓고 있는 회사들이 많다. *SaaS형으로 제공하는 RDBMS에서도 MySQL 버전이 활용도가 높다.
*SaaS(서비스형 소프트웨어) : 클라우드 기반의 소프트웨어 제공 모델
1.3.3 MySQL
분석에 특화된 RDBMS이다. 분석을 위한 편리한 기능들을 SQL에서 사용할 수 있는 점이 가장 큰 장점이다. 이 때문에 PostreSQL에서 동작하지만 다른 RDBMS에서 동작하지 안휴는 키워드들이 꽤 많다.
초기에는 안정성, scale과 관련된 기능들이 부족했지만, 시간이 많이 지나면서 MySQL못지 않게 관련된 기능들이 좋아졌다. 하지만 인식 때문에 큰 규모의 시스템에서는 많이 쓰이지 않고 있다.
1.3.4 MariaDB
MySQL로부터 fork되어 나온 Database이다. 왜 이미 오픈소스인 MySQL을 fork하는지 의문이 들 것이다. 여기에는 상업적인 배경이 있다. 2008년 MySQL 메인스폰서(Sun microsystem)이 Oracle에 인수되면서, MySQL의 주축 개발자들이 폐쇄적인 성격이 있는 Oracle에서 오픈소스인 MySQL의 개발이 제한받을 것을 걱정했다. Oracle 사용 점유율을 위해 영향을 미치지 않을까하는 우려였다. 이 때문에 주축 개발자들이 인수전 시점에 MySQL을 fork하고 대부분 MySQL의 기능을 호환하는 식으로 개발한 데이터베이스이다.
1.3.5 Cloud Vendor Managed DBMS
AWS, Azure, GCP 등 클라우드 업체에서 제공하는 관리형 데이터베이스 제품들 있다. 초기에는 오픈소스 버전 구현체들의 Wrapper로 운영상의 편의기능을 추가한 제품이었다. 시간이 지나면서 클라우드 운영에서 쌓은 노하우로 클라우드 운영상에서 효율이 좋은 아키텍처로 자체적으로 RDBMS를 만들기도 한다. Amazon Aurora DB, Azure SQL Database 등이 대표적이다. 대부분 MySQL또는 PostgreSQL의 SQL을 호환한다.