데이터를 묶어서 처리하는 단위들

왜 “묶어서” 처리하는가?

컴퓨터는 데이터를 1바이트씩 처리하지 않는다.
1바이트씩 처리하면 I/O 횟수가 폭발적으로 늘고, 그만큼 시간이 낭비된다.

핵심 원리: 각 레이어는 자신에게 적합한 크기로 데이터를 묶어 한 번에 처리한다.
이 묶음 단위가 작으면 오버헤드가 크고, 크면 불필요한 데이터까지 읽게 된다.

모든 레이어는 이 트레이드오프를 자신만의 단위로 해결한다.


레이어 전체 지도

애플리케이션 레이어  →  Message / Record / Event
      ↓
메시지큐 레이어      →  Message / Batch / Partition Segment
      ↓
네트워크 레이어      →  Frame / Packet / Segment / Datagram
      ↓
OS / 파일시스템      →  File / Cluster / Block / Page
      ↓
스토리지 레이어      →  Extent / Block / Sector / Bit
      ↓
CPU / 메모리 레이어  →  Cache Line / Page / Word / Byte / Bit
      ↓
DB 레이어           →  Tablespace / Segment / Extent / Page / Row

1. 스토리지 레이어

디스크(HDD/SSD)가 데이터를 읽고 쓰는 물리적 단위들이다.

┌──────────────────────────────────────────────────┐
│  Tablespace / Volume                             │
│  ┌───────────────────────────────────────────┐  │
│  │  Segment                                  │  │
│  │  ┌─────────────────────────────────────┐  │  │
│  │  │  Extent (연속된 Block 묶음)          │  │  │
│  │  │  ┌──────┐ ┌──────┐ ┌──────┐        │  │  │
│  │  │  │Block │ │Block │ │Block │  ...   │  │  │
│  │  │  │ 4KB  │ │ 4KB  │ │ 4KB  │        │  │  │
│  │  │  └──┬───┘ └──────┘ └──────┘        │  │  │
│  │  │     │                               │  │  │
│  │  │  ┌──▼────────────────────────────┐  │  │  │
│  │  │  │ Sector 512B | Sector 512B | …  │  │  │  │
│  │  │  └───────────────────────────────┘  │  │  │
│  │  └─────────────────────────────────────┘  │  │
│  └───────────────────────────────────────────┘  │
└──────────────────────────────────────────────────┘
단위일반 크기설명
Bit1 bit0 또는 1, 물리적 최소 단위
Byte8 bit문자 하나, 주소 지정 최소 단위
Sector512B ~ 4KB디스크 물리 최소 R/W 단위
Block4KB ~ 64KBOS·파일시스템 I/O 단위, Sector 묶음
ClusterBlock 묶음Windows NTFS의 파일 할당 단위
ExtentBlock 연속 묶음미리 예약된 연속 공간, 단편화 방지

Sector vs Block: Sector는 디스크가 아는 단위, Block은 OS가 아는 단위다.
1바이트를 수정해도 Block 전체를 읽어 수정 후 다시 쓴다.


2. CPU / 메모리 레이어

CPU가 데이터를 연산하고 캐시에 올리는 단위들이다.

CPU
 ├── Register (1 Word)
 ├── L1 Cache  ← Cache Line 단위로 채워짐 (64B)
 ├── L2 Cache
 └── L3 Cache
        ↕ (Page 단위 스왑)
RAM  ← Page 단위로 관리 (4KB)
        ↕ (Page Fault 시)
Disk (스왑 영역)
단위일반 크기설명
Bit1 bit전기 신호 하나
Byte8 bit주소 지정 기본 단위
Word4B (32bit) / 8B (64bit)CPU가 한 번에 처리하는 크기
Cache Line64BCPU가 캐시에 올리는 최소 단위
Page4KB (보통)가상 ↔ 물리 메모리 매핑 단위
Huge Page2MB ~ 1GB대용량 메모리 최적화용 Page

Cache Line의 함정: 배열을 순서대로 접근하면 Cache Line 덕에 빠르다.
하지만 열(column) 방향으로 접근하면 Cache Line을 매번 새로 불러와 느려진다.


3. OS / 파일시스템 레이어

OS가 파일과 프로세스 메모리를 관리하는 단위들이다.

파일시스템

단위설명
File데이터의 논리적 묶음, 이름·메타데이터 포함
Block / Cluster파일 저장의 최소 할당 단위
Inode파일 메타데이터 구조체 (Unix)
Directory파일 이름 → Inode 매핑 테이블

프로세스 메모리 (세그멘테이션)

프로세스 주소 공간
┌─────────────────┐  높은 주소
│   Stack Segment │  ← 함수 호출, 로컬 변수 (위→아래 성장)
├─────────────────┤
│       ↓         │
│       ↑         │
├─────────────────┤
│   Heap Segment  │  ← 동적 할당 (아래→위 성장)
├─────────────────┤
│   BSS Segment   │  ← 초기화되지 않은 전역 변수
├─────────────────┤
│  Data Segment   │  ← 초기화된 전역·정적 변수
├─────────────────┤
│  Text Segment   │  ← 실행 코드 (읽기 전용)
└─────────────────┘  낮은 주소
단위설명
Page가상 메모리 관리 기본 단위 (4KB)
Segment역할별 메모리 영역 (코드/데이터/스택/힙)
Region / VMA연속 Page 묶음, Linux의 가상 메모리 영역
BufferI/O 대기 중인 임시 데이터 영역
Chunkmalloc이 관리하는 힙 할당 단위

