[RDBMS / JDBC를 이용해 데이터 처리하기] RDBMS란

Hyunjun Kim·2025년 4월 24일
0

Data_Engineering

목록 보기
51/153

1 RDBMS란

1.1 RDBMS의 정의

Relational Database는 Relational Model(관계형 모델)을 기반으로한 데이터베이스를 의미한다.
RDBMS는 Relational Database Management System이다. RDB를 이용할 수 있는 총제적인 시스템을 말한다.
RDB 기능 뿐만 아니라 Transaction, Stored Procedure 같은 기능들을 제공한다.

Relational Model은 다음과 같은 특징을 가진다.

  • 데이터를 row와 column으로 구성된 테이블 형태로 표현한다
  • 각 row는 구분할 수 있는 unique (primary) key를 가진다. PK(Primary)라고 한다.
  • 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의 활용: 테이블 모델링 방법

1. 대상의 속성 정리

  • 표현하고자 하는 대상(entity)이 어떤 속성(attribute)을 가지는지 정리한다.
  • 예: 사용자 → 이름, 이메일, 생년월일 등

2. 테이블 정의

  • 개념적으로 동일한 대상은 하나의 테이블로 정의한다.
  • 정리한 속성을 각각 컬럼(column)으로 나열한다.
  • 각 컬럼의 데이터 타입을 명시한다.
  • 각 row를 유일하게 구분할 수 있는 기본키(PK)를 선택하거나 새로 생성한다.

3. 관계 정의 (Foreign Key)

  • 어떤 테이블에서 다른 테이블의 속성이 필요한 경우 외래키(FK)를 통해 연결한다.
  • FK는 참조 대상 테이블의 PK 또는 Unique Key여야 한다.

4. 데이터 라이프사이클 및 활용 방식 고려

  • 데이터의 생성, 갱신, 삭제 시점과 활용 목적을 고려하여 모델을 재검토한다.

    • 데이터는 언제 생성되고 업데이트되며 삭제되는가?
    • 누가 언제 어떻게 데이터를 조회/분석할 것인가?
    • 조회 빈도, 분석 범위, 데이터 양은 어느 정도인가?
  • 이 검토를 통해 다음과 같은 조정이 필요할 수 있다:

    • 테이블을 분할하거나 병합
    • 인덱스 추가
    • 정규화 또는 비정규화 조정
    • 성능 병목 요소 개선

테이블 모델링은 일회성이 아니라, 시스템 요구사항과 데이터 사용 패턴에 따라 지속적인 재검토와 개선이 필요하다.

1.3 RDBMS의 종류들

1.3.1 Oracle

최초의 프로토타입은 IBM에서 연구성으로 만들어졌다. 실제 사용가능한 신뢰있는 RDBMS시스템은 Oracle에서 만들었다. 그 이후로 RDBMS가 대중화 되고 나서도 Enterprise 용으로 가장 많이 쓰이는 RDBMS가 Oracle의 데이터베이스이다. RDMBS 기술과 관련해서는 Oracle이 산업을 이끌어왔고 표준도 다수 만들었다.

  • 참고: Oracle SQL은 표준 SQL이 아니다.

다른 RDMBS와 비교해서 Oracle RDBMS가 우위를 가지고 있는 대표적인 장점은 다음과 같다.

  1. 신뢰성
  2. 속도
  3. 다양한 기능들

Oracle은 오픈소스로는 공개되지 않아서, 오픈소스에는 없지만 Oracle에만 동작하는 기능들이 꽤 있다.
현재는 오픈소스로도 기업형 소프트웨어를 충분히 만들 수 있지만, 그동안의 쌓인 노하우, 신뢰성, 매뉴얼, 기존 고객들 관성 등의 이유로 아직도 압도적으로 기업에서 많이 사용하는 RDBMS이다.

거의 유일한 단점은 비싸다는 것이다.

1.3.2 MySQL

