데이터베이스가 처음인 사람을 위한 PostgreSQL 소개
PostgreSQL은 무엇인가요?
PostgreSQL은 데이터를 안전하게 보관하고, 필요할 때 빠르게 찾아보기 위한 데이터베이스 프로그램입니다. 보통 "포스트그레스큐엘"이라고 읽고, 줄여서 "Postgres"라고 부르기도 합니다.
공식 사이트에서는 PostgreSQL을 오픈소스 관계형 데이터베이스라고 소개합니다.1 여기서 중요한 말은 세 가지입니다.
첫째, 오픈소스입니다. 누구나 사용할 수 있고, 소스 코드가 공개되어 있습니다. 비개발자 입장에서는 "라이선스 비용 없이 시작할 수 있는 신뢰도 높은 데이터 보관 도구"라고 이해하면 충분합니다.
둘째, 관계형 데이터베이스입니다. 관계형이라는 말은 데이터를 표처럼 저장하고, 표와 표 사이의 관계를 이용해 필요한 답을 찾는다는 뜻입니다. 예를 들어 고객 명단 표와 주문 내역 표가 따로 있어도, 고객 번호를 기준으로 두 표를 연결하면 "김민지 고객이 지금까지 주문한 상품 목록"을 찾을 수 있습니다.
셋째, 데이터베이스입니다. 데이터베이스는 단순한 파일 하나가 아닙니다. 여러 사람이 함께 쓰는 업무용 보관함에 가깝습니다. 고객 명단, 상품 재고, 주문 내역, 결제 기록, 상담 기록을 한곳에 정리하고 필요할 때 꺼내 볼 수 있게 해 줍니다.
AI 생성 이미지
엑셀 파일과 데이터베이스는 무엇이 다를까요?
처음에는 데이터베이스가 엑셀과 비슷해 보입니다. 엑셀에도 표가 있고, 행과 열이 있습니다. 고객 이름, 전화번호, 주소를 적어 두면 훌륭한 고객 명단이 됩니다.
하지만 업무 데이터가 조금만 커지면 차이가 나타납니다.
엑셀 파일은 보통 "한 사람이 열어서 수정하는 문서"에 가깝습니다. 물론 공유 기능도 있지만, 파일이 여러 개로 복사되거나 누가 어떤 값을 바꿨는지 헷갈릴 때가 많습니다. 예를 들어 고객명단_최종.xlsx, 고객명단_진짜최종.xlsx, 고객명단_수정본.xlsx 같은 파일이 생기면 어떤 파일을 믿어야 할지 알기 어렵습니다.
데이터베이스는 "여러 사람이 함께 쓰는 공식 장부"에 가깝습니다. 원본 데이터는 한곳에 있고, 사용자는 권한에 따라 필요한 내용을 조회하거나 수정합니다. 고객팀은 고객 정보를 보고, 물류팀은 배송 정보를 보고, 회계팀은 결제 정보를 보는 식입니다. 같은 데이터를 각자 복사해 들고 있는 것이 아니라, 같은 보관함을 기준으로 일합니다.
엑셀이 나쁘다는 뜻은 아닙니다. 엑셀은 빠르게 계산하고, 간단한 목록을 만들고, 보고서를 손으로 다듬기에 매우 좋은 도구입니다. 반면 PostgreSQL은 데이터가 계속 쌓이고, 여러 표가 연결되고, 여러 사람이 같은 기준으로 데이터를 봐야 할 때 강합니다.
간단히 말하면 이렇습니다.
엑셀: 개인 작업용 계산장, 빠른 정리, 작은 목록에 강함
PostgreSQL: 공동 업무용 장부, 안전한 보관, 많은 데이터 조회와 연결에 강함
주소록으로 이해하는 기본 용어
데이터베이스를 처음 배울 때 가장 어려운 부분은 용어입니다. 하지만 대부분은 이미 알고 있는 업무 도구로 바꿔 생각할 수 있습니다. 주소록을 예로 들어 보겠습니다.
데이터베이스는 하나의 큰 보관함입니다. 회사 업무용 캐비닛이라고 생각하면 됩니다. 이 캐비닛 안에는 고객 주소록, 주문 장부, 상품 목록, 상담 기록 같은 여러 묶음이 들어갑니다.
테이블은 보관함 안에 들어 있는 한 권의 장부입니다. 예를 들어 고객 테이블은 고객 명단 장부입니다. 주문 테이블은 주문 내역 장부입니다. 상품 테이블은 상품 목록 장부입니다.
열은 장부의 항목입니다. 고객 명단을 보면 이름, 전화번호, 이메일, 가입일 같은 칸이 있습니다. 이 각각이 열입니다. 엑셀에서 A열, B열처럼 세로 방향으로 내려가는 항목을 떠올리면 쉽습니다.
행은 실제 기록 한 줄입니다. 고객 한 명의 정보가 한 행입니다. 예를 들어 "김민지, 010-1234-5678, [email protected], 2026-06-01"이라는 한 줄이 있다면, 이것이 고객 테이블의 한 행입니다.
정리하면 다음과 같습니다.
데이터베이스: 여러 장부를 담는 큰 보관함
테이블: 고객 명단, 주문 내역 같은 장부 한 권
열: 이름, 전화번호, 가입일 같은 항목
행: 고객 한 명, 주문 한 건 같은 실제 기록
마지막으로 서버라는 말도 자주 나옵니다. 서버는 데이터를 보관하고 요청을 받아 처리하는 곳입니다. 꼭 복잡하게 생각할 필요는 없습니다. "PostgreSQL 보관함이 놓여 있는 컴퓨터 또는 공간" 정도로 이해하면 됩니다. 우리는 보통 pgAdmin이나 DBeaver 같은 화면 도구를 통해 그 보관함에 접속해 데이터를 봅니다.
SQL은 프로그래밍이 아니라 요청 문장에 가깝습니다
데이터베이스를 사용하려면 SQL이라는 말을 만나게 됩니다. SQL은 데이터를 조회하고 정리하기 위해 데이터베이스에 보내는 문장입니다.
여기서 많은 사람이 겁을 냅니다. "나는 개발자가 아닌데 SQL을 배워도 될까?" 하고 생각합니다. 하지만 이 책에서는 SQL을 프로그래밍 언어라기보다 데이터에게 던지는 질문 문장으로 보겠습니다.
예를 들어 우리가 하고 싶은 말이 이것이라고 해 봅시다.
고객 명단에서 고객 이름과 전화번호만 보여 주세요.
SQL로는 다음처럼 씁니다.
SELECT name, phone
FROM customers;이 문장은 컴퓨터에게 복잡한 프로그램을 만들라고 지시하는 것이 아닙니다. 이미 있는 고객 장부에서 name과 phone이라는 열만 꺼내 보여 달라고 요청하는 것입니다.
결과는 보통 이런 표 모양으로 돌아옵니다.
| name | phone |
|---|---|
| 김민지 | 010-1234-5678 |
| 박준호 | 010-2222-3333 |
결과 해석은 간단합니다. 고객 테이블 전체에서 이름과 전화번호 칸만 골라 본 것입니다. 엑셀에서 필요한 열만 숨기지 않고 남겨 보는 것과 비슷합니다.
앞으로 이 책에서는 SQL을 외계어처럼 다루지 않습니다. 먼저 "무엇을 하고 싶은지" 한국어 문장으로 쓰고, 그다음 SQL로 바꾸어 보겠습니다. SQL은 암기 과목이 아니라 요청 문장을 정확하게 쓰는 연습에 가깝습니다.
관계형 데이터베이스라는 말의 진짜 의미
관계형 데이터베이스는 표 하나만 잘 다루는 도구가 아닙니다. 여러 표를 연결해 답을 찾는 도구입니다.
예를 들어 온라인 쇼핑몰 업무를 생각해 보겠습니다. 하나의 엑셀 시트에 고객 이름, 전화번호, 상품명, 수량, 결제금액, 배송주소를 모두 적을 수도 있습니다. 처음에는 편합니다. 하지만 같은 고객이 여러 번 주문하면 고객 정보가 계속 반복됩니다. 전화번호가 바뀌면 예전 주문 행까지 모두 찾아 고쳐야 할 수도 있습니다.
데이터베이스에서는 보통 이렇게 나눕니다.
고객 테이블: 고객 번호, 이름, 전화번호
상품 테이블: 상품 번호, 상품명, 가격
주문 테이블: 주문 번호, 고객 번호, 주문일
주문상세 테이블: 주문 번호, 상품 번호, 수량
처음 보면 더 복잡해 보입니다. 하지만 장점이 있습니다. 고객 정보는 고객 테이블에 한 번만 잘 관리하면 됩니다. 상품 가격도 상품 테이블에서 관리합니다. 주문 테이블은 "누가 언제 주문했는지"를 기록하고, 주문상세 테이블은 "무엇을 몇 개 샀는지"를 기록합니다.
이렇게 나누어 두면 질문이 쉬워집니다.
이번 달 주문한 고객은 누구인가?
가장 많이 팔린 상품은 무엇인가?
특정 고객의 누적 구매 금액은 얼마인가?
재고가 부족한 상품은 무엇인가?
PostgreSQL은 이런 질문에 답하기 위해 여러 장부를 연결해 줍니다. 그래서 관계형 데이터베이스라고 부릅니다.
PostgreSQL은 표 모양 데이터만 다루지 않습니다
업무 데이터가 항상 깔끔한 표 모양으로만 들어오지는 않습니다. 설문 응답처럼 사람마다 답변 항목이 조금씩 다를 수도 있고, 외부 서비스에서 받은 주문 정보가 묶음 형태로 들어올 수도 있습니다.
예를 들어 어떤 고객의 추가 정보가 다음처럼 들어온다고 해 보겠습니다.
{
"favorite_color": "blue",
"marketing_agree": true,
"tags": ["VIP", "newsletter"]
}이런 형태를 JSON이라고 부릅니다. JSON은 데이터를 이름과 값의 묶음으로 표현하는 방식입니다. 엑셀 표처럼 항상 칸이 딱 고정되어 있지는 않지만, 사람도 읽을 수 있고 시스템끼리 주고받기도 좋습니다.
PostgreSQL은 일반적인 표 데이터뿐 아니라 JSON, JSONB 같은 형태의 데이터도 저장하고 다룰 수 있습니다. 공식 문서에서도 JSON 값을 처리하고, 필요한 값을 꺼내거나 행과 열처럼 펼쳐 보는 여러 기능을 제공합니다.2
비개발자 입장에서 이 말의 의미는 단순합니다. PostgreSQL은 고객 명단이나 주문 내역처럼 반듯한 표 데이터에 강하면서도, 외부 서비스에서 넘어오는 유연한 데이터도 함께 담을 수 있습니다. 그래서 처음에는 단순한 장부처럼 시작해도, 나중에 업무가 커졌을 때 더 다양한 데이터를 받아들일 여지가 있습니다.
이 책에서 PostgreSQL을 배우는 방식
이 책의 목표는 데이터베이스 전문가가 되는 것이 아닙니다. 업무 데이터를 더 안전하게 보관하고, 원하는 답을 스스로 찾아볼 수 있게 되는 것입니다.
처음에는 화면 도구로 데이터베이스 구조를 둘러봅니다. 그다음 SQL 문장을 읽는 법을 익힙니다. 이후에는 고객 명단, 주문 내역, 상품 재고, 매출 리포트 같은 익숙한 예제로 필요한 데이터만 골라 보는 연습을 합니다.
중요한 원칙은 하나입니다.
데이터베이스는 개발자만 쓰는 도구가 아닙니다.
고객 정보를 관리하는 사람, 매출 보고서를 만드는 사람, 재고를 확인하는 사람, 반복적인 엑셀 취합에 지친 사람 모두에게 데이터베이스는 유용합니다. PostgreSQL은 그중에서도 무료로 시작할 수 있고, 표와 관계를 안정적으로 다루며, 필요하면 JSON 같은 유연한 데이터까지 품을 수 있는 업무용 데이터 보관함입니다.
이제부터 PostgreSQL을 거대한 기술이 아니라, 엑셀보다 안전하고 강력한 장부로 생각해 봅시다. 그렇게 보면 데이터베이스는 훨씬 덜 무섭고, 훨씬 실용적인 도구가 됩니다.
참고
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.