새로운 DB를 연습할 시간인가.

저는 DB를 구축할 때 주로 MySQL를 많이 사용해왔습니다.
그런데 이놈의 오라클이 또....

왜 또 이 ㅈㄹ인건데...
진짜 디자인쪽에 '어도비'가 있다면, 개발 쪽에 '오라클'이 빌런으로 있는 기분.
그래서 이전에도 DB의 활용폭을 좀 넓혀야 겠다는 생각을 하고 있었기 때문에
이참에 새로운 DB들도 설치를 해서 사용을 해보려고 합니다.
새로운 DB의 후보군은
- RDBMS : postgreSQL
- NoSQL : MongoDB
- Elasticsearch
이 3가지를 설치해서 사용해보려고 합니다.
PostgreSQL 설치.
저는 MySQL-workbench로 사용하는게 편했어서,
postgresql이 원래는 cmd창에서 사용하는게 보편적이지만, 저는 postgresql도 gui프로그램을 설치해서 사용하도록 하겠습니다.
PostgreSQL의 개념.
-
💡 PostgreSQL이란?
- 객체-관계형 데이터베이스(Object-Relational Database, ORDBMS)
- 오픈소스이면서도 상용급 안정성, 기능, 성능을 제공.
- MySQL보다 더 표준 SQL 준수와 고급 기능에 집중한 DBMS.
-
📌 PostgreSQL의 주요 특징.
-
- 표준 SQL 준수.
- ANSI SQL 표준을 충실히 따름 → 이식성 높음.
-
- 객체-관계형 기능 (ORDBMS).
- 단순히 행과 열뿐만 아니라 사용자 정의 타입, 배열, JSON, GIS 데이터(PostGIS) 등 다양한 데이터 구조 지원.
-
- 트랜잭션(ACID) 철저 준수.
- 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 보장.
- 금융권, 공공기관에서 PostgreSQL을 선호하는 이유.
-
- 확장성.
- 사용자가 직접 함수, 데이터 타입, 연산자 등을 정의 가능.
- ex : JSON처리, 시계열 데이터, GIS 데이터(PostGIS 확장).
-
- 강력한 동시성 제어(MVCC)
- MVCC (Multi-Version Concurrency Control): 여러 사용자가 동시에 작업해도 충돌 최소화.
- SELECT 시 락을 걸지 않아 읽기 성능이 우수.
-
- 다양한 인덱스 지원.
- B-Tree, Hash, GIN, GiST 등 특수 인덱스.
- 예: 텍스트 검색, 공간 검색(GIS), JSON 검색에 최적화.
-
📊 PostgreSQL과 다른 DB 비교.
구분 | PostgreSQL | MySQL | MongoDB |
---|
데이터 모델 | 관계형 (SQL) + 객체 기능 | 관계형 (SQL) | 문서 기반 (NoSQL) |
스키마 | 고정 (테이블 구조 필요) | 고정 | 유연 (스키마리스) |
트랜잭션 | ACID 완벽 지원 | 부분 지원(엔진에 따라 다름, InnoDB는 지원) | 제한적 지원 |
JSON 지원 | 매우 강력 (JSONB 타입) | 지원은 하나 약함 | 기본 구조(JSON) |
GIS 지원 | PostGIS (업계 표준) | Spatial 기능 제한적 | GeoJSON 지원 |
-
📊 PostgreSQL 기본 구조.
- Database → 여러 개의 Schema를 가짐
- Schema -> 여러 개의 Table/View/Function/Index 포함.
- Table -> 행(Row)과 열(Column)로 구성된 데이터 저장소
- Row (Record) → 하나의 데이터 객체
- Column (Field) → 속성(attribute)
-
📊 PostgreSQL 사용처.
- 금융/공공기관: 트랜잭션, 데이터 정합성 필수 → PostgreSQL 강세
- 데이터 분석/BI: 윈도우 함수, CTE(Common Table Expressions) 등 SQL 고급 기능 지원
- 빅데이터/AI: Python, R, TensorFlow 등과 연동 잘 됨
- GIS 분야: PostGIS 확장을 통한 위치 데이터 처리 (스마트팜, 물류, 지도 서비스 등)
gui 프로그램 목록.
-
pgAdmin.
-
특징: PostgreSQL의 공식적이고 가장 포괄적인 관리/개발 플랫폼.
-
기능: 데이터베이스 객체(테이블, 뷰, 인덱스 등) 관리, SQL 편집기 및 쿼리 실행, 서버 모니터링 등 PostgreSQL의 모든 기능을 지원.
-
장점: 무료, 오픈 소스, PostgreSQL의 모든 최신 기능 지원.
-
설치: PostgreSQL 설치 시 함께 설치되는 경우가 많으며, 별도로 다운로드하여 설치 가능.
-
DBeaver.
-
특징: PostgreSQL뿐만 아니라 MySQL, Oracle, SQL Server 등 다양한 데이터베이스를 지원하는 범용 데이터베이스 툴.
-
기능: 강력한 SQL 편집기, 데이터 뷰어 및 편집기, ERD(개체 관계 다이어그램) 기능 등.
-
장점: 무료(Community Edition), 크로스 플랫폼, 여러 DB를 동시에 관리해야 할 때 유용.
Postgresql 설치.
GUi프로그램은 일단 심미성을 보고 나중에 사용을 결정하기로 하고 우선은 컴퓨터상에 postgresql을 설치해보겠습니다.
postgresql공식사이트
공식 사이트에 가서, 설치 파일을 받아줍니다.
- EnterpriseDB(EDB) Installer 선택 → 최신 LTS 버전(예: 16.x) 다운로드
저는 window-64비트이기 때문에 아래 사진의 파일을 선택해서 다운로드했습니다.

