Carnival7
Change Developer
Carnival7
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자바의 정석
    • 프로그래밍 언어별 tools
      • 파이썬
      • 자바
    • 코딩 테스트
      • 백준 강의 기초편
      • 백준 강의 연습편
      • 백준 강의 문제편
      • 삼성 기출
      • 백준 - 일반
      • 카카오 기출
      • 프로그래머스 - 일반
      • 코테 풀이 Tools
    • CS
      • Network
      • 운영체제
      • 알고리즘
      • DB
    • Web_Backend
      • Spring
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
      • 스프링 핵심 원리 - 기본편
    • DevOps
    • IT 업무 지식
      • 인프라
      • 클라우드
    • 자격증
      • AWS - CLF
      • 정처기 - 실기
    • 생각 정리

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • nginx
  • 삼성기출 #2023 #상반기
  • Github Actions
  • ci/cd
  • 스프링 부트 무중단 웹 서비스
  • 슬라이딩 윈도우
  • 스프링 #인터셉터 #AOP #필터
  • 코딩테스트 #삼성기출 #구현 #시뮬레이션
  • 슬라이딩 윈도우 #덱
  • DevOps
  • 알고리즘 #백준강의기초편 #코딩테스트
  • code deploy
  • 프로그래머스 #카카오기출 #레벨2
  • DMZ
  • 스프링 #AOP
  • 삼성기출 #백준강의문제편

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Carnival7

Change Developer

CS/DB

1.데이터베이스의 종류

2024. 8. 17. 12:21

1.데이터베이스의 종류


  • 1.데이터베이스의 종류
    • 데이터베이스란
      • 데이터베이스의 특징
      • 데이터베이스의 개념적 요소
      • 스키마(schema)
    • 데이터 설계 3단계
    • 관계형 데이터베이스
    • NoSQL(Not Only SQL) 데이터베이스
      • 주요 특징
      • NoSQL의 한계
      • NoSQL 데이터베이스 유형
      • NoSQL의 사용 사례
    • RDBMS vs NoSQL

데이터베이스란

사용자나 프로그램에서 사용하기 위해 저장 및 관리하는 데이터 집합이다.

데이터베이스의 특징

  • 실시간 접근 : 데이터베이스에 언제든지 접근해 필요한 처리를 할 수 있다.

  • 동시 공유 : 여러 사용자가 데이터베이스에 접근할 수 있다.

  • 지속적 변화 : 데이터의 갱신, 삽입, 삭제 등을 통해 계속해서 변화한다.

  • 내용 기반 참조 : 데이터의 값을 이용해 데이터에 접근할 수 있다

    데이터베이스의 개념적 요소

    • 개체(entity, 엔터티) : 데이터로 표현하려는 대상을 의미하며, 하나 이상의 속성으로 구성한다.
    • 속성(attribute, 애트리뷰트) : 개체의 특성과 상태를 나타내며, 데이터베이스를 구성하는 가장 작은 논리적 단위이다.
    • 관계(relationship) : 개체 간에 어떤 관련이 있는지를 나타내며, 주로 동사로 표현한다.

    스키마(schema)

    데이터의 구조와 표현 방식, 제약 조건을 정의

    • 외부 스키마(사용자 관점) :
      • 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의
    • 개념 스키마(통합 관점) :
      • 데이터베이스의 전체적인 논리적 구조
      • 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스, 하나만 존재
    • 내부 스키마(물리적 관점) :
      • 물리적 저장장치의 입장에서 본 데이터베이스 구조
      • 실제로 저장될 레코드의 형식, 저장 데이터의 항목 표현 방법, 내부 레코드의 물리적 순서 등

    데이터 설계 3단계

  1. 개념적 설계 :

    1. 현실 세계에 대한 인식을 추상적으로 표현하는 과정.
      1. 개념 스키마 모델링과 트랜잭션 모델링 병행 수행
      2. 요구 조건 명세를 E-R 다이어그램으로 작성
  2. 논리적 설계 :

    1. 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계.
    2. 현실 세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환(mapping)시키는 과정
      1. 개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화
      2. 개념 스키마를 평가 및 정제하고, DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계
      3. 시스템으로 구축하고자 하는 업무에 대해 식별자를 도출하고 Key, 속성, 관계 등을 정확하게 표현, 정규화를 수행하여 데이터 모델의 독립성과 재사용성 확보, 논리 데이터 모델은 데이터 모델링 완료 상태. 재 사용성이 높음
  3. 물리적 설계 :

    1. 목표 DBMS에 맞는 물리적 구조의 데이터로 변환.
    2. 논리적 설계에서 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정
      1. 데이터베이스 파일의 저장 구조 및 액세스 경로를 결정
    3. 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계. DB를 구축함

