본문 바로가기

개발공부/데이터베이스

패스트캠퍼스 환급챌린지 30일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기

반응형

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

Ch 2. 데이터베이스 개론 - 데이터베이스 유형 및 특징

 

 

1. 관계형 데이터베이스 (Relational Database, RDB)

가장 흔하고 전통적인 형태의 데이터베이스입니다. 데이터가 테이블(Table), 행(Row), 열(Column)의 2차원 구조로 구성되며, 이 테이블들이 서로 '관계(Relation)'를 맺는 방식으로 데이터를 저장합니다.

주요 특징:

  • 정형화된 스키마(Schema): 데이터가 저장되기 전에 테이블의 구조(열의 이름, 데이터 타입 등)를 미리 정의해야 합니다. 이는 데이터의 일관성과 무결성을 강력하게 보장하는 역할을 합니다.
  • SQL (Structured Query Language): 데이터를 정의(DDL), 조작(DML), 제어(DCL)하는 데 사용되는 표준 언어입니다. SQL은 배우기 쉽고 강력하여 데이터를 정교하게 다룰 수 있습니다.
  • ACID 트랜잭션 보장: 데이터베이스 트랜잭션의 4가지 핵심 속성인 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장하여 데이터의 신뢰성을 극대화합니다.
  • 수직적 확장(Vertical Scaling): 주로 서버의 성능(CPU, RAM, 디스크)을 업그레이드하여 성능을 향상시키는 방식입니다.

장점:

  • 데이터의 일관성(Consistency)무결성(Integrity)이 매우 뛰어납니다.
  • 데이터 간의 관계를 명확하게 표현하고 복잡한 쿼리를 효율적으로 처리할 수 있습니다.
  • 오랜 역사와 방대한 사용자 커뮤니티, 성숙한 도구들을 가지고 있습니다.

단점:

  • 스키마의 유연성 부족: 스키마가 미리 정의되어 있어, 데이터 구조가 자주 변경되거나 유연성이 요구되는 애플리케이션에는 적합하지 않을 수 있습니다.
  • 수평적 확장(Horizontal Scaling)의 어려움: 대규모 트래픽 분산이나 데이터 분할에 구조적인 제약이 있어, 특정 규모 이상으로 확장하기가 복잡하고 비용이 많이 들 수 있습니다.

대표적인 RDB:

  • MySQL: 오픈소스 관계형 데이터베이스의 대명사. 웹 애플리케이션에 널리 사용됩니다.
  • PostgreSQL: 기능이 풍부하고 확장성이 뛰어나며, 데이터 무결성과 표준 준수에 강점을 가집니다.
  • Oracle Database: 엔터프라이즈 환경에서 가장 널리 사용되는 상용 데이터베이스.
  • Microsoft SQL Server: 마이크로소프트 환경에서 주로 사용되며, GUI 도구가 잘 갖춰져 있습니다.
  • SQLite: 서버 없이 애플리케이션에 내장하여 사용하는 경량 데이터베이스. 모바일 앱이나 소규모 프로젝트에 적합합니다.

2. NoSQL 데이터베이스 (Not only SQL)

관계형 데이터베이스의 한계(특히 대규모 분산 환경에서의 확장성, 유연성)를 극복하기 위해 등장한 다양한 비관계형 데이터베이스를 총칭하는 용어입니다. 'SQL만 쓰는 게 아니다'라는 의미를 담고 있습니다.

주요 특징:

  • 스키마리스(Schema-less) 또는 유연한 스키마: 데이터 구조를 미리 정의할 필요가 없거나, 매우 유연하게 변경할 수 있습니다.
  • 수평적 확장(Horizontal Scaling): 여러 대의 서버에 데이터를 분산하여 저장하고 처리함으로써 성능을 확장하기 용이합니다.
  • 다양한 데이터 모델: 키-값, 문서, 열 지향, 그래프 등 여러 데이터 모델을 지원합니다.
  • BASE 속성 지향: 전통적인 RDB의 ACID보다 기본적 가용성(Basically Available), 소프트 상태(Soft State), 최종 일관성(Eventually Consistent)을 지향하여 가용성과 확장성을 우선시합니다.

