[DB] RDB

주재완·2024년 2월 25일
post-thumbnail

Introduction

DB를 입문할 때 가장 먼저 다루는 것이 바로 MySQL, Oracle과 같은 관계형 데이터베이스를 다루게 됩니다. 개략적인 관계형 데이터베이스의 개념에 대해 정리하는 포스팅입니다.

RDB

관계형 데이터베이스(Relational DataBase, RDB)는 데이터를 행과 열로 구성하여 데이터 요소가 서로 관련된 테이블을 형성하는 일종의 데이터베이스입니다.

기본적으로 관계형 데이터베이스에서는 데이터가 모여있는 테이블이 하나가 아닌 여러 개입니다. "관계형"이라는 용어는 이러한 테이블이 서로 관련될 수 있다는 사실에서 유래되었습니다. 이를 연결하는 방법은 기본 키(primary key)와 외래 키(foreign key) 라는 것을 사용합니다.

RDBMS

이 RDB를 관리하는 서비스를 RDBMS(Relational DataBase Management System)이라 합니다.

모든 DB 사용 순위가 있는데, 1~4위까지는 RDBMS인 것을 확인할 수 있습니다. 1위부터 4위까지 간단히 알아보겠습니다.

Oracle


우선 Oracle이라는 것은 자바를 하면서도 들어본 적이 있을겁니다. 바로 자바를 소유하고 있는 회사 이름입니다. 이 회사는 Oracle이라는 대표적인 RDMS 역시 소유하고 있습니다.

Oracle은 기존 관계형 모델을 상속, 다형성 등과 같은 객체 관례형 데이터 관리 시스템(ORDBMS)으로 확장시켜서 복잡한 비즈니스 모델들을 저장할 수 있습니다. 이는 규모가 크고 대용량 설비에 좀 더 적합하기 때문에 예전부터 많은 기업들이 Oracle을 사용해왔습니다. 또한 여러 OS에서 호환성이 좋습니다.

MySQL


기본적으로 MySQL은 오픈소스입니다. 무료로도 사용가능하지만 기업용 라이센스 역시 판매하는데, 이 역시도 가격대는 낮은편입니다. 이 역시도 오라클리 지원하는 서비스이고 여러 OS에서 호환성이 좋고 서버가 매우 빠르고 안정적이고 사용하기가 쉬운편입니다.

Microsoft SQL Sever


이름에서 알 수 있듯 마이크로소프트에서 만든 데이터베이스입니다. C, C++로 작성되어 있고 SQL Server는 Microsoft Azure Cloud의 일부입니다. 다만, OS 호환성이 그렇게 좋지는 않습니다.

PostgreSQL


PostgreSQL은 복잡한 데이터 워크로드를 안전하게 저장하고 데이터 무결성, 강력한 기능 세트, 확장성에 있어서 큰 장점을 가지고 있는 RDMS입니다. 거기다가 오픈 소스인데다 성능과 혁신적인 솔루션을 지속적으로 제공하고 있기에 RDMS중 차지하고 있는 비중이 높아지고 있습니다.

관계의 종류

RDB의 장점은 다른 데이블과 관계를 나타낼 수 있다는 것입니다. 관계의 종류는 크게 3가지가 있는데 이는 아래와 같습니다.

일대일(One-to-One)

일대일 관계는 한 테이블에 있는 한 행이 다른 테이블에 있는 한 행과 관계를 맺는 것입니다. 예를 들어 주민등록증은 단 한 사람에게 대응되고, 한 사람은 단 하나의 주민등록증만 가질 수 있는 것이 그 예입니다.

일대다(One-to-Many)

일대일 관계는 한 테이블에 있는 한 행이 다른 테이블에 있는 여러 행과 관계를 맺는 것입니다. 예를 들어 자손관계에 있어서 부모는 자식이 여러명일 수 있지만, 자식은 부모가 여러명일 수 없는 것이 그 예입니다.

다대다(Many-to-Many)

일대일 관계는 한 테이블에 있는 여러 행이 다른 테이블에 있는 여러 행과 관계를 맺는 것입니다. 예를 들어 대학생들이 여러 강의를 수강할 수 있고, 각 강의는 여러 학생들을 받는 것이 그 예입니다.

RDB의 장점

구조화된 데이터

RDB의 테이블 기반 구성은 일관된 구조를 가지며 테이블의 열과 행에 쉽게 매핑될 수 있는 구조화된 데이터를 처리하는 데 적합합니다.

데이터 무결성

RDB는 기본 키와 외래 키를 사용하여 관련 데이터 간의 일관된 관계를 유지함으로써 데이터 불일치 및 중복 가능성을 줄입니다.

확장성

RDB는 대량의 구조화된 데이터를 처리할 수 있으며 증가하는 데이터 요구 사항을 수용하도록 확장할 수 있습니다.

쿼리

RDB의 경우 SQL(Structured Query Language)을 사용하여 관계형 데이터베이스를 쿼리, 업데이트 및 관리하는 데 사용되며 데이터에 액세스하고 조작하는 강력하고 표준화된 방법을 제공합니다.

RDB의 한계

복잡성

RDB 설정 및 관리는 대용량 데이터 처리의 경우 복잡할 수 있습니다. 데이터베이스를 관리, 조정, 최적화하려면 높은 기술적 지식이 필요합니다.

비용

RDB는 무료도 존재하지만, 경우에 따라 라이센스 비용과 필요한 계산 및 저장 리소스 측면에서 비용이 많이 들 수 있습니다.

고정 스키마

우선 스키마(schema)는 다음과 같습니다.

  • 데이터베이스에 표현하려는 사람이 생각하는 개념이나 정보 단위인 개체(Entity)
  • 개체의 속성을 나타내는 속성(Attribute)
  • 개체들 사이의 관계(Relationship)
  • 그리고 이 모든 것의 제약조건에 대한 것을 기술해 놓은 것 입니다.

RDB는 데이터 구성을 위해 엄격한 스키마를 따르므로 스키마 변경은 시간이 많이 걸리고 복잡할 수 있습니다.

구조화되지 않은 데이터 처리

RDB는 관계형 구조가 구조화된 데이터에 최적화되어 있습니다. 멀티미디어 파일, 센서 데이터와 같은 구조화되지 않은 데이터를 처리하는 데 적합하지 않습니다.

수평 확장성

RDB는 NoSQL 데이터베이스만큼 수평 확장이 쉽지 않습니다.

참고

profile
안녕하세요! 언제나 탐구하고 공부하는 개발자, 주재완입니다.

0개의 댓글