관계형 데이터베이스

릴레이션(Relation)은 데이터들을 표(Table)의 형태로 표현한 것. 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

  • 릴레이션(relation) : 관계형 데이터베이스에서 데이터의 개념적 모델

  • 릴레이션 스키마 : 속성들의 집합

  • 릴레이션 인스턴스

    • 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 가진 것
    • 튜플들의 집합
  • 테이블(table) : 릴레이션을 실제로 구현한 개체

    • 테이블은 키와 값으로 이루어진 2차원 형태로, 행과 열로 구성된다.

      • 행(row) = 튜플(tuple) = 레코드(record) :
        • 속성의 모임
        • 레코드와 같은 의미
        • 튜플의 수 = 카디널리티, 기수, 대응수 (튜카 기대)
      • 열(column) = 필드(field)
        • 이름과 타입을 가진 데이터의 속성(attribute)
      • 속성(attribute)
        • 데이터베이스를 구성하는 가장 작은 논리적 단위
          • 데이터 항목 또는 데이터 필드
          • 개체의 특성
          • 디그리 또는 차수 (차DA)

NoSQL(Not Only SQL) 데이터베이스

비관계형으로 보다 유연한 형태의 데이터베이스

주요 특징

  • 비관계형 데이터 모델:
    • NoSQL 데이터베이스는 전통적인 테이블 구조의 관계형 데이터 모델을 사용하지 않고, 보다 유연한 데이터 구조를 제공합니다. 데이터는 문서, 키-값 쌍, 그래프, 열 패밀리 등 다양한 형태로 저장될 수 있습니다.
  • 수평적 확장성:
    • NoSQL 데이터베이스는 대규모 데이터를 처리하기 위해 수평적 확장(스케일 아웃)을 지원합니다. 이는 서버를 추가하여 성능을 확장하는 방식으로, 대규모 데이터와 높은 처리량을 효과적으로 관리할 수 있습니다.
  • 유연한 스키마:
    • NoSQL 데이터베이스는 고정된 스키마를 요구하지 않으며, 데이터 구조가 동적으로 변할 수 있습니다. 이로 인해 데이터 구조의 변경이 자주 발생하는 애플리케이션에서 유연하게 대응할 수 있습니다.
  • 고성능:
    • NoSQL은 대용량 데이터 처리와 빠른 읽기/쓰기 성능에 최적화되어 있습니다. 이는 특히 빅데이터 처리, 실시간 분석, 소셜 네트워킹 애플리케이션 등에 적합합니다.

NoSQL의 한계

  1. 데이터 일관성 문제:
    • 대부분의 NoSQL 데이터베이스는 일관성(Consistency)보다 가용성(Availability)과 분할 허용성(Partition Tolerance)을 우선시합니다. 이로 인해, 데이터 일관성을 보장하는 데 어려움이 있을 수 있습니다.
  2. 제한된 쿼리 기능:
    • NoSQL 데이터베이스는 SQL의 복잡한 쿼리 기능을 지원하지 않을 수 있으며, 관계형 데이터베이스에서 제공하는 조인, 트랜잭션 등의 기능이 제한적일 수 있습니다.
  3. 성숙도:
    • 일부 NoSQL 기술은 아직 성숙 단계에 이르지 않아, 기능적 한계나 성능 이슈가 발생할 수 있습니다.
  4. 관리 복잡성:
    • NoSQL 데이터베이스는 관계형 데이터베이스에 비해 관리와 유지보수가 복잡할 수 있으며, 분산 시스템에서의 운영 경험이 필요할 수 있습니다.

