C.W.K.
Stream
Lesson 01 of 10 · published

데이터베이스가 뭔데?

~15 min · foundations, concepts

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

완벽한 기억력의 사서

데이터베이스는 한 가지 일을 위해 존재하는 소프트웨어야 — 구조화된 정보를 정확하게 기억하기. 크래시 나도, 재부팅 해도, 동시에 수백 명이 들이대도, 운영의 난장판 속에서도. 데이터를 던져주면 정리하고 인덱스 걸고 ms 단위로 답해줘. 이게 없으면 CSV grep 하면서 "어느 스프레드시트가 진짜냐"로 회의하고 있는 자기 자신을 발견하게 돼.

진짜 데이터베이스가 파일 캐비닛이랑 다른 점은 엔진에 박힌 네 가지 보장이야 — 구조 (모든 컬럼이 타입을 가짐), 정합성 (제약이 잘못된 데이터를 들어오기 전에 거절), 동시성 (여러 명이 써도 깨지지 않음), 지속성 (COMMIT 이 돌아온 후 1ms 만에 정전 나도 데이터 살아있음).

평생 쓸 관계형 어휘

밑에 나올 PostgreSQL 개념 전부가 세 명사 위에 서있어 — 테이블이 데이터를 담고, 이 개별 레코드, 컬럼이 타입 있는 필드. 수학 어휘 (relation, tuple, attribute) 가 이거랑 일대일로 대응돼. SQL 은 이 구조를 정의하고 질문하는 언어고.

이 quest 의 전제

PostgreSQL 경험 0. 터미널 좀 익숙하면 좋지만 필수 아냐 — 모든 예제가 copy-paste 가능한 psql 세션이야. 끝나면 스키마 설계하고, window function 짜고, EXPLAIN 출력 읽고, isolation level 갖고 진지하게 토론하고 있을 거야.

Code

작은 도서관 만들기·sql
-- 테이블 한 개, 행 세 개, 쿼리 한 번 — 데이터베이스의 전체 호.
CREATE TABLE books (
    id    INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    title TEXT NOT NULL,
    genre TEXT,
    year  INTEGER CHECK (year BETWEEN 1450 AND 2100)
);

INSERT INTO books (title, genre, year) VALUES
    ('The Pragmatic Programmer', 'tech', 2019),
    ('Designing Data-Intensive Applications', 'tech', 2017),
    ('The Three-Body Problem', 'sci-fi', 2008);

SELECT title, year
FROM   books
WHERE  genre = 'tech'
ORDER  BY year DESC;
같은 데이터를 깨지기 쉬운 CSV 로·text
# Postgres 도입 전 너네 팀이 쓰던 '데이터베이스'.
books.csv
id,title,genre,year
1,"The Pragmatic Programmer",tech,2019
2,"Designing Data-Intensive Applications",tech,2017
3,"Three-Body Problem",scifi,2008          <-- 오타: sci-fi 여야 함
4,"Foundation",sci-fi,                     <-- year 누락
5,"Dune",sci-fi,1965,extra                 <-- 컬럼 깨짐

External links

Exercise

PostgreSQL 로컬 설치하고 (brew install postgresql@17 또는 공식 설치 파일), psql 띄워서 위의 books 테이블 재현해. 본인 책 두 권 더 INSERT. 1200 년 책 넣어보고 CHECK 제약이 어떻게 거절하는지 에러 메시지 정확히 확인.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.