DB는 그냥 거대한 공용 엑셀이었어
1.
경력단절(?) 기간에 빅데이터 취업알선 학원에서 SQL을 공부한 적이 있습니다. 그때 느낀 건 '엑셀은 신'이라는 점이었어요. 엑셀이 없었으면 몇백 개 수준의 데이터도 하나하나 코드를 써서 관리해야 했겠구나 싶더라고요. 욕쟁이 시절의 빌 게이츠가 엑셀만큼은 Fxxk을 다섯 번만 했다는 전설적인(?) 스토리도 이해가 갔습니다. 사실 엑셀의 구조가 데이터베이스(DB)를 보여주는 그 자체거든요.
2.
데이터베이스는 아주 거대하고 똑똑한 공용 엑셀 파일 같습니다. 일반 엑셀과 다른 점은 수백만 명이 동시에 접속해서 읽고 써도 파일이 깨지지 않고, 특정 데이터를 찾는 속도가 빛의 속도라는 점이죠.
3.
인스타그램의 수억 개 '좋아요' 처리도 이 똑똑한 엑셀 덕분입니다. 우리가 '좋아요'를 누르면, DB에 저장된 [게시물 ID / 좋아요 누른 사람 ID / 시간]이라는 표(Table, 엑셀의 시트 같은 것)에 새로운 행(Row)이 하나 추가됩니다. 덕분에 내가 누른 좋아요가 엉뚱한 게시물에 기록되지 않죠. 이를 데이터 무결성(Data Integrity)이라고 합니다. 굉장히 중요한 규칙이라고 하네요.
4
실무에서는 주로 두 종류의 DB(관계형, 비관계형)를 섞어서 쓰는데요. 관계형 DB는 엑셀처럼 딱딱 맞는 표 형식의 데이터를 관리하는 체계입니다. 예를 들어, 쇼핑 앱에서 상품명, 가격, 재고 같은 정보를 꺼내올 때 쓰이죠. 여기에서 엑셀 셀 하나(가격)를 클릭하면 원가, 세금 등 가격과 관련된 또 다른 표가 연결되는데요. 이처럼 데이터 간의 '관계'가 이어져 관계형 DB라고 부릅니다. (주로 MySQL, PostgreSQL 같은 프로그램으로 쉽게?사용합니다.)
5.
반면 비관계형 DB는 형식이 제각각인 데이터를 유연하게 담습니다. 쇼핑 앱의 긴 줄글 리뷰나 다양한 크기의 이미지처럼 규격화하기 어려운 정보들을 가져올 때 유리하죠. (주로 MongoDB, DynamoDB 등을 사용합니다.) 결국 우리가 보는 하나의 상품 페이지는 이 두 종류의 DB에서 가져온 데이터를 합쳐서 예쁘게 보여주는 결과물입니다.
6.
저도 학원에서 SQL을 배울 때, 데이터를 추출하는 논리가 생각보다 말과 비슷해서 놀랐는데요. 예를 들어, SELECT name FROM products WHERE price < 10000; (상품 테이블에서 가격이 만 원 미만인 이름들을 보여줘) 같은 문장이랍니다. 이런 SQL 문법을 조금만 알면 개발자에게 매번 부탁하지 않고도 내가 원하는 데이터를 직접 뽑아보는 짜릿함(?)을 느낄 수 있습니다. 물론... 현실은 엑셀 'VLOOKUP'만 잘해도 충분하지만요.
7.
데이터베이스는 '기억력'과 같습니다. 그 기억이 정확하고 빠를 때 개인화된 추천 알고리즘도 작동하고 고객의 신뢰도 얻을 수 있는 거죠. DB가 궁금하다면 지금 당장 내 폰의 '설정' 페이지를 보세요. 내가 바꾼 다크모드 설정이 앱을 껐다 켜도 유지되는 건, 폰 안에 있는 작은 DB(SQLite 등)가 내 설정을 기억하고 있기 때문입니다.
8.
더 깊이 들어가면 인덱싱이나 샤딩 같은 무시무시한 용어들도 나오는데요. 우리 비개발자들은 "데이터가 엑셀 표처럼 차곡차곡 쌓여서 정확하게 흐르고 있구나" 정도만 이해해도 충분합니다. 몇 만 개 정도는 엑셀로 충분하니 저도 큰 필요성까지는 못 느끼고 있고요.
[세 줄 이해]
- DB는 수많은 데이터를 빠르고 정확하게 저장하고 찾는 도구이다.
- SQL(표 형식)과 NoSQL(자유 형식)은 용도에 따라 적재적소에 쓰인다.
- 정확한 데이터 관리는 AI 추천과 비즈니스 분석의 핵심이다.