오픈소스로 구현된 RDBMS중에서 가장 많이 사용되는 데이터베이스이다. Oracle에서 있던 SQL, 기능들을 지원하는데 강점이 있다. 하지만 모두 구현되지는 않았고, 아키텍처상의 이유로 비슷하지만 다르게 구현한 기능도 많다.
오픈소스를 사용하는 회사들 중에서는 MySQL이 역사가 오래되고 Oracle과 유사한 부분이 많기 때문에 MySQL로 노하우를 쌓고 있는 회사들이 많다.

SaaS형으로 제공하는 RDBMS에서도 MySQL 버전이 가장 활용도가 높다.

1.3.3 PostgreSQL

분석에 특화된 RDBMS이다. 분석을 위한 편리한 기능들을 SQL에서 사용할 수 있는 점이 가장 큰 장점이다. 이 때문에 PostreSQL에서 동작하지만 다른 RDBMS에서 동작하지 않는 키워드들이 꽤 많다.

초기에는 안정성, scale과 관련된 기능들이 부족했지만, 시간이 많이 지나면서 MySQL 못지 않게 관련된 기능들이 좋아졌다. 하지만 인식 때문에 큰 규모의 시스템에서는 많이 쓰이지 않고 있다.

1.3.4 MariaDB

MySQL로부터 fork되어 나온 Database이다. 왜 이미 오픈소스인 MySQL을 fork하는지 의문이 들 것이다. 여기에는 상업적인 배경이 있다. 2008년에 MySQL의 메인스폰서였던 Sun microsystem을 Oracle 이 인수하면서, MySQL의 주축 개발자들이 Oracle에 의해서 오픈소스인 MySQL의 개발이 제한받을 것을 걱정했다. RDBMS시장에서 가장 높은 점유율을 가진 회사가 Oracle인데, Sun microsystem을 인수한 김에 Oracle의 판매를 위해서 MySQL을 개발에 의도적으로 안좋은 영향을 미치지 않을까하는 우려였다. 이 때문에 주축 개발자들이 인수전 시점에 MySQL을 fork하고 대부분 MySQL의 기능을 호환하는 식으로 개발한 데이터베이스이다.

1.3.5 Cloud Vendor Managed DBMS

AWS, Azure, GCP 등 클라우드 업체에서 제공하는 관리형 데이터베이스 제품들이 있다. 초기에는 오픈소스 버전 구현체들의 Wrapper로 운영상의 편의기능을 추가한 제품이었다. 시간이 지나면서 클라우드 운영에서 쌓은 노하우로 클라우드 운영상에서 효율이 좋은 아키텍처로 자체적으로 RDBMS를 만들기도 한다. Amazon Aurora DB, Azure SQL Database 등이 대표적이다. 대부분 MySQL 또는 PostgreSQL의 SQL을 호환한다.


1.4 실습에서 사용하는 RDBMS - MySQL 8

실습에서는 MySQL 8.x 버전을 사용한다.(minor버전은 무관)
MySQL을 사용하는 이유는 무료로 사용할 수 있는 오픈소스 중에서 가장 예제가 많고, 가장 안정적이고, 서비스로 사용할 수 있는 선택지가 많기 때문이다. 관리형 서비스로도 여러 회사에서 많은 제품이 나와있어서, 혼자서 개발해서 서비스를 출시한다고 했을 때도 가장 안정적인 선택지이다.

MySQL 은 5.7버전이 오랜기간 가장 많이 사용되었고, 그 이후 8.0 이상 버전을 사용한다. 5.7과 8.0 사이의 버전은 안정성이나 호환성 문제 때문에 기업에서는 사용하지 않는 경우가 많다.

오라클을 주로 사용했던 개발자라면, ‘이런 기능이 없어?’ 또는 ‘문법이 왜 달라?’ 할 때가 종종 있기는 하다.

profile
Data Analytics Engineer 가 되

0개의 댓글