
데이터베이스(DB)라는 거대한 기억장치가 만들어진 이유는 인간의 기록 본능 때문이다 < 출처 : Gemini >
인류의 역사는 '기록'하려는 처절한 몸부림의 연속이었습니다. 기원전 3세기, 프톨레마이오스 1세가 세운 알렉산드리아 도서관은 당시 세상의 모든 지식을 집대성하려 했던 인류 최초의 '중앙 집중형 서버'였습니다. 그들은 항구에 들어오는 모든 배를 뒤져 책이 발견되면, 사본을 만들고, 원본을 보관할 만큼 수집에 집착했죠.
하지만, 단순히 쌓아둔다고 지식이 되지는 않습니다. 수만 권의 파피루스 뭉치 속에서 내가 원하는 '항해술' 기록을 손쉽게 찾아서 바로 읽을 수 없다면, 그것은 지식의 보고가 아니라 그저 거대한 종이 더미에 불과하겠죠. 여기서 우리는 데이터베이스(DB)의 존재 이유를 발견하게 됩니다. DB는 단순히 '저장'하는 곳이 아니라, '어떻게 잘 꺼낼 것인가'를 치열하게 고민한 결과이기 때문입니다. 그러나, 역사 속에서 알렉산드리아 도서관은 불타 없어졌고, 인류의 지혜가 한순간에 재로 변했을 때 얻은 교훈도 있습니다. 아무리 방대한 지식을 가지고 있어도, 그것을 지키고 복구할 시스템이 없다면 신기루에 불과하다는 것을 말이죠.

