RDBMS

All data in a relational database is represented as mathematical relations.

— 에드거 F. 커드 박사가 제안한 컴퓨터 과학의 역사적인 관계형 모델 기초 선언

수십 년 동안 'NoSQL의 등장으로 이제 RDBMS는 끝났다'는 사망 선언을 수없이 들었으나, 정작 돈과 정합성이 직결되는 핵심 비즈니스(결제, 뱅킹 등)는 결국 RDBMS의 품으로 회귀하고 마는 만고불변의 진리. 어설픈 스키마 구조로 대형 서비스 런칭했다가, 컬럼 하나 추가하느라 새벽 3시에 서버 내리고 식은땀 흘리며 ALTER TABLE을 실행하는 심장은 터지기 직전이다.(...)

1. 개요

관계형 모델(Relational Model)에 기반하여 데이터를 2차원 표(Table) 형태로 엄격하게 관리하는 시스템. 데이터를 열(Column)과 행(Row)으로 이루어진 격자 공간에 가두고, 이를 만국 공통어인 SQL(Structured Query Language)을 통해 종횡무진 요리한다. 현대 데이터베이스 기술의 근간이자 사실상 백엔드 아키텍처의 심장으로 불리며, 성능과 유연함을 겸비한 NoSQL의 거센 침공 속에서도 '절대적인 신뢰성(ACID)'을 무기로 완벽한 지배권을 고수하고 있다.

2. 스키마와 ACID 트랜잭션의 철옹성

RDBMS가 오늘날 비즈니스의 구원자로 남은 비결은 바로 철저한 스키마(Schema) 강제성ACID 트랜잭션의 보장이다. 데이터가 들어오기 전에 미터법처럼 소수점 한 자리까지 데이터 타입을 미리 약속해 둠으로써 부정형 데이터의 유입을 원천 봉쇄한다. 또한, 한 번에 묶여서 실행되어야 하는 여러 데이터 수정 작업이 '전부 성공하든지 아니면 아예 없던 일로 되돌리든지'를 보장하는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 철저히 구현했다.1 은행 계좌 이체 중 시스템 전원이 꺼져도 돈이 공중으로 증발하는 불상사가 발생하지 않는 것은 오롯이 RDBMS가 트랜잭션과 롤백(Rollback) 기능을 악착같이 사수하고 있기 때문이다.

3. 성능의 열쇠, 인덱스와 조인

수백만 개의 테이블 데이터를 순식간에 추적하는 비결은 인덱스(Index)에 있다. 흔히 B-Tree 구조로 이루어지는 인덱스는 책 맨 뒤의 찾아보기 페이지와 같아서, 복잡한 Full Table Scan 연산을 회피하고 O(log N)이라는 예술적인 속도로 원하는 데이터를 찾아낸다. 또한, 중복 데이터를 제거하기 위해 여러 테이블로 쪼개 놓은 정보들을 공통 키값을 기준으로 한데 묶는 조인(Join) 연산은 RDBMS의 강력한 마법이자 동시에 최대 아킬레스건이기도 하다.너무 많은 테이블을 마구 조인해서 슬로우 쿼리를 날리는 신입 개발자는 인프라 비용 폭탄의 주범이다.2 스케일 아웃(Scale-out, 수평 확장)이 상대적으로 고통스럽고 장비 스펙 자체를 높이는 스케일 업(Scale-up, 수직 확장)에 의존해야 하는 고질적인 구조 한계가 존재하여 대규모 트래픽 분산 설계 시 지옥 난이도를 선사한다.

4. 인간의 욕심은 끝이 없고, 같은 DROP TABLE을 반복한다

4.1. 실무자의 심장을 멈추는 명령어: DROP DATABASE

모든 데이터베이스 관리자(DBA)와 백엔드 개발자들의 등골을 서늘하게 만드는 고전적이고 치명적인 휴먼 에러다. 분명 개발 서버인 줄 알고 호기롭게 날린 'DROP DATABASE' 또는 'DELETE FROM' 구문이, 알고 보니 운영 서버 콘솔이었음이 밝혀지는 그 찰나의 침묵을 뜻한다. 커밋(Commit) 버튼을 이미 눌러버린 뒤 백업 본이 제대로 동작하지 않는 것까지 확인하고 나면 눈물이 앞을 가릴 새도 없이 사직서를 작성해야 한다.(...) 이 때문에 대형 기업들은 아예 일반 개발자의 운영 DB 접근을 철저히 차단하는 가혹한 방화벽 스택을 구축하고 있다.

5. 여담

  • 오라클의 수백억대 징벌적 합의금: 수많은 대기업들이 오라클 RDBMS를 쓰면서 이탈하지 못하는 이유는, 스키마 구조 변경과 수많은 레거시 쿼리의 호환성 때문이다. 오라클의 악마 같은 라이선스 감사(Audit) 메커니즘에 걸린 기업들이 징벌적 성격의 추가 비용을 내며 눈물로 호소하는 광경은 업계에서 흔한 풍경이다.
  • NoSQL과의 기묘한 동화: 2010년대 초반 빅데이터 열풍과 함께 NoSQL 진영이 RDBMS를 집어삼킬 듯 포효했으나, 오늘날 RDBMS들은 JSON 타입 지원, 실시간 샤딩 메커니즘을 내장하는 등 NoSQL의 핵심 장점들을 흡수 통합하며 오히려 생명력을 무한히 증강시켰다.
  • 에드거 커드 박사의 무시당한 연구: IBM의 연구원이었던 에드거 커드 박사가 처음 관계형 모델을 주창했을 때, 당시 IBM은 메인프레임 기반의 기존 DB 사업권을 보호하기 위해 그의 혁신적인 논문을 철저히 묵살했다. 이를 곁에서 지켜보던 청년 래리 엘리슨이 잽싸게 논문을 훔치다시피 해 만든 회사가 바로 오늘날 글로벌 공룡인 오라클(Oracle)이다.

6. 관련 문서

각주

  1. 데이터의 정합성을 보장하기 위해 도입된 이 격리 수준(Isolation Level) 설정에 따라, 여러 사용자가 동시에 데이터를 수정할 때 발생하는 Lock 대기 현상과 동시성 저하라는 트레이드오프가 야기된다.

  2. 실제로 조인 연산이 3~4개 이상 중첩되는 복잡한 쿼리는 데이터가 늘어남에 따라 쿼리 응답 시간을 지수함수적으로 증가시키는 재앙의 원천이다.