언제 NoSQL을 사용할까?

  • 방대한 양의 비정형 또는 반정형 데이터를 다룰 때
  • 데이터 구조가 자주 변경되거나 예측하기 어려울 때
  • 매우 높은 읽기/쓰기 처리량과 수평적 확장이 필요할 때
  • 실시간 웹 애플리케이션, 빅데이터 분석, IoT 데이터 등에 주로 사용됩니다.

2.1. NoSQL 데이터베이스 유형

NoSQL은 하나의 특정 데이터베이스가 아니라, 목적에 따라 여러 데이터 모델로 나뉩니다.

  1. 키-값(Key-Value) 데이터베이스:
    • 특징: 가장 단순한 형태의 NoSQL 데이터베이스로, 고유한 '키(Key)'와 이에 매핑되는 '값(Value)'의 형태로 데이터를 저장합니다. 값의 형태는 제한이 없습니다 (문자열, 숫자, 복합 객체 등).
    • 장점: 읽기/쓰기 성능이 매우 빠르고, 대규모 분산 환경에 최적화되어 있습니다.
    • 단점: 복잡한 쿼리나 데이터 간의 관계를 표현하기 어렵습니다.
    • 대표적인 DB: Redis, Amazon DynamoDB, Memcached.
    • 주요 용도: 캐싱, 세션 관리, 실시간 랭킹 시스템, 장바구니.
  2. 문서(Document) 데이터베이스:
    • 특징: 데이터를 '문서(Document)' 형태로 저장합니다. 각 문서는 JSON, BSON, XML 등의 형식으로 구성되며, 관계형 데이터베이스의 행(Row)과 유사하지만 훨씬 유연한 구조를 가집니다. 문서 내부에 중첩된 구조나 배열을 포함할 수 있습니다.
    • 장점: 유연한 스키마를 통해 데이터 모델 변경에 용이하며, 객체 지향 프로그래밍과 잘 맞습니다.
    • 단점: 복잡한 JOIN 연산이 필요한 관계형 데이터에는 비효율적일 수 있습니다.
    • 대표적인 DB: MongoDB, Couchbase, Apache CouchDB.
    • 주요 용도: 콘텐츠 관리 시스템, 카탈로그, 사용자 프로필, 모바일 애플리케이션 데이터.
  3. 열 지향(Column-Family) 데이터베이스:
    • 특징: 데이터를 '열(Column)' 단위로 저장하고 관리합니다. 테이블은 '행 키(Row Key)'와 여러 '열 패밀리(Column Family)'로 구성되며, 각 열 패밀리 내에 여러 열을 동적으로 추가할 수 있습니다.
    • 장점: 매우 높은 쓰기 성능과 대규모 분산 처리에 특화되어 있습니다. 특정 열에만 접근하는 쿼리에 매우 효율적입니다.
    • 단점: 복잡한 애드혹 쿼리나 트랜잭션 처리에는 적합하지 않습니다.
    • 대표적인 DB: Apache Cassandra, HBase, Google Bigtable.
    • 주요 용도: 빅데이터 분석, 로그 저장, 시계열 데이터, 실시간 분석.
  4. 그래프(Graph) 데이터베이스:
    • 특징: 데이터와 데이터 간의 '관계(Relationship)'를 그래프 구조(노드와 엣지)로 저장합니다. '노드(Node)'는 개체를, '엣지(Edge)'는 노드 간의 관계를 나타냅니다.
    • 장점: 복잡하게 연결된 데이터 간의 관계를 빠르고 효율적으로 탐색하고 쿼리할 수 있습니다.
    • 단점: 관계가 없는 데이터나 단순한 대량의 데이터 저장에는 비효율적입니다.
    • 대표적인 DB: Neo4j, Amazon Neptune, OrientDB.
    • 주요 용도: 소셜 네트워크, 추천 시스템, 사기 탐지, 지식 그래프.

