Menu
Coddy logo textTech

데이터베이스란 무엇인가요?

데이터베이스(database)는 프로그램이 빠르고 안전하게 찾고, 추가하고, 변경하고, 삭제할 수 있도록 컴퓨터에 저장한 체계적인 데이터 모음입니다. PostgreSQL, MySQL, SQLite, MongoDB 같은 데이터베이스 관리 시스템(DBMS)이라는 소프트웨어가 이를 관리합니다.

글쓴이: Kevin Spektor, 공동 창업자, CTO

업데이트: 2026년 9월 24일

웹사이트에 로그인하면 사이트는 수백만 개의 계정 중에서 여러분의 계정을 찾고, 비밀번호를 확인하고, 설정을 불러와야 해요. 이 모든 일을 몇 밀리초 안에 하죠. 텍스트 파일을 열어 한 줄씩 읽는 방식이 아니에요. SELECT * FROM users WHERE email = 'ana@example.com' 같은 요청을 데이터베이스에 보내면, 데이터베이스는 책 뒤쪽의 색인처럼 인덱스를 써서 바로 해당 행으로 가요.

데이터베이스는 어떻게 동작하나요

두 가지가 함께 동작해요. 데이터베이스는 정해진 구조로 정리된 데이터예요. 데이터베이스 관리 시스템(DBMS)은 그 데이터를 파일에 저장하고, 일관성을 유지하고, 요청에 답하는 프로그램이에요. PostgreSQL, MySQL, SQLite는 DBMS이고, 여러분의 고객 목록이 데이터베이스예요.

관계형 데이터베이스에서 데이터는 테이블에 들어 있어요. 각 테이블에는 열(이름, 국가, 포인트)과 행(사용자당 하나)이 있어요. 요청은 다음 단계를 거쳐요.

  1. 프로그램이 쿼리를 보내요. 보통 SQL(Structured Query Language)로 작성해요.
  2. DBMS가 쿼리를 파싱하고 답을 구할 계획을 세워요. 어떤 테이블을 읽을지, 인덱스로 대부분의 행을 건너뛸 수 있는지 정해요.
  3. 디스크에서 고정 크기의 페이지 단위로 데이터를 읽고(SQLite는 기본 4,096바이트, PostgreSQL은 8 KB), 자주 쓰는 페이지는 메모리에 둬요.
  4. 행을 걸러 내고, 정렬하고, 결합한 뒤 결과를 돌려줘요.

Python에는 SQLite가 기본으로 들어 있어서 여기서 바로 실제 데이터베이스를 실행해 볼 수 있어요.

Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5

프로그램은 어떻게 검색할지는 말하지 않아요. 원하는 결과를 설명하면 DBMS가 그 결과를 얻는 방법을 정해요. 이것이 데이터베이스에 질문하는 것과 리스트를 반복문으로 도는 것의 가장 큰 차이예요.

데이터베이스의 종류

종류데이터 저장 형태예시주요 용도
관계형(SQL)키로 연결된 행과 열의 테이블PostgreSQL, MySQL, SQLite, Oracle, SQL Server사용자, 주문, 결제: 대부분의 애플리케이션
문서형JSON 같은 문서MongoDB, Firestore, CouchDB레코드마다 필드가 다른 데이터
키-값키 하나로 찾는 값Redis, DynamoDB캐시, 세션, 카운터
와이드 컬럼여러 서버에 퍼진, 열이 유연한 행Cassandra, HBase매우 많은 쓰기량
그래프노드와 노드 사이의 관계Neo4j소셜 네트워크, 추천
시계열시간으로 색인한 측정값InfluxDB, TimescaleDB지표, 센서 측정값
벡터숫자 목록(임베딩)pgvector, Pinecone, MilvusAI 기능을 위한 유사도 검색

관계형이 아닌 것은 흔히 NoSQL로 묶어요. 테이블, 제약 조건, SQL이 폭넓은 문제를 잘 해결하기 때문에 관계형 데이터베이스는 여전히 대부분의 애플리케이션에서 기본 선택이에요. 여러 종류를 함께 쓰는 제품도 많아요. PostgreSQL은 JSON 문서를 저장할 수 있고, pgvector는 여기에 벡터 검색을 더해요.

트랜잭션: 전부 아니면 전무

Ana에게서 Ben에게 돈을 옮기려면 변경이 두 번 필요해요. Ben에게 더하고, Ana에게서 빼는 것이죠. 그 사이에 프로그램이 멈추면 돈이 어디선가 생겨나요. 트랜잭션은 변경들을 묶어서 모두 저장되거나 하나도 저장되지 않게 해요. 여기서는 두 번째 변경이 규칙(잔액은 0 아래로 내려갈 수 없음)을 어기므로 데이터베이스가 첫 번째 변경까지 되돌려요.

transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}

Ben에게 40이 더해졌다가 다시 취소되었으므로 합계는 여전히 맞아요. 관계형 데이터베이스는 트랜잭션에 대해 ACID라고 불리는 네 가지 성질을 보장해요. 원자성(전부 아니면 전무), 일관성(CHECK 같은 규칙이 항상 지켜짐), 격리성(동시에 트랜잭션을 실행하는 두 사용자가 서로의 끝나지 않은 작업을 보지 못함), 지속성(한 번 저장된 변경은 비정상 종료나 정전에도 남음)이에요.

데이터베이스와 스프레드시트, 파일의 차이

