본문 바로가기

DB

[DB] 데이터베이스와 데이터베이스 관리 시스템(DBMS)

🧩 데이터(Data) vs 정보(Information): 무엇이 다른가?

 

데이터베이스를 이해하는 첫걸음은 데이터정보의 차이를 명확히 아는 것이다.

이 둘은 종종 혼용되지만, 그 가치와 역할은 완전히 다르다.

 

  • 데이터 (Data): 의미 없는 기록 조각
    • 아직 가공되지 않은 '날것'의 사실이나 자체를 의미한다.
    • 예를 들어, 쇼핑몰에서 발생한 "userA", "A티셔츠", "25000" 같은 개별 기록들은 문맥이 없어 그 자체만으로는 완전한 의미를 갖기 어렵다.
  • 구조화된 데이터 (Structured Data): 의미를 담은 재료
    • 데이터에 '고객ID', '상품명', '주문금액'과 같은 꼬리표(Label)를 붙여 표 형태로 정리한 것이다.
    • 이제 각 데이터 조각이 무엇을 의미하는지는 알 수 있지만, 여전히 단순한 '기록의 목록'에 불과하며, 의사결정에 필요한 통찰(Insight)은 아직 없다.
  • 정보 (Information): 목적을 가진 결과물
    • 구조화된 데이터를 특정 목적을 가지고 분석하고 가공하여 얻어낸 유의미한 결과물이다.
    • 예를 들어, "2025년 9월 16일에 가장 많이 팔린 상품은 무엇인가?"라는 질문에 답하기 위해 구조화된 데이터를 '필터링'하고 '그룹화 및 집계'하여 "A티셔츠가 총 4개로 가장 많이 팔렸습니다"라는 결론을 얻어냈다면, 이것이 바로 '정보'다.

 

결국, 흩어져 있는 데이터를 모아 정보를 만들고, 그 정보를 바탕으로 '현명한 의사결정'을 내리기 위해 데이터베이스를 사용한다.

데이터베이스는 이 모든 과정의 핵심 기반 시설이다.

 


🧩 파일 시스템의 한계와 DBMS의 필요성

 

데이터를 저장하는 가장 원시적인 방법은 컴퓨터의 파일 시스템(예: 텍스트 파일, 엑셀)을 이용하는 것이다.

초기에는 편리해 보일 수 있지만, 데이터가 많아지고 복잡해지면 다음과 같은 심각한 문제들이 발생한다.

 

  • 데이터 중복과 불일치:
    • 여러 파일에 동일한 정보가 중복으로 저장될 경우, 한 곳만 수정하면 다른 곳과 데이터가 달라지는 '불일치' 상태가 발생하여 심각한 업무 오류를 유발한다.
  • 데이터 접근의 어려움:
    • 여러 파일에 흩어져 있는 데이터를 조합하여 특정 조건으로 검색하고 의미 있는 정보를 얻어내는 것이 매우 어렵고 비효율적이다.
  • 무결성 제약조건 적용의 어려움:
    • "가격은 0보다 커야 한다" 또는 "회원 아이디는 중복될 수 없다"와 같은 데이터의 규칙(무결성 제약조건)을 강제하기가 어렵다.
  • 동시성 제어 문제:
    • 여러 사용자가 동시에 같은 데이터를 수정하려고 할 때(예: 마지막 남은 재고 1개를 동시에 주문), 데이터의 일관성이 깨져 재고가 1개인데 2명에게 판매되는 문제가 발생할 수 있다.
  • 보안 문제:
    • 사용자별로 접근 가능한 데이터의 범위를 세밀하게 제어하기 어렵다.
  • 회복 및 백업의 어려움:
    • 시스템 장애 발생 시 데이터를 일관된 최신 상태로 완벽하게 복구하기가 매우 복잡하다.

 

이러한 파일 시스템의 근본적인 문제들을 해결하기 위해 데이터베이스 관리 시스템(DBMS)이 등장했다.

 


🧩 데이터베이스 관리 시스템 (DBMS, Database Management System)

 

