본문 바로가기
재밌는 이야기/둘러보기

관계형 데이터베이스 (Relational Database)란 무엇인가

by Jevestor 2023. 12. 29.
728x90

관계형 데이터베이스(Relational Database)는 데이터를 저장하고 관리하는 방법 중 하나로, 테이블 형태로 데이터를 구성하는 것이 특징입니다. 각 테이블은 행과 열로 이루어져 있으며, 행은 개별 레코드(데이터의 단위)를, 열은 레코드의 속성(데이터의 종류)을 나타냅니다. 관계형 데이터베이스의 핵심은 이러한 테이블 간의 관계를 통해 데이터를 효율적으로 관리하는 데 있습니다. 이 모델은 다양한 데이터베이스 관리 시스템(DBMS)에서 사용되며, 대표적으로 MySQL, Oracle, PostgreSQL, SQL Server 등이 있습니다​​.

 

관계형 데이터베이스는 여러 테이블이 관계를 맺고 모여 있는 집합체로서, 데이터의 분류, 정렬, 탐색 속도가 빠르다는 특징을 가지고 있습니다. 또한, *데이터의 무결성을 보장하며, 데이터 중복성을 줄이는 데에도 기여합니다. SQL(Structured Query Language)은 관계형 데이터베이스의 표준 인터페이스로, 데이터를 관리하고 조작하는 데 사용됩니다​​.

 

 데이터 무결성

 

데이터베이스에서 매우 중요한 개념으로, 데이터의 정확성과 일관성이 보장되는 상태를 의미합니다. 데이터 무결성을 유지하는 것은 데이터베이스 관리 시스템(DBMS)의 핵심 기능 중 하나입니다​​.

※ 정확성 (Correctness):
데이터가 중복이나 누락 없이 정확하게 저장되어야 합니다. 이는 데이터가 신뢰할 수 있는 정보를 제공하는 데 필수적입니다.
 일관성 (Consistency): 데이터는 시간이 지나도 그 의미와 상태가 일관적으로 유지되어야 합니다. 예를 들어, 데이터베이스 내의 서로 다른 테이블 간의 관계가 일관적으로 유지되어야 합니다.
 유효성 (Validity): 데이터는 정해진 규칙과 제약조건에 따라 유효해야 합니다. 이를 통해 데이터의 품질을 보장할 수 있습니다​​.

데이터 무결성은 허가된 사용자가 수행하는 모든 작업에서 데이터베이스에 저장된 데이터의 일관성과 정확성을 유지하기 위한 제약조건을 포함합니다. 이는 데이터베이스의 ACID 속성(원자성, 일관성, 고립성, 지속성)을 보장하며, *무효 갱신으로부터 데이터를 보호하는 데 중요한 역할을 합니다​​.

데이터 무결성의 중요성은 데이터가 완전하고, 일관되며, 정확해야 한다는 것을 강조합니다. 이는 데이터가 신뢰할 수 있고, 오류가 없으며, 데이터베이스 시스템 내에서 정확하게 추적될 수 있음을 의미합니다. 예를 들어, 의약품 규제 기관은 데이터 무결성을 엄격하게 요구하여, 데이터가 언제, 왜, 누가, 어떻게 사용되었는지를 정확하게 추적할 수 있어야 합니다​​.

 

무효 갱신(Invalid Update)

데이터베이스에서 데이터의 일관성과 정확성을 해치는 잘못된 데이터 변경을 의미합니다. 이는 데이터베이스의 무결성을 해치는 주요 요소 중 하나로, 데이터베이스 관리 시스템(DBMS)에서는 이를 방지하기 위해 여러 제약조건과 규칙을 설정합니다​​.


무효 갱신으로부터 데이터를 보호하는 것은 데이터 무결성을 유지하는 데 필수적인 부분입니다. 데이터 모델링 과정에서 정의된 일련의 규칙에 따라 데이터가 생성, 수정, 삭제되도록 프로그램이나 데이터베이스 기능을 이용하여, 데이터의 정확성, 일관성, 유효성, 신뢰성을 보장합니다​​.