텍스트 또는 CSV 파일스프레드시트데이터베이스
크기프로그램이 불러올 수 있는 만큼Excel에서 시트당 1,048,576행수십억 행
여러 명이 동시에 쓰기불가능제한적가능, 잠금과 트랜잭션 사용
레코드 하나 찾기파일 전체 읽기필터 또는 검색인덱스 조회
데이터 규칙없음선택적 유효성 검사타입, 제약 조건, 외래 키
질문하기직접 코드 작성수식SQL 또는 쿼리 API

스프레드시트는 한 사람이 수천 행을 들여다보는 데 좋은 도구예요. 여러 프로그램이나 사용자가 동시에 데이터를 쓰거나 데이터가 규칙을 지켜야 한다면 데이터베이스가 맞는 도구예요.

데이터베이스는 데이터를 어떻게 보호하나요

DBMS는 데이터 파일을 건드리기 전에 각 변경을 로그에 먼저 기록해요(선행 기록 로그, write-ahead log). 그래서 비정상 종료 뒤에 끝나지 않은 작업을 다시 실행하거나 되돌릴 수 있어요. PostgreSQL은 8 KB 페이지마다 체크섬을 저장할 수 있고, 고장 난 디스크가 손상된 데이터를 돌려주면 체크섬 실패를 보고해요. 사용자와 권한은 누가 어떤 테이블을 읽거나 바꿀 수 있는지 정하고, 복제는 다른 서버에 사본을 유지해요. 프로그램은 사용자 입력을 위의 ? 자리 표시자처럼 매개변수로 넘겨야 하며, SQL 문자열에 그대로 붙여 넣어서는 안 돼요. SQL 인젝션 공격은 그렇게 해서 일어나요.

흔한 오해

  • "SQL이 데이터베이스다." SQL은 언어예요. PostgreSQL, MySQL, SQLite는 그 언어를 이해하는 데이터베이스예요.
  • "NoSQL은 SQL을 전혀 쓰지 않는다는 뜻이다." 이 용어는 보통 "not only SQL"로 읽히며, Cassandra의 CQL처럼 SQL과 비슷한 쿼리 언어를 가진 NoSQL 데이터베이스도 여럿 있어요.
  • "데이터베이스는 항상 큰 서버다." SQLite는 프로그램이 직접 여는 파일 하나이며 서버가 전혀 없어요. 모든 Android와 iOS 휴대폰 안에서 실행돼요.
  • "데이터베이스에 넣은 데이터는 영원히 안전하다." 데이터베이스는 비정상 종료로부터 데이터를 지키지만, 누군가 실수로 DELETE를 실행하는 것까지 막지는 못해요. 백업은 여전히 필요해요.

다음 단계

SQL 강좌는 첫 SELECT부터 쿼리를 가르쳐요. 다음 단계는 SQLite 문서에서 다뤄요. SQLite란 무엇인지, 테이블 만들기, 인덱스, SQL 인젝션 방지를 읽어 보세요. 데이터가 디스크에 어떻게 배치되는지 보려면 바이트란 무엇인지를, 손상된 페이지를 어떻게 감지하는지는 체크섬을 읽어 보세요.

자주 묻는 질문

데이터베이스를 쉽게 설명하면 무엇인가요?
데이터베이스는 프로그램이 정보를 보관해 두었다가 빠르게 다시 찾을 수 있는 곳이에요. 완벽한 색인이 달린 서류 캐비닛을 떠올려 보세요. "지난주 주문 전부"를 요청하면 기록이 수백만 건이어도 몇 밀리초 만에 답을 받아요.
데이터베이스의 예로는 무엇이 있나요?
휴대폰의 연락처는 데이터베이스에 저장돼요. Android와 iOS 모두 SQLite를 탑재하고 있어요. 은행은 고객 계좌를 Oracle이나 PostgreSQL 같은 데이터베이스에 보관하고, 위키백과는 문서를 MariaDB에 저장해요. 온라인 쇼핑몰은 상품, 고객, 주문을 서로 연결된 테이블에 보관해요.
데이터베이스의 네 가지 종류는 무엇인가요?
공식적인 네 가지 목록은 없어요. 가장 자주 꼽히는 넷은 관계형 데이터베이스(테이블과 SQL), 문서 데이터베이스(JSON 같은 레코드), 키-값 저장소(키로 값을 찾음), 그래프 데이터베이스(노드와 관계)예요. 예전 교재에는 계층형과 네트워크형 데이터베이스도 나와요.
가장 많이 쓰이는 데이터베이스 5가지는 무엇인가요?
Oracle, MySQL, Microsoft SQL Server, PostgreSQL, MongoDB가 수년째 DB-Engines 인기 순위 상위 다섯 자리를 지키고 있어요. 개발자 사이에서는 2023년부터 Stack Overflow 개발자 설문에서 PostgreSQL이 가장 많이 쓰이는 데이터베이스이고, 휴대폰과 브라우저 안에 탑재되는 SQLite가 가장 널리 배포된 데이터베이스예요.
데이터베이스와 DBMS는 어떻게 다른가요?
데이터베이스는 테이블이나 문서로 정리된 데이터 자체예요. DBMS는 PostgreSQL이나 MySQL처럼 그 데이터를 디스크에 저장하고 요청에 답하는 소프트웨어예요. 흔히 둘 다 "데이터베이스"라고 불러요.
데이터베이스를 쓰려면 SQL을 배워야 하나요?
관계형 데이터베이스라면 그래요. SQL로 테이블을 만들고 데이터에 질문을 던지며, 기초는 며칠이면 배울 수 있어요. 많은 프로그램이 SQL을 대신 작성해 주는 라이브러리를 쓰지만, SQL을 알면 그 라이브러리가 무엇을 하는지, 왜 쿼리가 느린지 훨씬 쉽게 이해할 수 있어요.
Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기