NoSQL 데이터베이스 유형

  1. 문서형 데이터베이스 (Document-Oriented Database)
    1. image
    2. 특징: JSON, BSON 또는 XML 형식의 문서를 기본 단위로 데이터를 저장합니다. 각 문서는 고유한 구조를 가지며, 문서 내에서 여러 데이터를 계층적으로 포함할 수 있습니다.
    3. 예시: MongoDB, Couchbase
    4. 장점: 유연한 데이터 모델링, 복잡한 데이터 구조를 간단하게 표현 가능
  2. 키-값 스토어 (Key-Value Store)
    1. image
    2. 특징: 데이터는 키-값 쌍으로 저장됩니다. 각 키는 고유하며, 키에 대응하는 값은 어떤 형태든 가능하다.
    3. 예시: Redis, DynamoDB, Riak
    4. 장점: 빠른 데이터 접근, 간단한 모델, 높은 성능
    5. 단점: 키를 통해 특정 값을 지정하기에 키를 이용해 값 전체를 검색할 수 있지만 값의 일부를 검색하거나 값의 내용을 이용한 질의는 할 수 없고 별도의 처리 필요
  3. 열 지향 데이터베이스 (Column-Family Store)
    1. image
    2. image
    3. 특징: 데이터를 행(row) 대신 열(column) 단위로 구분하여, 데이터를 그룹화한 컬럼 패밀리와 키의 쌍으로 데이터를 저장한다. 컬럼 패밀리는 관련 있는 컬럼 값들이 모여서 구성된다. 행마다 컬럼 패밀리를 다르게 설정 가능하다.
    4. 예시: Apache Cassandra, HBase
    5. 장점: 대규모 분산 데이터베이스에 적합, 특정 열에 대한 빠른 조회 가능
  4. 그래프 데이터베이스 (Graph Database)
    1. image
    2. 특징: 노드와 엣지로 이루어진 그래프 구조로, 노드에 데이터를 저장하고 간선으로 데이터 간의 관계를 표현한다. 관계를 일급 객체로 취급하여, 복잡한 관계 데이터를 효율적으로 관리합니다.
    3. 예시: Neo4j, ArangoDB
    4. 장점: 관계가 중요한 애플리케이션(예: 소셜 네트워크, 추천 시스템)에서 매우 효과적

NoSQL의 사용 사례

  1. 빅데이터 애플리케이션:
    • 대량의 비정형 데이터를 실시간으로 처리해야 하는 애플리케이션에서 사용됩니다. 예를 들어, 로그 수집, 분석 시스템, 소셜 미디어 분석 등이 있습니다.
  2. 콘텐츠 관리 시스템(CMS):
    • 구조화되지 않은 데이터, 예를 들어 블로그 포스트, 문서, 이미지 등을 관리하는 시스템에서 유용합니다.
  3. 실시간 데이터 처리:
    • 실시간으로 대규모 데이터를 처리하고, 높은 처리량을 요구하는 환경에서 사용됩니다. 예를 들어, 온라인 게임, 금융 거래 시스템 등이 있습니다.
  4. 소셜 네트워크:
    • 관계 데이터가 중요한 소셜 네트워크 애플리케이션에서 그래프 데이터베이스가 효과적으로 사용됩니다.

RDBMS vs NoSQL

RDBMS 장단점

  1. 장점
    • 명확하게 정의 된 스키마, 데이터 무결성 보장
    • 관계를 통해 각 데이터를 중복 없이 한 번만 저장
    1. 단점
      • 덜 유연함, 데이터 스키마를 사전에 계획하고 알려야함(나중에 수정이 힘듦)
      • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다
      • 대체로 수직적 확장만 가능

NoSQL 장단점

  1. 장점

    • 스키마가 없어서 유연하다. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
    • 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
    • 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
  2. 단점

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
  • 데이터 중복을 계속 업데이트 해야 함
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)

수직적 확장과 수평적 확장

  • 수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것 (ex. CPU 업그레이드)
  • 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)

데이터가 저장되는 방식 때문에 RDBMS는 일반적으로 수직 확장만을 지원한다. 수평 확장은 NoSQL 데이터베이스에서만 가능하다.


RDBMS 사용이 더 좋을 때

  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우( NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적)
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우

NoSQL 데이터베이스 사용이 더 좋을 때

  • 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
  • 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
  • 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)

Reference

  • [Database] (개념) 관계형 데이터베이스, NoSQL, NoSQL 종류

  • [DB] NoSQL Column-oriented, Column Family DB

  • What Is a Graph Database?

'CS > DB' 카테고리의 다른 글

2. 관계형 데이터베이스  (0) 2024.08.17
인덱스  (0) 2021.12.28
정규화  (0) 2021.12.28
스프링 트랜잭션과 트랜잭션 전파  (0) 2021.12.28
트랜잭션 격리수준  (0) 2021.12.28
    'CS/DB' 카테고리의 다른 글
    • 2. 관계형 데이터베이스
    • 인덱스
    • 정규화
    • 스프링 트랜잭션과 트랜잭션 전파
    Carnival7
    Carnival7

    티스토리툴바