4. 네트워크 레이어

OSI 7계층에 따라 각 레이어마다 자신만의 전송 단위가 있다.

L7 응용 계층     →  Message (HTTP, DNS, WebSocket)
L6 표현 계층     →  (TLS Record)
L5 세션 계층     →  (세션 관리)
L4 전송 계층     →  Segment (TCP) / Datagram (UDP)
L3 네트워크 계층 →  Packet (IP)
L2 데이터링크   →  Frame (Ethernet)
L1 물리 계층    →  Bit (전기/광 신호)
단위레이어일반 크기설명
BitL11 bit물리 신호
FrameL2최대 1518B이더넷 전송 단위, MAC 주소 포함
PacketL3최대 65535BIP 전송 단위, IP 주소 포함
SegmentL4 TCP최대 ~64KBTCP 전송 단위, 순서·재조합 보장
DatagramL4 UDP최대 65507BUDP 전송 단위, 순서 보장 없음
TLS RecordL5~L6최대 16KB암호화된 전송 블록
MessageL7가변HTTP 요청/응답, WebSocket 메시지 등

MTU(최대 전송 단위): 이더넷 기본 MTU는 1500B.
Packet이 이보다 크면 **단편화(Fragmentation)**가 발생한다.


5. DB 레이어

DB는 자체적인 계층 구조로 데이터를 관리한다.

Tablespace (물리 파일 묶음)
  └── Segment (테이블 or 인덱스)
        └── Extent (연속 Page 묶음, 선할당)
              └── Page (DB I/O 기본 단위, 8KB~16KB)
                    └── Row (실제 데이터 행)
단위일반 크기설명
Row / Record가변실제 데이터 한 행
Page / Block8KB ~ 16KBDB I/O 기본 단위
ExtentPage 8~128개연속 할당 공간, 단편화 방지
SegmentExtent 묶음테이블·인덱스·언두 등 논리 영역
TablespaceSegment 묶음물리 파일과 연결되는 최상위 단위

MySQL InnoDB 기준: Page=16KB, Extent=1MB(64 pages), Segment는 동적 확장


6. 메시지큐 레이어

Kafka, RabbitMQ 같은 메시지 브로커는 자체 단위를 사용한다.

Kafka 기준

Cluster
  └── Topic
        └── Partition
              └── Segment (파일)
                    └── Record (메시지 하나)
단위설명
Record / Message메시지 하나 (Key + Value + Timestamp)
Batch네트워크 효율을 위해 묶은 Record 묶음
SegmentPartition 내 실제 파일 단위 (기본 1GB)
Partition병렬 처리를 위한 Topic 분할 단위
Topic메시지 분류 채널

Kafka는 Segment 단위로 파일을 생성하고, 보존 기간이 지나면 Segment 단위로 삭제한다.


7. 스트리밍 / 미디어 레이어

오디오·비디오 스트리밍도 자체 단위를 사용한다.

단위설명
Sample오디오 최소 단위 (특정 시점의 진폭 값)
Frame비디오 이미지 한 장 / 오디오 샘플 묶음
GOP (Group of Pictures)비디오 키프레임 + 델타프레임 묶음
Chunk / SegmentHLS/DASH 스트리밍 분할 파일 (2~10초)
Buffer재생 끊김 방지를 위한 미리 로드 공간

HLS(HTTP Live Streaming)는 영상을 Segment(.ts 파일)로 잘라 전송하고,
클라이언트는 Buffer에 여러 Segment를 미리 쌓아 재생한다.


전체 비교 요약

레이어주요 단위 (작은 것 → 큰 것)핵심 목적
스토리지Bit → Sector → Block → Extent물리 I/O 효율
CPU/메모리Bit → Byte → Word → Cache Line → Page연산·캐시 효율
OS/파일시스템Page → Segment → Region메모리 보호·관리
네트워크Bit → Frame → Packet → Segment → Message전송 신뢰성·효율
DBRow → Page → Extent → Segment → Tablespace데이터 접근·관리
메시지큐Record → Batch → Segment → Partition처리량·순서 보장
미디어Sample → Frame → GOP → Chunk스트리밍 연속성

공통 패턴

모든 레이어에 반복되는 원리가 있다.

1. 묶음 크기와 오버헤드는 반비례
단위가 작을수록 정밀하지만 오버헤드가 커진다.
단위가 클수록 효율적이지만 불필요한 데이터를 함께 읽는다.

2. 계층 구조
작은 단위 → 묶어서 → 큰 단위.
Bit → Byte → Word → Cache Line → Page처럼 아래가 위를 구성한다.

3. 같은 이름, 다른 맥락
Page는 OS(4KB), DB(8~16KB), 네트워크(없음)에서 크기가 다 다르다.
Segment는 메모리 영역, TCP 전송 단위, DB 논리 공간, Kafka 파일을 모두 가리킨다.
레이어를 먼저 확인해야 이름의 의미가 명확해진다.