Relational Database는 Relational Model(관계형 모델)을 기반으로한 데이터베이스를 의미한다.
RDBMS는 Relational Database Management System이다. RDB를 이용할 수 있는 총제적인 시스템을 말한다.
RDB 기능 뿐만 아니라 Transaction, Stored Procedure 같은 기능들을 제공한다.
Relational Model은 다음과 같은 특징을 가진다.
데이터의 생성, 갱신, 삭제 시점과 활용 목적을 고려하여 모델을 재검토한다.
이 검토를 통해 다음과 같은 조정이 필요할 수 있다:
테이블 모델링은 일회성이 아니라, 시스템 요구사항과 데이터 사용 패턴에 따라 지속적인 재검토와 개선이 필요하다.
최초의 프로토타입은 IBM에서 연구성으로 만들어졌다. 실제 사용가능한 신뢰있는 RDBMS시스템은 Oracle에서 만들었다. 그 이후로 RDBMS가 대중화 되고 나서도 Enterprise 용으로 가장 많이 쓰이는 RDBMS가 Oracle의 데이터베이스이다. RDMBS 기술과 관련해서는 Oracle이 산업을 이끌어왔고 표준도 다수 만들었다.
다른 RDMBS와 비교해서 Oracle RDBMS가 우위를 가지고 있는 대표적인 장점은 다음과 같다.
Oracle은 오픈소스로는 공개되지 않아서, 오픈소스에는 없지만 Oracle에만 동작하는 기능들이 꽤 있다.
현재는 오픈소스로도 기업형 소프트웨어를 충분히 만들 수 있지만, 그동안의 쌓인 노하우, 신뢰성, 매뉴얼, 기존 고객들 관성 등의 이유로 아직도 압도적으로 기업에서 많이 사용하는 RDBMS이다.
거의 유일한 단점은 비싸다는 것이다.
오픈소스로 구현된 RDBMS중에서 가장 많이 사용되는 데이터베이스이다. Oracle에서 있던 SQL, 기능들을 지원하는데 강점이 있다. 하지만 모두 구현되지는 않았고, 아키텍처상의 이유로 비슷하지만 다르게 구현한 기능도 많다.
오픈소스를 사용하는 회사들 중에서는 MySQL이 역사가 오래되고 Oracle과 유사한 부분이 많기 때문에 MySQL로 노하우를 쌓고 있는 회사들이 많다.
SaaS형으로 제공하는 RDBMS에서도 MySQL 버전이 가장 활용도가 높다.
분석에 특화된 RDBMS이다. 분석을 위한 편리한 기능들을 SQL에서 사용할 수 있는 점이 가장 큰 장점이다. 이 때문에 PostreSQL에서 동작하지만 다른 RDBMS에서 동작하지 않는 키워드들이 꽤 많다.
초기에는 안정성, scale과 관련된 기능들이 부족했지만, 시간이 많이 지나면서 MySQL 못지 않게 관련된 기능들이 좋아졌다. 하지만 인식 때문에 큰 규모의 시스템에서는 많이 쓰이지 않고 있다.
MySQL로부터 fork되어 나온 Database이다. 왜 이미 오픈소스인 MySQL을 fork하는지 의문이 들 것이다. 여기에는 상업적인 배경이 있다. 2008년에 MySQL의 메인스폰서였던 Sun microsystem을 Oracle 이 인수하면서, MySQL의 주축 개발자들이 Oracle에 의해서 오픈소스인 MySQL의 개발이 제한받을 것을 걱정했다. RDBMS시장에서 가장 높은 점유율을 가진 회사가 Oracle인데, Sun microsystem을 인수한 김에 Oracle의 판매를 위해서 MySQL을 개발에 의도적으로 안좋은 영향을 미치지 않을까하는 우려였다. 이 때문에 주축 개발자들이 인수전 시점에 MySQL을 fork하고 대부분 MySQL의 기능을 호환하는 식으로 개발한 데이터베이스이다.
AWS, Azure, GCP 등 클라우드 업체에서 제공하는 관리형 데이터베이스 제품들이 있다. 초기에는 오픈소스 버전 구현체들의 Wrapper로 운영상의 편의기능을 추가한 제품이었다. 시간이 지나면서 클라우드 운영에서 쌓은 노하우로 클라우드 운영상에서 효율이 좋은 아키텍처로 자체적으로 RDBMS를 만들기도 한다. Amazon Aurora DB, Azure SQL Database 등이 대표적이다. 대부분 MySQL 또는 PostgreSQL의 SQL을 호환한다.
실습에서는 MySQL 8.x 버전을 사용한다.(minor버전은 무관)
MySQL을 사용하는 이유는 무료로 사용할 수 있는 오픈소스 중에서 가장 예제가 많고, 가장 안정적이고, 서비스로 사용할 수 있는 선택지가 많기 때문이다. 관리형 서비스로도 여러 회사에서 많은 제품이 나와있어서, 혼자서 개발해서 서비스를 출시한다고 했을 때도 가장 안정적인 선택지이다.
MySQL 은 5.7버전이 오랜기간 가장 많이 사용되었고, 그 이후 8.0 이상 버전을 사용한다. 5.7과 8.0 사이의 버전은 안정성이나 호환성 문제 때문에 기업에서는 사용하지 않는 경우가 많다.
오라클을 주로 사용했던 개발자라면, ‘이런 기능이 없어?’ 또는 ‘문법이 왜 달라?’ 할 때가 종종 있기는 하다.