3. 고전적인 데이터베이스 유형: 계층형과 네트워크형 

관계형 데이터베이스가 등장하기 전, 그리고 NoSQL이 주목받기 전에 데이터를 관리했던 주요 모델들이 있습니다. 바로 계층형과 네트워크형 데이터베이스입니다. 이들은 현재는 많이 사용되지 않지만, 데이터베이스 발전의 역사를 이해하는 데 중요한 의미를 가집니다.

3.1. 계층형 데이터베이스 (Hierarchical Database)

  • 특징: 데이터를 트리(Tree) 형태로 구성합니다. 각 레코드는 하나의 '부모' 레코드와 여러 개의 '자식' 레코드를 가질 수 있으며, 부모-자식 관계는 1:N (일대다) 관계입니다. 자식 레코드는 오직 하나의 부모만을 가질 수 있습니다.
  • 구조: 루트 레코드부터 시작하여 가지를 치듯이 데이터가 계층적으로 연결됩니다.
  • 장점:
    • 단순한 1:N 관계에 대한 데이터 접근이 빠릅니다.
    • 데이터 구조가 명확하여 이해하기 쉽습니다.
  • 단점:
    • 데이터 간의 복잡한 N:M (다대다) 관계를 표현하기 어렵습니다.
    • 데이터 구조가 변경되면 전체 계층 구조를 수정해야 하는 유연성 문제가 있습니다.
    • 쿼리가 복잡해지면 성능이 저하될 수 있습니다.
  • 대표적인 DB: IBM IMS (Information Management System)
  • 주요 용도: BOM (Bill of Materials) 관리, 조직도와 같이 계층 구조가 명확한 데이터.

3.2. 네트워크형 데이터베이스 (Network Database)

  • 특징: 계층형 데이터베이스의 제약을 극복하기 위해 등장했습니다. 데이터가 그래프(Graph) 형태로 구성되며, 레코드(노드)들이 여러 개의 '소유자(Owner)' 레코드와 '멤버(Member)' 레코드를 가질 수 있습니다. 즉, 하나의 자식 레코드가 여러 부모 레코드를 가질 수 있어 N:M (다대다) 관계를 표현할 수 있습니다.
  • 구조: 계층형보다 유연한 구조로, 레코드 간의 복잡한 연결을 표현할 수 있습니다.
  • 장점:
    • 데이터 간의 복잡한 관계(N:M)를 표현할 수 있습니다.
    • 계층형보다 데이터 접근 경로가 다양하여 유연합니다.
  • 단점:
    • 데이터 모델이 복잡하고 이해하기 어렵습니다.
    • 데이터 스키마가 변경되면 애플리케이션 코드도 함께 수정해야 하는 종속성 문제가 심합니다.
    • 유지보수가 어렵고 복잡한 쿼리 처리가 쉽지 않습니다.
  • 대표적인 DB: CODASYL (Conference on Data Systems Languages) 모델 기반의 데이터베이스들.
  • 주요 용도: 복잡한 관계를 가진 재고 시스템, 예약 시스템 등.

4. 그 외 주목할 만한 데이터베이스 유형들 

위의 주요 유형 외에도 특정 목적에 특화된 다양한 데이터베이스들이 있습니다.

  • 인메모리 데이터베이스(In-memory Database): 데이터를 디스크가 아닌 메인 메모리(RAM)에 저장하여 매우 빠른 응답 속도를 제공합니다. (예: Redis, Apache Ignite)
  • 시계열 데이터베이스(Time-series Database): 시간 순서대로 기록되는 데이터(로그, 센서 데이터, 주식 시세 등)를 효율적으로 저장하고 분석하기 위해 최적화되어 있습니다. (예: InfluxDB, TimescaleDB)

 

 

https://fastcampus.info/4n8ztzq

 

(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스

초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!

fastcampus.co.kr

 

반응형