RDBMS: 관계가 파일과 만나는 곳

발행: (2025년 12월 31일 오전 04:05 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Overview

안녕하세요, 저는 Maneshwar입니다. 현재 FreeDevTools online에서 모든 개발 도구, 치트 코드, TLDR을 한 곳에 모은 무료 오픈소스 허브를 만들고 있습니다. 개발자들이 인터넷을 뒤져볼 필요 없이 빠르게 도구를 찾고 사용할 수 있도록 하는 것이 목표입니다.

어제는 애플리케이션이 DBMS와 상호 작용하는 방식과 SQL 같은 선언적 언어에 대해 살펴보았습니다.
그 수준에서는 데이터베이스가 저장 세부 사항과 완전히 추상화된 테이블들의 컬렉션으로 보입니다.

오늘은 그 추상화를 명시적으로 보여줍니다.

관계형 데이터베이스 관리 시스템 (RDBMS)관계형 데이터 모델을 구현하는 DBMS입니다.
사용자와 애플리케이션에게 RDBMS는 데이터베이스를 **관계(테이블)**들의 컬렉션으로 보여 주며, 각 관계는 스키마에 의해 정의됩니다.
하지만 내부적으로는 이러한 관계들이 일반 파일 안에 존재해야 합니다.
테이블파일 사이의 이 격차가 RDBMS 작업의 대부분이 이루어지는 지점입니다.

Relations vs Files

  • 관계는 2차원 구조입니다: 행과 열.
  • 파일은 그에 반해 1차원 평면 바이트 시퀀스입니다.

운영 체제는 테이블, 스키마, 튜플을 이해하지 못하고 바이트를 읽고 쓰는 방법만 압니다. 따라서 RDBMS는 논리적 관계를 파일 저장소에 매핑해야 합니다.

Logical schema

사용자는 논리(개념) 스키마 수준에서 작업합니다:

  • 테이블
  • 속성
  • 제약조건

RDBMS는 이러한 작업을 별도의 물리 스키마를 사용해 파일 작업으로 변환합니다. 물리 스키마는 데이터가 파일 안에 어떻게 배치되는지를 정의합니다.

핵심 포인트

  • 사용자는 물리 스키마를 절대 보지 못합니다.
  • 애플리케이션은 저장 레이아웃으로부터 격리됩니다.
  • 내부 재구성이 애플리케이션 로직을 깨뜨리지 않습니다.

이 분리는 데이터베이스가 애플리케이션을 다시 작성하지 않고도 진화할 수 있게 합니다.

Schemas and Catalogs

모든 관계는 다음을 정의하는 스키마를 가집니다:

  • 속성 이름
  • 데이터 타입
  • 제약조건

스키마 정보 자체는 카탈로그(시스템 테이블 또는 데이터 사전이라고도 함)라는 특수 관계 안에 저장됩니다. 카탈로그는 다음과 같은 메타데이터를 보관합니다:

  • 관계 이름
  • 컬럼 이름 및 타입
  • 기본값
  • 제약조건 정의

이 모든 카탈로그 항목이 합쳐져 데이터베이스 스키마를 정의합니다. 애플리케이션은 보통 카탈로그를 읽을 수는 있지만 직접 수정할 수는 없습니다; 카탈로그는 테이블 생성·수정 같은 스키마 변경 작업의 부수 효과로 자동 업데이트됩니다.

More Than Just Tables

사용자 관계와 시스템 카탈로그 외에도 RDBMS는 다음을 유지합니다:

  • 데이터 접근 속도를 높이는 인덱스
  • 정확성과 성능을 지원하는 내부 구조

이 모든 복잡성은 애플리케이션이 데이터베이스를 깨끗한 관계들의 컬렉션으로만 취급할 수 있게 하기 위해 존재합니다.

Where This Leads

지금까지 우리는 다음을 정리했습니다:

  • 관계가 무엇인지
  • 관계가 파일에 어떻게 매핑되는지
  • 스키마와 카탈로그가 데이터베이스 구조를 어떻게 정의하는지

다음 자연스러운 단계는 관계가 어떻게 조작되는지를 이해하는 것으로, 여기에는 다음이 포함됩니다:

  • 관계 연산
  • 관계 대수
  • 투영, 선택, 조인 및 집합 연산

이 연산들은 SQL의 이론적 기반을 이루며, 다음 단계에서 그 여정을 이어갑니다.

FreeDevTools

👉 확인해 보세요: FreeDevTools

피드백이나 기여자는 언제든 환영합니다!
온라인이며 오픈소스이고, 누구든지 사용할 수 있도록 준비되어 있습니다.

⭐ GitHub에서 별을 눌러 주세요: freedevtools

Back to Blog

관련 글

더 보기 »

인덱스와 DBMS의 부상

안녕하세요, 저는 Maneshwar입니다. 저는 FreeDevTools online https://hexmos.com/freedevtools에서 작업하고 있으며, 현재 모든 dev tools, cheat codes, 그리고 TLDRs를 한 곳에 모으는 작업을 하고 있습니다.