RDBMS (관계형 데이터베이스 시스템) 란?
RDBMS (관계형 데이터베이스 시스템) 란?
Relational Database Management System
서로 관련된 데이터 지점에 대한 접근을 저장 및 제공하는 DB유형이다.
- 데이터를 테이블에 직관적으로 간단하게 나타내는 관계형 모델을 기반으로 한다.
- 테이블의 각 행은 key 라는 고유한 ID가 포함된 레코드이다.
- 테이블의 각 열은 데이터 속성이 들어있으며, 각 레코드에는 일반적으로 각 속성에 대한 값이 있어서 데이터 포인트 간의 관계를 손쉽게 설정할 수 있다.
RDB(관계형 데이터베이스) 구조 (논리적 구조 vs 물리적 구조)
Relational Database
- 데이터 테이블, 뷰, 인덱스(논리 데이터 구조) ⇒ 물질적인 스토리지 구조와 분리되어있음
⇒ DB 관리자는 논리적 구조로 해당 데이터에 대한 접근에 영향을 주지 않고 물리적 데이터 저장소를 관리할 수 있다.
Ex) DB 파일 이름을 변경해도 내부 저장된 테이블의 이름은 변경되지 않음
- DB 작업은 애플리케이션에서 DB 데이터 및 구조를 조작할 수 있도록 명확하게 정의된 작업임
- 논리적 작업 : 애플리케이션이 필요한 콘텐츠를 지정할 수 있음
- 물리적 작업 : 데이터의 접근 방법을 결정한 다음 작업을 수행함
- RDB는 특정한 무결성 규칙을 따른다.Ex) 무결성 규칙은 DB에 잘못된 정보가 입력될 가능성을 제거하기 위해 테이블에서 중복 행을 허용하지 않도록 지정할 수 있다.
- ⇒ 데이터의 정확성과 접근 가능성을 항상 보장한다.
관계형 모델
최초 DB : 모든 애플리케이션이 자체적인 고유 구조에 데이터를 저장함
⇒ 데이터를 사용하는 애플리케이션을 빌드하고 싶을 때, 개발자가 필요한 데이터를 찾기 위해 특정 데이터 구조에 대해 많이 알아야만 했음 (비효율적, 유지 관리 까다로움, 성능 최적화에 어려움)
! RDB 모델은 위 다중 임의 데이터 구조의 문제를 해결하도록 설계되었다.
- 모든 애플리케이션에서 사용 가능한 표준적인 데이터 표시 및 쿼리 방식을 제공한다.
⇒ RDB 모델의 가장 큰 장점인 테이블 사용 (정형 정보를 저장 및 접근하는 직관적, 효율적, 유연한 방법)
- SQL(Structured Query Language : 구조화된 쿼리 언어) 를 사용하여 DB 데이터를 기록 및 쿼리한다.
⇒ 모든 DB 쿼리의 성능을 보다 손쉽게 향상시킬 수 있게 해준다. (다른 접근 방식들은 개별 쿼리를 정의해야하는 단점이 있다)
RDB 예시
EX) 소규모 기업에서 제품 주문 처리에 사용하는 두개의 테이블
- 고객 정보 테이블
- 고객 이름
- 주소
- 배송
- 청구서
- 전화번호
- 기타 연락처
⇒ 정보의 각 속성(비트)는 자체 열에 있으며, DB는 각 행에 고유 ID(key)를 할당한다.
- 고객 주문 테이블
- 주문 고객의 ID
- 주문 제품
- 수량
- 사이즈 및 색상
⇒ 고객의 이름이나 연락처 정보는 포함되지 않는다.
- 두 테이블의 공통점 : ID 열 (key)
⇒ 이 공통 열로 관계형 DB는 두 테이블 간의 관계를 생성할 수 있다.
EX)
- 회사의 주문처리 어플리케이션 → DB에 주문 제출
- DB가 고객 주문 테이블로 이동 → 주문 정보 가져옴
- 2의 고객 ID를 사용하여 고객 정보 테이블로 이동 → 고객의 청구 및 배송 정보 조회
- 결과적으로 올바른 제품 정보를 가져옴, 고객은 적시에 주문 상품 배송받음, 회사는 대금 받음
RDBMS의 이점
관계형 모델은 광범위한 정보 요구를 해결하기 위해 유형과 규모에 관계 없이 모든 조직에서 사용된다.
RDB는 재고를 추적하고, 전자 상거래 트랜잭션을 처리하고, 엄청난 양의 미션 크리티컬한 고객 정보를 관리하는 데 사용된다. 데이터 포인트를 서로 연결하고 규칙을 기반으로 안전하고 일관된 방식으로 관리하기 위해 필요한 모든 정보에서 관계형 DB를 고려할 수 있다.
- 데이터 일관성
EX) ATM에 돈 입금 → 휴대폰 어플에서 잔액 확인 (이때 데이터가 바로 반영되길 기대함)
(다른 유형의 DB는 대량의 데이터에서도 이정도 수준의 시의적절한 일관성 유지가 어렵다. EX) NoSQL의 ‘최종적인 일관성’ 등 - RDB는 DB의 여러 인스턴스가 항상 동일한 데이터를 갖도록 한다는 점에서 데이터 일관성이 탁월하다.
- 관계형 모델은 애플리케이션과 DB 복사본(인스턴스) 간의 데이터 일관성을 유지하는 데 가장 적합하다.
- 커밋 및 원자성EX) 항상 함께 사용되는 3가지 부품을 추적하는 재고 DB→ 3가지 부품 중 하나라도 가용 상태가 아니면 어떤 부분도 풀링하지 않는다. (⇒ 즉, DB가 커밋을 수행하기 전 A, B, C 부품 모두 가용 상태여야한다.)
- RDB는 A, B, C 부품을 모두 커밋할 수 있는지 확인할 때까지 한 부분에 대한 커밋을 수행하지 않는데, 이러한 다각적 커밋 기능을 ‘원자성’ 이라고 한다. (⇒ 원자성은 DB에서 데이터를 정확하게 유지하고, 비즈니스 규칙이나 규정, 정책을 준수하도록 보장하기 위한 핵심 개념이다)
- → A부품을 재고에서 가져옴, B와 C 부품도 가져와야한다.
- RDB는 커밋 (DB를 영구적으로 변경 하는 것) 에 대한 엄격한 정책을 사용하여, 매우 세분화된 수준에서 비즈니스 규칙 및 정책을 처리한다.
- ACID 속성 및 RDBMS
- 원자성 : 완전한 DB 트랜잭션을 구성하는 모든 요소를 정의함
- 일관성 : 트랜잭션 후 데이터 포인트를 올바른 상태로 유지하기 위한 규칙을 정의함
- 고립성 : 혼란을 피하기 위해 트랜잭션이 커밋될 때까지 트랜잭션의 효과가 다른 사람에게 보이지 않게 해준다
- 내구성 : 트랜잭션이 커밋되면 데이터 변경 사항이 영구적이 되도록 한다.
- ACID(원자성, 일관성, 고립성, 내구성)은 RDBMS 트랜잭션을 정의한다.
- 저장 절차 및 RDB→ 이런 데이터 접근 기능에서는 DB 접근을 위한 일종의 코드가 필요함.EX) 단일 저장 절차 → 여러 애플리케이션 사용자에게 일관된 레코드 태그 지정 기능을 제공할 수 있다. 또한 저장 절차는 개발자가 애플리케이션의 특정 데이터 기능이 특정 방식으로 구현되도록 하는 데 도움이 될 수 있다.
- RDB는 간단한 애플리케이션 호출로 접근할 수 있는 코드 블록인 저장 절차를 사용할 수 있다.
- 데이터 접근을 위해 많은 반복 작업이 필요하다. (ex 데이터 테이블에서 정보를 가져오는 간단한 쿼리에서 원하는 결과를 생성하려면 수 백 또는 수 천 번 작업을 반복해야 할 수 있음)
- DB 잠금 및 동시성
- 잠금 : 데이터가 업데이트 되는 동안 다른 사용자 및 애플리케이션이 데이터에 접근하지 못하도록 한다. (일부 DB는 잠금이 전체 테이블에 적용되어 애플리케이션 성능에 부정적인 영향을 미친다 ⇒ Oracel RDB 같은 DB는 레코드 수준에서 잠금을 적용하여 테이블 내의 다른 레코드를 사용 가능한 상태로 유지하여 향상된 애플리케이션 성능을 보장한다.)
- 동시성 : 여러 사용자 또는 애플리케이션이 동일한 DB에서 동시에 쿼리를 호출할 때 활동을 관리한다. ⇒ 데이터 제어를 위해 정의된 정책에 따라 사용자 및 애플리케이션에 대한 올바른 엑세스를 제공한다.
- 여러 사용자 또는 애플리케이션이 동시에 같은 데이터를 변경하려고 하면 DB에서 충돌이 발생할 수 있는데, 잠금 및 동시성 기법을 사용하면 데이터의 무결성을 유지하면서도 충돌 가능성을 줄일 수 있다.
RDB 선택 시 고려사항
RDB에 저장된 데이터의 저장, 관리, 쿼리 및 조회에 사용되는 소프트웨어를 RDBMS라고 한다.
RDBMS는 데이터 저장, 액세스 및 성능을 관리하기 위한 기능 뿐만 아니라, 사용자와 애플리케이션 및 DB간에 인터페이스를 제공한다.
DB 유형 및 RDB 제품 중에서 선택 할 때 결정에 영향을 미칠 수 있는 요소
- Q1
- 데이터 정확성 요구사항은 무엇인가?
- 데이터 저장 및 정확성이 비즈니스 로직에 따라 결정되는가?
- 데이터 정확성에 대한 엄격한 요구사항(재무 데이터 및 정부 보고서)이 있는가?
- Q2
- 확장성이 필요한가?
- 관리할 데이터의 규모는 얼마이며, 어느 정도 성장이 예상되는가?
- DB 모델이 확장성을 위해 미러링된 DB 복사본(개별 인스턴스)를 지원해야하는가?
- 이러한 인스턴스에서 데이터 일관성을 유지할 수 있는가?
- Q3
- 동시성은 얼마나 중요한가?
- 여러 사용자와 애플리케이션에서 동시에 데이터 액세스가 필요한가?
- 데이터베이스 소프트웨어는 데이터를 보호하면서도 동시성을 지원하는가?
- Q4
- 성능 및 안정성 요구사항은 무엇인가?
- 신뢰성이 높은 고성능 제품이 필요한가?
- 쿼리 응답 성능에 대한 요구사항은 무엇인가?
- 서비스 수준 계약(SLA) 또는 예기치않은 다운타임에 대해 공급업체는 어떻게 대응하는가?
출처 : https://www.oracle.com/kr/database/what-is-a-relational-database/