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

0
post-thumbnail

새로운 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의 주요 특징.

      1. 표준 SQL 준수.
        • ANSI SQL 표준을 충실히 따름 → 이식성 높음.
      1. 객체-관계형 기능 (ORDBMS).
        • 단순히 행과 열뿐만 아니라 사용자 정의 타입, 배열, JSON, GIS 데이터(PostGIS) 등 다양한 데이터 구조 지원.
      1. 트랜잭션(ACID) 철저 준수.
        • 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 보장.
        • 금융권, 공공기관에서 PostgreSQL을 선호하는 이유.
      1. 확장성.
        • 사용자가 직접 함수, 데이터 타입, 연산자 등을 정의 가능.
        • ex : JSON처리, 시계열 데이터, GIS 데이터(PostGIS 확장).
      1. 강력한 동시성 제어(MVCC)
        • MVCC (Multi-Version Concurrency Control): 여러 사용자가 동시에 작업해도 충돌 최소화.
        • SELECT 시 락을 걸지 않아 읽기 성능이 우수.
      1. 다양한 인덱스 지원.
        • B-Tree, Hash, GIN, GiST 등 특수 인덱스.
        • 예: 텍스트 검색, 공간 검색(GIS), JSON 검색에 최적화.
  • 📊 PostgreSQL과 다른 DB 비교.

구분PostgreSQLMySQLMongoDB
데이터 모델관계형 (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를 동시에 관리해야 할 때 유용.

  • 오래만에 Dbever를 켰더니 업뎃이슈가..

Postgresql 설치.

GUi프로그램은 일단 심미성을 보고 나중에 사용을 결정하기로 하고 우선은 컴퓨터상에 postgresql을 설치해보겠습니다.

postgresql공식사이트

공식 사이트에 가서, 설치 파일을 받아줍니다.

  • EnterpriseDB(EDB) Installer 선택 → 최신 LTS 버전(예: 16.x) 다운로드

저는 window-64비트이기 때문에 아래 사진의 파일을 선택해서 다운로드했습니다.

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

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

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

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

    1. 슈퍼유저 비밀번호 설정(postgres 계정 비밀번호 -> 꼭 기억할 것!)
    1. 포트 번호 입력(기본 5432 유지 권장)

    1. 로컬 설정 (기본값 사용 OK)
    1. 설치 완료 후 서비스 자동 시작 확인.
  • 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의 핵심 특징.

      1. 스키마리스(Schema-less)
      • 미리 테이블 구조(스키마)를 정의할 필요가 없음.
      • 같은 컬렉션(Collection)안에서도 문서(Document)의 필드 구성이 달라도 됨.
      1. 문서(Document) 기반 저장.
      • 하나의 데이터는 'JSON객체'처럼 키-값 쌍으로 저장.

      • ex)

         {
          "name": "홍길동",
          "age": 29,
           "skills": ["Java", "Spring Boot", "MongoDB"]
          }
        
      1. 컬렉션(Collection)
      • RDBMS의 테이블(Table)개념.
      • 여러 문서(DOcument)가 모인 집합.
      1. 수평 확장성 (Sharding)
      • 데이터를 여러 서버에 분산 저장해 대규모 트래픽과 데이터를 처리하기 용이.
      1. 빠른 개발 속도.
      • 자율적인 데이터 모델링이 가능해 스타트업, 프로토타입, 빅데이터 처리에 많이 사용됨.
      1. 고성능.
      • 대량의 비정형/반정형 데이터(로그,센서,데이터,이벤트 데이터 등) 처리에 유리.
  • 💡 MongoDB의 기본 구조.
    • MongoDB를 이해할 때는 RDBMS(관계형 DB)와 비교하는 것이 가장 쉬움.