- 다운로드한 postgresql-16.x-windows-x64.exe 실행.

- 설치 경로 선택 (기본값: C:\Program Files\PostgreSQL\16)

- 설치 컴포넌트 선택.
- PostgreSQL Server ✅
- pgAdmin 4 ✅ (GUI 관리 툴)
- Command Line Tools ✅
- Stack Builder ✅

- 데이터 디렉토리 지정(기본값: C:\Program Files\PostgreSQL\16\data)

-
- 슈퍼유저 비밀번호 설정(postgres 계정 비밀번호 -> 꼭 기억할 것!)

-
- 포트 번호 입력(기본 5432 유지 권장)

-
- 로컬 설정 (기본값 사용 OK)

-
- 설치 완료 후 서비스 자동 시작 확인.

-
stack builder 설치.

저는 postgresql을 웹앱 백엔드 / AI, ML 용 DB / 데이터사이언스/ GIS 목적으로 사용할 것이기 때문에
- JDBC 드라이버: Java(Spring Boot)에서 PostgreSQL 연결 시 필요
- PL/Python: PostgreSQL 내에서 Python을 직접 호출 가능 (데이터 분석 로직을 DB 안에 구현 가능)
- PostGIS ✅ (강력 추천) :
- 공간 데이터 타입(Geometry, Geography) 제공
- GIS 관련 함수 (거리 계산, 좌표 변환, 교차 여부 등)
- AI/ML 프로젝트에서 공간데이터 기반 분석할 때 활용 (스마트팜, 교통, 위치 기반 서비스 등)
- Barman: 백업 관리 툴
설치를 완료하고 나서,
저는 dbeaver에서 postgresql을 찾아서 연동을 해줬습니다.
아까 설치 할 때 기록한 비번을 이때 입력해줘야 합니다.


다 입력하고 설정을 완료하게 되면,(새로고침까지)