예를 들어, 트랜잭션 중에 시스템에 오류가 발생했을 때, DBMS의 회복 모듈은 시스템이 다시 시작된 후에도 데이터베이스의 일관성을 유지하기 위해 부분적으로 갱신된 트랜잭션의 영향을 취소함으로써 트랜잭션의 원자성을 보장합니다. 이는 트랜잭션이 완전히 수행되거나 전혀 수행되지 않는 것을 의미하며, 이를 통해 무효 갱신으로 인한 데이터의 손상을 방지합니다​​.

 

관계형 모델의 기본은 데이터를 직관적이고 간단하게 테이블에 나타내는 것입니다. 테이블의 각 행은 고유 ID를 가진 레코드로, 열에는 데이터의 속성이 포함됩니다. 이를 통해 데이터 포인트 간의 관계를 쉽게 설정할 수 있으며, 이러한 구조는 데이터를 효율적으로 관리하는 데 도움을 줍니다​​.

 

또한, 관계형 데이터베이스는 트랜잭션 데이터베이스와 관련이 있으며, *ACID(원자성, 일관성, 고립성, 지속성) 속성을 가집니다. 이는 데이터의 안정성과 신뢰성을 보장하는 중요한 요소입니다. 예를 들어, 은행 이체 과정에서 정해진 금액이 한 계좌에서 출금되어 다른 계좌에 입금되는 것과 같은 트랜잭션이 이 속성에 의해 관리됩니다​​.

 

ACID

데이터베이스 트랜잭션의 안전성을 보장하기 위한 네 가지 주요 속성을 나타내는 약어입니다. 이러한 속성들은 데이터베이스 시스템에서 트랜잭션의 신뢰성을 확보하는 데 중요한 역할을 합니다​​.


※ 원자성 (Atomicity): 원자성은 트랜잭션이 모든 연산을 완전히 수행하거나 아예 수행하지 않는 것을 보장하는 속성입니다. 즉, 트랜잭션과 관련된 모든 작업들이 부분적으로 실행되다 중단되는 것을 방지합니다​​.

예를 들어, 항공 티켓 예약 시스템에서 원자성은 중요한 역할을 합니다. 예약 과정에서 지불과 좌석 예약이 모두 성공하거나, 둘 다 성공하지 않아야 합니다. 만약 지불은 성공했지만 좌석 예약은 실패하는 경우가 발생한다면, 이는 원자성 원칙에 위배되는 것입니다. 따라서 원자성은 트랜잭션의 일부만이 실행되는 것을 방지함으로써 데이터베이스의 안정성과 무결성을 유지하는 데 기여합니다.

데이터베이스에서 원자성은 트랜잭션 처리의 핵심적인 부분으로, "모든 것" 또는 "아무 것도" 실행되지 않는 것을 의미합니다. 이는 데이터베이스 시스템이 예상치 못한 오류나 중단 상황에서도 데이터의 일관성과 무결성을 보장하는 데 중요합니다. 원자성은 트랜잭션이 중간에 실패하더라도 이전 상태로 롤백되어 데이터의 정확성이 유지되도록 합니다​.


일관성 (Consistency): 일관성은 트랜잭션 수행이 데이터베이스의 일관된 상태를 유지하는 것을 의미합니다. 즉, 트랜잭션이 성공적으로 완료되면 데이터베이스는 항상 일관된 상태를 유지해야 합니다. 이는 트랜잭션 전후로 데이터베이스의 무결성 규칙이 지켜짐을 의미합니다​​.

예를 들어, 한 사용자가 A 은행 계좌에서 B 은행 계좌로 10만 원을 이체하는 경우를 생각해봅시다. 이 트랜잭션은 두 부분으로 구성됩니다: A 계좌에서 10만 원을 차감하고, B 계좌에 10만 원을 추가하는 것입니다. 일관성의 원칙에 따라, 이 두 연산은 모두 성공적으로 수행되어야 하며, 한 쪽만 수행되는 경우는 허용되지 않습니다.