DBMS사용자와 데이터베이스 사이에서 데이터를 생성, 관리, 공유하는 기능을 수행하는 소프트웨어 시스템이다.

데이터를 체계적으로 모아놓은 창고(데이터베이스)를 효율적으로 관리하는 전문 관리자에 비유할 수 있다.

 

개발자는 복잡한 파일 시스템을 직접 다루는 대신, SQL과 같은 표준화된 언어를 통해 DBMS에 요청만 하면 된다.

그러면 DBMS가 알아서 데이터를 안전하고 효율적으로 처리해 준다.

 

DBMS의 핵심 기능

  • 데이터 정의 (DDL): 데이터의 구조, 형식, 제약조건을 설정한다.
  • 데이터 조작 (DML): 데이터를 등록(INSERT), 조회(SELECT), 수정(UPDATE), 삭제(DELETE)한다.
  • 데이터 제어 (DCL): 보안, 동시성 제어, 트랜잭션 관리를 통해 데이터의 정확성과 안정성을 보장한다.

 


🧩 RDBMS vs NoSQL

 

현대의 DBMS는 크게 두 가지로 나뉜다.

 

  • RDBMS (Relational Database Management System, 관계형 데이터베이스):
    • 데이터를 테이블(Table)이라는 정형화된 구조에 저장하고, 테이블 간의 관계를 통해 데이터를 관리한다.
    • 데이터의 무결성일관성이 매우 중요할 때 사용되며, SQL이라는 표준 언어를 사용한다.
    • 실무에서는 대부분의 애플리케이션이 RDBMS를 기본 데이터베이스로 사용한다.
    • 대표 예시: MySQL, Oracle, PostgreSQL 등
  • NoSQL (Not Only SQL)
    • 관계형 모델을 사용하지 않거나, SQL을 주요 데이터 접근 언어로 사용하지 않는 DBMS를 통칭한다.
    • 비정형 데이터 처리, 매우 빠른 속도, 유연한 데이터 구조가 필요할 때 RDBMS를 보완하는 용도로 사용된다.
    • 대표 예시: Redis(키-값), MongoDB(문서) 등
 
RDBMS는 실무에서 대부분의 문제를 해결할 수 있는 만능 해결사이다. 따라서 서비스가 작을 때는 보통 RDBMS만 사용하다가, 서비스가 커지고 사용자가 늘어나면서 'NoSQL이 반드시 필요한 상황'이 발생하면 그때 부분적으로 도입하는 것이 좋다.

 


🧩 관계형 데이터베이스의 핵심 개념

 

RDBMS를 이해하기 위해서는 다음 핵심 개념을 반드시 알아야 한다.

 

  • 테이블 (Table):
    • 데이터를 저장하는 가장 기본적인 표 형태의 구조다.
    • 특정 주제와 관련된 데이터의 집합이다.
  • 행 (Row):
    • 테이블의 각 가로줄로, 하나의 개별 데이터 항목을 의미한다. (예: 고객 한 명의 정보)
    • '레코드(Record)' 또는 '튜플(Tuple)'이라고도 한다.
  • 열 (Column):
    • 테이블의 각 세로줄로, 데이터의 종류(속성)를 정의한다. (예: 고객 ID, 이름)
    • '필드(Field)' 또는 '속성(Attribut)'이라고도 한다.
  • 기본 키 (Primary Key, PK):
    • 테이블의 모든 행을 유일하게 식별할 수 있는 열(또는 열의 조합)이다.
    • 중복될 수 없으며(Unique), 비어 있을 수 없다(NOT NULL).
    • 모든 테이블에는 기본 키를 설정하는 것이 원칙이다.
  • 외래 키 (Foreign Key, FK):
    • 다른 테이블의 기본 키를 참조하는 열이다.
    • 분리된 테이블들을 논리적으로 연결하는 '관계의 연결 고리' 역할을 한다.
    • 참조하는 부모 테이블의 기본 키(PK) 중 하나이거나, 비어 있어야 한다(NULL). (참조 무결성)
    • 이를 통해 부모 테이블에 존재하지 않는 데이터가 자식 테이블에 입력되는 것을 막아준다.