요롷게 Dbeaver상에서 postgresql의 꼬끼리를 확인 가능합니다.
postgresql 설치 끝!
MongoDB 설치.
MongoDB 개념.
-
💡 MongoDB란?
-
NoSQL DBMS 중 하나로, 전통적인 관계형 데이터베이스(RDBMS: MySQL, PostgreSQL 등)와 달리 문서(Document) 기반으로 데이터를 저장.
-
내부적으로 JSON 유사 형태(BSON: Binary JSON)를 사용하여 유연하게 데이터를 다룸.
-
💡 MongoDB의 핵심 특징.
-
- 스키마리스(Schema-less)
- 미리 테이블 구조(스키마)를 정의할 필요가 없음.
- 같은 컬렉션(Collection)안에서도 문서(Document)의 필드 구성이 달라도 됨.
-
- 문서(Document) 기반 저장.
-
하나의 데이터는 'JSON객체'처럼 키-값 쌍으로 저장.
-
ex)
{
"name": "홍길동",
"age": 29,
"skills": ["Java", "Spring Boot", "MongoDB"]
}
-
- 컬렉션(Collection)
- RDBMS의 테이블(Table)개념.
- 여러 문서(DOcument)가 모인 집합.
-
- 수평 확장성 (Sharding)
- 데이터를 여러 서버에 분산 저장해 대규모 트래픽과 데이터를 처리하기 용이.
-
- 빠른 개발 속도.
- 자율적인 데이터 모델링이 가능해 스타트업, 프로토타입, 빅데이터 처리에 많이 사용됨.
-
- 고성능.
- 대량의 비정형/반정형 데이터(로그,센서,데이터,이벤트 데이터 등) 처리에 유리.
- 💡 MongoDB의 기본 구조.
- MongoDB를 이해할 때는 RDBMS(관계형 DB)와 비교하는 것이 가장 쉬움.
RDBMS | MongoDB |
---|
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
-
ex)
// 하나의 Document 예시
{
"name": "홍길동",
"age": 30,
"skills": ["Java", "Spring Boot", "MongoDB"]
}
-
💡 MongoDB의 사용처.
gui 프로그램 목록.
-
DBeaver.
-
💡 개요.
- 범용 데이터베이스 관리 툴
- MySQL, PostgreSQL, Oracle, MariaDB, SQLite, MongoDB, Cassandra 등 대부분의 DB 연결 가능.
- 개발자, DBA, 데이터 분석가가 여러 DB를 한 곳에서 통합 관리할 때 강력함
-
📌 특징.
- 다중 데이터베이스 지원.
- 관계형(RDBMS) + 비관계형(NoSQL) DB 모두 연결 가능.
- 하나의 툴에서 PostgreSQL, MySQL, MongoDB 등을 동시에 관리.
- SQL 에디터
- 고급 SQL 기능 지원 (자동 완성, 하이라이팅, 쿼리 실행 플랜 확인 등).
- NoSQL(MongoDB)도 연결 가능하지만 SQL 문법은 제한적, JSON 기반 쿼리/탐색이 중심.
- ERD & 스키마 탐색
- 테이블 구조 시각화 (ERD 자동 생성).
- MongoDB의 경우 컬렉션과 문서를 JSON 구조 탐색으로 제공.
- 플러그인 확장
- JDBC 드라이버 기반으로 다양한 DB 연결 가능.
- J빅데이터/Hadoop, ElasticSearch 등도 일부 지원.
- 크로스플랫폼.
- Windows, macOS, Linux 모두 지원.
-
👉 장점 요약:
- 다양한 DB를 하나의 인터페이스에서 관리 가능.
- SQL 기반 DB 관리에 최적화, MongoDB 같은 NoSQL도 지원하지만 부가적 성격.
MongoDB 설치.
공식 사이트.

LTS 버전으로 다운로드를 진행합니다.

msi 파일 설치가 끝났으면 실행을 시켜줍니다.


-
Install MongoD as a Service (기본 체크)
- MongoDB를 Windows 서비스로 등록해서, Windows 부팅 시 자동 실행되도록 설정.
- 일반적으로 이 옵션을 권장.
-
Run service as Network Service user (기본값)
- Windows의 기본 서비스 계정을 사용하여 MongoDB를 실행합니다.
- 별도 계정 관리 필요 없음 → 일반 사용자 대부분 이 옵션 선택.
-
Run service as a local or domain user
- 특정 Windows 사용자 계정으로 MongoDB를 실행.
- 기업 환경에서 보안 정책이나 도메인 인증이 필요한 경우에 사용.
- 개인 개발 환경이라면 필요 없음.
-
Service Name
- 기본값: MongoDB
- 서비스 이름 지정 (여러 버전 설치 시 이름 다르게 설정 가능).
-
Data Directory
-
Log Directory

GUI 설치와 함께 MongoDB 설치가 끝났습니다.

잘 설치된 것을 확인해주고,
MongoDB Compass (MongoDB 전용 GUI)에 연결해주기.



MongoDB는 Dbeaver에서 사용하려면 추가적인 드라이버를 설치해서 우회해야 하므로(비용 발생할수도)
저는 Compass에서 사용하도록 하겠습니다.