관계형 DB VS NoSQL

KoK·2025년 9월 25일

DATABASE

목록 보기
2/6
post-thumbnail

1. DBMS

처음에는 단순 파일 시스템으로 데이터를 저장했고, 파일 시스템의 문제를 해
결하기 위해 이어서 계층형과 네트워크형 DBMS가 생겼다. 이후 가장 많이 쓰이는 관계형 DBMS(RDBMS) 가 자리 잡았고, 최근에는 빅데이터 처리나 특수 요구 사항에 대응하기 위해 NoSQL DBMS가 빠르게 발전하고 있다.

"데이터를 어떻게 하면 더 효과적이고 더 안전하게 관리할 수 있을까?"

1-1. RDBMS, NoSQL

RDBMS

  • 현재 가장 많이 사용되는 데이터베이스 시스템이다.
  • 테이블 간의 관계를 기반으로 데이터를 구조화 한 시스템이다.

데이터를 테이블(Table) 이라는 정형화된 구조에 저장한다.
테이블은 행(Row, 레코드)열(Column, 필드, 속성) 로 구성되며,
이 테이블들 간의 관계를 통해 데이터를 연결하고 관리한다.

RDBMS가 기본인 이유

  • 정형화된 데이터 관리 : 데이터 구조의 명확성, 데이터타입, 제약조건을 통해 무결성을 보장한다. 구조가 명확하고 일관성이 중요한 데이터에 적합
  • ACID 트랜잭션 보장 : 트랜잭션의 ACID(원자성, 일관성, 고립성, 지속성) 특성을 잘 지원, 데이터 처리 신뢰성이 높다. 금융거래, 주문/결제 에 필수
  • SQL (Structured Query Language) : 강력하고 표준화된 언어를 사용하여 복잡한 데이터 조회나 조작을 쉽게 할 수 있다. DDL, DCL, DML등이 있다.

NoSQL

  • 빅데이터와 특정 요구사항에 맞춰 생긴 시스템
  • 관계형데이터베이스의 한계를 보완했다.

관계형 모델을 사용하지 않거나, SQL을 주요 데이터 접근 언어로 사용하지 않
는 DBMS들을 의미한다. RDBMS가 모든 상황에 최적인 것은 아니기 때문에, 특정 요구사항(대량 비정형 데이터 처리, 매우 빠른 읽기/쓰기 속도, 유연한 데이터 모델 등)을 만족시키기 위해 등장했다.

분류데이터 단위핵심 장점대표 사례대표 DBMS
키-값 저장소키 -> 값 한 쌍초고속 단건 읽기/쓰기세션, 캐시Redis, Memcached
문서 DBJSON/BSON 문서유연한 스키마상품 카탈로그MongoDB, Couchbase
컬럼 패밀리 저장소열(Column)그룹대용량 분산/분석로그/시계열Cassandra,HBase
그래프DB노드, 엣지복잡한 관계 탐색추천/이상 탐지Neo4j

NoSQL은 RDBMS를 대체한다기보다는 상호 보완적인 관계
로 이해하는 것이 좋다. 핵심 데이터는 RDBMS에 저장하되, 특정 기능
(예: 실시간 인기 검색어, 사용자 세션 관리, 상품 추천 등)에는 NoSQL을 함께 사용할 수도 있다.

2. RDBMS의 호환성과 ANSI SQL 표준

ANSI/ISO에서 지정한 SQL 표준 덕분에 서로 다른 DBMS를 사용한다고 하더라도 새롭게 배울 필요가 없다.
여기서 RDBMS들이 공통적으로 사용할 수 있는 표준 SQL문법을 정의했다.
Oracle, MySQL, MS SQL, PostgreSQL 등 대부분의 RDBMS는 이 표준을 준수하려고 노력한다. 물론 각각의 DBMS마다 고유한 추가 기능(함수나 문법)을 가지고 있다.

3. RDBMS의 핵심 개념

관계형 모델의 핵심 개념, 모든 데이터는 '표'에서 시작한다.

  • 테이블 (Table): 관계형 데이터베이스에서 데이터를 저장하는 가장 기본적인 구조다. 엑셀의 '시트(Sheet)'와 거의 동일한 개념이다. 테이블은 특정 주제와 관련된 데이터들의 집합이다.

  • 행 (Row): 테이블의 각 가로줄을 의미한다. 하나의 행은 개별적인 데이터 항목 하나를 나타낸다. 예를 들어, 고객테이블 에서 하나의 행은 고객 한 명의 정보를 의미한다. 1 고객의 정보, 2 고객의 정보 등이 각각 하나의 행이 된다.
    실무 용어: 행은 '레코드(Record)' 또는 '튜플(Tuple)'이라고도 불린다.

  • 열 (Column): 테이블의 각 세로줄을 의미한다. 열은 테이블에 어떤 종류의 데이터가 저장될지를 정의한다. 고객테이블 이라면 고객번호 , 이름 , 연락처 , 주소 등이 각각의 열이 된다.
    실무 용어: 열은 '속성(Attribute)' 또는 '필드(Field)'라고도 한다.

3-1. 기본 키(Primary Key) - 데이터 중 '단 하나'를 식별하는 방법

기본 키란, 테이블에 있는 모든 행(Row)들 중에서 특정 행 하나를 유일하게 식별할 수 있는 열(Column) 또는 열들의 조합을 말한다.

기본 키의 두가지 규칙

  1. 고유성 : 기본 키로 지정된 열의 값은 같은 테이블 내에서 절대로 중복될 수 없다. 모든 행이 서로 다른 값을 가져야 한다.
  2. NOT NULL : 기본 키로 지정된 열에는 반드시 값이 있어야 한다. 비어있거나 (NULL) 인 상태는 허용되지 않는다.
  • 수많은 데이터 속에서 특정 데이터 하나를 빠르고 정확하게 찾아내고, 수정하고, 삭제하기 위해서다. 기본 키가 없다면 우리는 수많은 데이터에서 원하는 정보를 특정할 수 없다. 따라서 모든 테이블에는 기본 키를 설정하는 것이 원칙이다.

3-2. 외래 키(Foreign Key) - 따로 떨어진 표들을 "관계"로 묶는 방법

외래 키란, 한 테이블(A)의 열(Column)이 다른 테이블(B)의 기본 키(Primary Key) 값을 참조하는 것을 말한다.

부모와 자식의 관계

  • 두 테이블이 FK 값을 통해 관계가 있을 때 한쪽을 부모, 한쪽을 자식이라 한다.
    자식 테이블은 FK 값을 통해 부모 테이블을 참조한다. FK 값을 가진 곳이 자식 테이블이다.
    여기서는 orders 테이블이 FK 값인 customer_id 를 통해 customers 테이블을 참조한다.
    따라서 둘의 관계에서 orders 가 자식 테이블이고, customers 가 부모 테이블이 된다.

외래 키의 중요한 규칙

  • 참조 무결성 : 외래 키 열에 있는 값은, 반드시 부모 테이블(참조 당하는 쪽의 기본 키 값 중 하나이거나, 혹은 NULL이어야 한다.
    참조 무결성을 지키지 않으면, 데이터베이스가 오류를 발생시켜 막아준다. 이 덕분에 데이터의 정합성이 보장되는 것이다.

외래키를 사용하는 이유

  • 데이터의 중복을 막고, 데이터의 일관성을 유지하며, 논리적으로 분리된 데이터들 사이에 '관계'를 맺어주기 위해서다. 이를 통해 여러 개의 테이블로 전체 시스템을 구조화할 수 있다.
profile
개발 이것저것

0개의 댓글