일관성은 트랜잭션이 데이터베이스의 모든 규칙과 제약 조건을 유지하며 수행된다는 것을 의미합니다. 트랜잭션이 완료되면, 데이터베이스는 일관된, 즉 무결성이 유지된 상태여야 합니다. 예를 들어, 모든 계좌의 잔액은 항상 0 이상이어야 하는 규칙이 있다면, 트랜잭션이 이 규칙을 위반하지 않고 수행되어야 합니다.

원자성은 주로 트랜잭션의 완전성을 강조하며, 작업의 '전부 또는 전혀 없음'을 보장합니다. 반면, 일관성은 데이터베이스의 무결성과 규칙이 트랜잭션에 의해 항상 유지되도록 하는 것에 중점을 둡니다.


고립성 (Isolation): 고립성은 동시에 실행되는 여러 트랜잭션이 서로 간섭하지 않도록 하는 속성입니다. 이는 각 트랜잭션이 독립적으로 실행되는 것처럼 보장하여, 다른 트랜잭션의 중간 상태를 볼 수 없게 합니다​​.

예를 들어, 온라인 쇼핑몰에서 동시에 두 명의 고객이 같은 제품의 마지막 한 개를 구매하려고 하는 경우를 생각해볼 수 있습니다. 여기서의 트랜잭션은 다음과 같습니다:
1. 고객 A가 제품을 장바구니에 넣고 구매를 시도합니다.
2. 거의 동시에 고객 B도 같은 제품을 장바구니에 넣고 구매를 시도합니다.

고립성이 없다면, 시스템은 두 고객이 동시에 제품을 구매하는 것으로 잘못 인식할 수 있으며, 이로 인해 제품의 수량이 실제보다 더 많이 줄어들 수 있습니다. 예를 들어, 제품이 하나만 남아 있음에도 불구하고 시스템이 두 고객 모두에게 구매 성공 메시지를 보낼 수 있습니다.

고립성이 적용되면, 한 트랜잭션이 완료되기 전에는 다른 트랜잭션이 그 중간 결과를 볼 수 없습니다. 따라서, 고객 A의 트랜잭션이 먼저 처리되고 제품의 수량이 감소하면, 고객 B의 트랜잭션은 제품이 더 이상 남아 있지 않다는 것을 인식하고 구매를 실패하게 됩니다. 이는 데이터베이스의 일관성과 정확성을 유지하는 데 도움이 됩니다.


※ 지속성 (Durability): 지속성은
성공적으로 완료된 트랜잭션이 영구적으로 반영되어야 함을 의미합니다. 이는 시스템이 실패하더라도 완료된 트랜잭션은 복구가 가능하다는 것을 보장합니다​​.

예를 들어, 은행 시스템에서의 송금 트랜잭션을 생각해볼 수 있습니다. 사용자가 A 계좌에서 B 계좌로 1만 원을 송금하는 트랜잭션이 있습니다. 이 트랜잭션이 성공적으로 완료되고, A 계좌에서 1만 원이 차감되며 B 계좌에 1만 원이 추가됩니다.

이 경우, 지속성의 원칙에 따라, 송금 트랜잭션이 성공적으로 완료된 후에는 이러한 변경 사항이 데이터베이스에 영구적으로 반영됩니다. 만약 이후에 시스템에 장애가 발생하거나 서버가 다운되더라도, 송금된 금액은 A 계좌에서 빠져나가고 B 계좌에 추가된 상태로 유지됩니다. 이는 다시 시스템이 복구되었을 때, 송금 트랜잭션의 결과가 그대로 반영되어 있는 것을 확인할 수 있습니다.

지속성은 트랜잭션의 안정성과 신뢰성을 보장하는 중요한 원칙입니다. 사용자나 시스템 관리자는 트랜잭션이 한 번 완료되면 그 결과가 안전하게 보존되리라는 확신을 가질 수 있습니다.

 

ACID 특성은 데이터베이스에서 트랜잭션이 신뢰성 있고 정확하게 처리될 수 있도록 해주며, 데이터의 무결성과 안정성을 유지하는 데 필수적입니다​​. 이러한 특성들은 데이터베이스 관리 시스템이 복잡하고 다양한 트랜잭션을 안전하게 처리할 수 있도록 하는 기반을 제공합니다.

728x90

댓글