RDBMSMongoDB
DatabaseDatabase
TableCollection
RowDocument
ColumnField
  • ex)

    // 하나의 Document 예시
      {
       "name": "홍길동",
       "age": 30,
       "skills": ["Java", "Spring Boot", "MongoDB"]
       }
    
  • 💡 MongoDB의 사용처.

    • MongoDB는 데이터 구조가 유연하고 빠르게 변하는 환경에서 많이 사용.

        1. 스타트업/프로토타이핑/
        • 빠른 개발, 데이터 구조가 자주 변할 때 유리.
        1. IOT/센서 데이터
        • JSON 기반의 시계열/로그 데이터 처리.
        1. 웹/모바일 서비스
        • 사용자 정보, 활동 로그, 세션 관리.
        1. 빅데이터/분석
        • 대규모 로그 수집 및 분석 (ELK 스택과도 잘 연동).
        1. GIS/위치 기반 서비스.
        • GeoJSON을 활용한 위치 검색 및 지도 서비스.

gui 프로그램 목록.

  • DBeaver.

    • 💡 개요.

      • 범용 데이터베이스 관리 툴
      • MySQL, PostgreSQL, Oracle, MariaDB, SQLite, MongoDB, Cassandra 등 대부분의 DB 연결 가능.
      • 개발자, DBA, 데이터 분석가가 여러 DB를 한 곳에서 통합 관리할 때 강력함
    • 📌 특징.

        1. 다중 데이터베이스 지원.
          • 관계형(RDBMS) + 비관계형(NoSQL) DB 모두 연결 가능.
          • 하나의 툴에서 PostgreSQL, MySQL, MongoDB 등을 동시에 관리.
        1. SQL 에디터
          • 고급 SQL 기능 지원 (자동 완성, 하이라이팅, 쿼리 실행 플랜 확인 등).
          • NoSQL(MongoDB)도 연결 가능하지만 SQL 문법은 제한적, JSON 기반 쿼리/탐색이 중심.
        1. ERD & 스키마 탐색
          • 테이블 구조 시각화 (ERD 자동 생성).
          • MongoDB의 경우 컬렉션과 문서를 JSON 구조 탐색으로 제공.
        1. 플러그인 확장
          • JDBC 드라이버 기반으로 다양한 DB 연결 가능.
          • J빅데이터/Hadoop, ElasticSearch 등도 일부 지원.
        1. 크로스플랫폼.
          • Windows, macOS, Linux 모두 지원.
    • 👉 장점 요약:

      • 다양한 DB를 하나의 인터페이스에서 관리 가능.
      • SQL 기반 DB 관리에 최적화, MongoDB 같은 NoSQL도 지원하지만 부가적 성격.
  • MongoDB Compass (MongoDB 전용 GUI)

    • 💡 개요.

      • MongoDB 공식에서 제공하는 전용 GUI 클라이언트.
      • MongoDB 데이터(컬렉션, 문서)를 직관적으로 관리하고 분석하기 위한 도구.
    • 📌 특징.

        1. MongoDB 전용 최적화.
          • Mongo Shell 기반의 모든 기능 지원.
          • 컬렉션 관리, 인덱스 생성, 쿼리 최적화, 성능 모니터링까지 가능..
        1. 직관적 인터페이스.
          • 문서를 JSON 형태 그대로 표시.
          • SQL 기반이 아니라 MongoDB 쿼리 언어(MQL) 중심.
        1. 데이터 탐색 및 시각화.
          • 문서(Document) 검색 및 필터링.
          • Schema Analyzer 기능: 컬렉션 내 필드의 데이터 타입 및 분포 시각화.
        1. 인덱스 및 성능 관리.
          • 인덱스 생성/삭제 GUI 지원.
          • 쿼리 성능 분석(Explain Plan) 시각화.
        1. 보안 및 클라우드 통합.
          • MongoDB Atlas(클라우드)와 손쉽게 연동.
          • TLS/SSL 연결, 인증 설정 등 보안 옵션 제공.
    • 👉 장점 요약:

      • MongoDB 전용 기능(스키마 분석, 인덱스 관리, 성능 최적화)에 특화.
      • 초보자도 MongoDB 데이터 구조를 쉽게 이해 가능.

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

    • 데이터 파일(.bson)이 저장되는 경로.
  • Log Directory

    • MongoDB 로그 파일 저장 경로.

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

잘 설치된 것을 확인해주고,

MongoDB Compass (MongoDB 전용 GUI)에 연결해주기.

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

저는 Compass에서 사용하도록 하겠습니다.

0개의 댓글