알렉산드리아 도서관을 태우는데 6개월이 걸렸다는 얘기도 있지만 사실무근이며 신비에 쌓여있다. < 출처 : 도서관디자인연구소 >
그럼, 인류의 역사에서 데이터베이스는 어떻게 변화해 왔을까요?
파피루스에서 엑셀, NoSQL까지
고대의 파피루스는 단순히 저장하고 쌓기에 바빴기 때문에, 중복되는 문서도 많았으며, 낱장의 파피루스 뭉치로 실용성이 매우 떨어졌습니다. 이건 일종의 파일들을 우리가 무작위로 만든 연도별 폴더에 저장하는 것과 같은 '파일시스템'이라고 볼 수 있죠. 여러분이 무작정 작성해서 폴더에 샇아두기만 하면, 얼마나 불편하고 찾기 힘든지 여러분들은 이미 아실 겁니다. 괜히 폴더 분류법이라거나, 백업이라는 것이 생겨난 것이 아니겠죠? 윈도우 탐색기의 검색 기능도 그래서 있는 겁니다. 여러분의 분류법을 믿지 못한다는 전제에서 생긴 기능인 거에요.
중세에 들어서면서 엄격하게 작성되는 '귀족의 가계도'와 '종교 기록' 등을 중심으로 지식이 쌓이기 시작했습니다. 이것은 비유하자면, 계층 구조와 네트워크 DB 형태를 가진 고정적인 구조로 만들어 졌어요. 조금씩이나마 특정 영역에 대한 정보들로 분화되기 시작하면서, 그룹으로 묶는 다는 개념이 생기기 시작한 겁니다. 앞에서 예로 들었던 폴더를 이제 구조적으로 만드는 것과 비슷합니다. 동영상 폴더 밑에 여행이란 폴더가 있고, 거기에 사람이나 지역, 연도별로 폴더를 만들고 저장하는 구조인 셈이죠.
근대에 들어서면서 사전(Dictionary)라는 개념이 생기면서, 일종의 백과사전이 만들어 집니다. 백과사전의 개념은 매우 재미있는 것이 하나의 개념 안에 다른 개념이 들어있고, 핵심 키워드가 의미와 용도를 나타냅니다. 그런데, 그 개념을 파헤치면 여러 단어들이 1차적인 의미와 2차적인 부의미를 갖게 되는 방식을 띄게 되죠. 예를 들면, 사과(Apple)라는 단어를 찾는다면 그 옆에는 '과일', '빨강', '뉴턴'과 같은 키워드들이 일종의 인덱스(색인) 역할을 하게 됩니다. 사과라는 데이터 자체는 독립적이지만, '뉴턴'이라는 키워드를 타고 넘어가면 '물리학'이라는 또다른 방대한 백과사전의 페이지로 연결되는 식이죠.
IBM 출신 영국의 컴퓨터 과학자 에드가 커드(Edgar F.Codd)가 제안한 '관계형 데이터베이스(Related DB)'의 혁명은 바로 여기서 시작되었습니다. 정보를 하나의 거대한 두루마리에 적는게 아니라, 주제별로 쪼개어 표(Table)로 만들고, 이들을 '관계'라는 가느다란 실로 연결한 거죠. 덕분에 우리는 '뉴턴'에 대한 새로운 데이터가 입력되어도, '사과' 페이지를 수정할 필요는 없게 되었습니다. 중복은 사라지고, 데이터의 무결성은 마치 잘 짜인 법전처럼 견고해졌죠. 이것은 지식의 정규화(Normalization)이자, 인류가 정보의 무질서를 수학적 논리로 이겨낸 시작점이 되었습니다. 이것이 바로 우리가 DB라고 아직도 일반적으로 부르는 개념이며, 오라클(Oracle)은 '데이터가 어디에 저장되었는지 몰라도 된다. 논리적인 관계만 알면 된다'는 혁신으로부터 DB를 상용화해 표준화한 기업이 되었습니다. 이렇게 행과 열로 구분된 데이터를 사무에 사용하도록 만들어진 것이 엑셀(Excel)이라는 사무용 도구이기도 해요.
현대에 들어서면서 인류는 데이터의 대폭발 시대를 맞이했어요. 이 시점부터는 인류에게는 백과사전식의 엄격한 분류체계가 오히려 짐이 되기 시작합니다. 모든 데이터를 정해진 칸에 넣는다는 개념과 완벽한 '관계'를 연결해 둔 인덱스(Index)를 찾아서 데이터를 찾는데 오랜 시간이 걸릴만큼 엄청난 양의 데이터가 SNS와 인터넷에 쌓였거든요.
그래서, 인류가 선택한 NoSQL은 그런 강박들을 버리고, 미완성의 영역속에서도 주변 환경에 적응하는 방식을 취했습니다. 데이터가 들어오는대로 그 형태를 인정하고 저장했죠. 거대한 문서로, 때로는 키와 값의 쌍으로, 알렉산드리아 도서관처럼 지식을 한 곳에 모아 불태워질 위험을 감수하는 대신, 전세계의 서버로 지식을 잘게 쪼개어 흩뿌리는 '분산 가용성'의 시대를 열기도 했습니다. 즉, NoSQL은 '규칙(Schema)'보다는 속도와 유연성이 중요한 구조로, 100%의 정확성을 담보하지 않는 데이터베이스 방식입니다. NoSQL은 틀릴 수도 있고, 모든 정보를 불러오지 못할 수도 있지만, 매우 빠르다는 장점이 있다는거죠. 우리가 인터넷 검색에서 자주 사용하는 해시태그(#)가 바로 약하게 결합된 키워드로서 활용되는 개념이라고 이해할 수도 있습니다.
| 시대 | 핵심 모델 | 특징 | 비유 |
| 고대 | 파일 시스템 | 단순 저장, 중복 많음 | 낱장의 파피루스 뭉치 |
| 중세 | 계층/망형 DB | 고정된 구조, 유연성 부족 | 엄격한 가문 가계도 |
| 근대 | RDBMS | 수학적 논리, SQL 표준화 | 잘 정리된 백과사전 |
| 현대 | NoSQL / NewSQL | 대규모 분산, 초고속 처리 | 전 세계로 복제되는 디지털 밈(Meme) |
AI 시대, 왜 다시 DB인가?
AI 시대가 되면서 '데이터가 석유'라는 말이 진부해질 정도로 들려옵니다. 왜냐하면, AI은 데이터를 통해 학습하고, 학습에 필요한 데이터는 점점 금값이 되어가고 있거든요. 그렇지만 정제되지 않은 데이터는 석유가 아니라 오염된 진흙에 가깝습니다. AI에게 '우리 회사 매출을 분석해줘'라고 프롬프트를 했을 때, DB가 엉망이라면 AI는 환각현상을 일으키며 거짓말을 쏟아내겠죠. A팀에서 만든 매출 문서와 B팀에서 만든 매출 문서가 서로 다른 숫자를 기재하고 있다거나, C신문사의 매출 관련 신문기사의 내용이 다르게 인터넷에 떠있다면 말입니다.
결국, 미래의 기업에게 필요한 AI 경쟁력은 '데이터'가 될 것입니다. DB의 역사가 '어떻게 쌓을 것인가?'라는 생존의 문제에서 '어떻게 연결하고 지켜낼 것인가'로 발전해 왔고, AI 시대에는 '가짜 데이터'로부터 검증된 '진짜 데이터'를 제공하는 안전한 저장고(Silo)가 되는 역할을 하고 있습니다.
---
데이터베이스(DB)에서 사용되는 여러 용어들
스키마(Schema) : 건물을 짓기 전의 설계도와 같은 개념입니다. '이 칸에는 숫자만 들어올 수 있어'라고 선언하는 규칙이죠. 일반적으로는 계획, 설계, 개요 또는 구조라는 의미로 사용되기도 합니다.
SQL (Structured Query Language) : DB라는 거대한 도서관의 사서와 대화하는 '공용어' 입니다. '지난 달 매출 중에서 100만원 이상인 것만 골라줘'라고 하는 식으로 논리적으로 명령하는 기술이죠. 한국에서는 '에스큐엘'이라고 보통 하지만, 영어로는 '시퀄'이라고 읽는 재미난 부분도 있습니다.
트랜잭션(Transaction) : 데이터가 입력되거나, 수정 혹은 삭제되는 행위를 의미합니다. 완벽한 자기 종결의 행위라고도 부르는데, '전부 성공하거나, 아니면 아예 없었던 일로 하는 것'을 의미해요. 여러분이 은행 송금 중에 국가적인 정전이 일어나서 중단되었다면 어떤가요? 여러분의 계좌에서 돈은 빠져나갔는데, 상대방 계좌엔 입금이 되지 않았다면요? 즉, 트랜잭션이란 송금과 입금을 하나의 행위로 보고, 한 개의 신뢰성이 확보된 프로세스로 묶는 것을 의미하기도 합니다. 즉, 트랜잭션이 완료되었다면, 이것은 완전 무결해야 하는 DB의 작업 하나가 끝났다는 의미가 되는 거에요.
전체 사이트에서 댓글·관련 글을 함께 보시려면
이야기 공장에서 보기 →