본문 바로가기
DevOps/Database

Database 종류 및 개념 정리

by SeleniumBindingProtein 2022. 4. 5.
728x90
반응형

계층형 데이터베이스(HDBMS)

  • 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식
  • 데이터의 관계를 트리 구조로 정의, 부모-자식 형태를 가짐
  • 종류
    • 하드디스크, DVD 파일 시스템 등
  •  장점
    • 데이터의 액세스 속도가 빠름
    • 데이터의 사용량 쉽게 예측
  • 단점
    • 상하 종속적인 관계로 구성되어 초기 세팅 후 프로세스 수용이 어려움

 

네트워크형 데이터베이스(NDBMS)

  • 데이터 구조를 네트워크상의 노드 형태로 논리적이게 표현한 데이터 모델, 각각의 노드를 서로 대등한 관계로 구성한 시스템
  • 장점
  • 계층형 데이터베이스의 데이터 중복 문제 해결, 상하 종속적 관계 해결
  • 단점
  • 추후 변경 시 복잡한 구조로 인해 변경이 어려움
  • 데이터 종속성을 해결하지 못함

관계형 데이터베이스(RDBMS)

  • 행(Column)과 열(Row)을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스
  • SQL을 이용하여 관리 및 접근
  • 관계 대수(Realtional Algebra)에서 착안하여 만들어 짐
  • 종류
    • Oracle
      • 오라클에서 개발, 가장 많이 사용하는 RDBMS
      • 중앙 집중 방식, Administration Monitoring 가능
      • Multiple Databases 튜닝 가능
      • 다른 Admin User들과 공유 가능
      • 다양한 핸들링 지원
    • DB2
      • IBM이 개발, 한동안 IBM 컴퓨터에서만 구동이 가능했음
    • SQL Server
      • 마이크로소프트에서 개발, 윈도우 플랫폼에서만 동작
    • PostgreSQL
      • 오픈 소스 커뮤니티에서 개발
    • MySQL
      • 오픈소스 커뮤니티에서 개발
      • 경량 데이터 베이스 ▶️ 기능이 확장되면서 다른 RDBMS와 비슷
  • 장점
    • 다양한 용도로 사용 가능(범용성), 높은 성능
    • 데이터 무결성 보장, 높은 신뢰성
    • 명확한(= 엄격한) 스키마 정의
    • 정규화에 따른 갱신 비용 최소화
    • 데이터의 분류, 정렬, 탐색 속도가 빠름
    • 관계를 통해 각 데이터를 중복없이 한 번만 저장
  • 단점
    • 대량의 데이터 입력 처리
    • 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경
    • 컬럼 확장 어려움 ▶️ 유연성 부족
    • 데이터베이스 부하 분석이 어려움
    • 수평 확장의 어려움 ▶️ 데이터베이스 저장 방식으로 인해 수직 확장만 지원
    • 수직 확장 : 데이터베이스 서버의 성능을 향상시키는 것 ex) CPU 업그레이드
    • 수평 확장 : 서버를 추가하여 데이터베이스를 분산시키는 것. 여러 호스트에서 하나의 데이터베이스가 작동


객체지향 데이터베이스(ODBMS)

  • 객체 그대로를 데이터베이스의 데이터에 저장하는 것
  • 멀티미디어 데이터의 원활한 처리
  • RDBMS의 비지니스형 데이터 타입만 처리되는 제한적 극복

NoSQL(Not Only SQL)

  • 키(Key) - 값(Value)의 형태로 저장되는 데이터베이스, 키를 사용해 데이터 관리 및 접근
  • 스키마 없음, 관계 없음
  • Join이 존재하지 않고 데이터를 가져올 때, 컬렉션에 있는 데이터를 복제하여 필요한 데이터의 일부만 가져옴
  • 정확한 데이터 요구 사항을 알 수 없거나 관계를 맺는 데이터가 자주 변경될 때 사용
  • 읽기를 자주 하지만 데이터를 자주 변경하지 않는 경우 사용
  • RDB와 NoSQL의 차이점
    • NoSQL은 비정형 데이터(메신저 텍스트, 음성, 이미지 등)를 다룰 수 있음
    • 수평 확장이 가능하여 분산형 컴퓨팅(클라우드)에 적합

 

  • 장점
    • 스키마가 없기때문에, 훨씬 더 유연하며, 언제든지 저장된 데이터를 조정하고 새로운 "필드"를 추가 할 수 있
    • 데이터는 애플리케이션이 필요로 하는 형식으로 저장되고, 이렇게 하면 데이터를 읽어오는 속도가 빨라짐
    • 수직 및 수평 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기/쓰기 요청을 처리 할 수 있음
  • 단점
    • 유연성 때문에, 데이터 구조 결정을 하지 못하고 미루게 될 수 있음
    • 데이터 중복은 여러 컬렉션과 문서가 (SQL 세계에서 처럼 하나의 테이블에 하나의 레코드가 아니라) 여러 개의 레코드가 변경된 경우 업데이트를 해야 함
    • 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정(update)를 해야 하는 경우 모든 컬렉션에서 수행해야 함을 의미함
  • 종류
  • key-value
    • 키와 값으로 이루어진, 저장과 조회라는 가장 간단한 원칙에 충실한 데이터베이스.
    • 특징
      • 기본적인 패턴으로 Key,value가 하나의 묶음으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이
      • Key 안에 (Column, Value) 형태로 된 여러개의 필드를 갖음
        • key는 unique한 고유값으로 유지되어야 함
        • 값에 모든 데이터 타입을 허용하며, 그래서 개발자들이 데이터 입력 단계에서 검증 로직을 제대로 구현하는 것이 중요
        • 테이블간 조인을 고려하지 않으므로 RDB(Relational Database)에서 관리하는 외부키나, 컬럼별 constraints등이 필요 없음
      • 사용 조건
        • 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
        • 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
        • 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
        • 이미지나 오디오 파일 같은 대용량 객체 저장
    • 종류
      • Redis
      • Riak
      • Oracle Berkely
      • AWS DynamoDB
  • Document
    • 특징
      • XML, JSON, BSON - 계층적 트리 데이터 방식으로 저장
      • _id : PK, RowID 를 가진다
      • 집합적 데이터 모델 : 관계형 DB에서의 여러개 테이블 데이터를 하나의 Document에 모아둘 수 있음
      • 조회시 한번의 조회로 필요한 데이터 획득. Join 기능을 대체
      • 컬럼 없음 → Schema 없음
      • Document 내에 Field를 정의함 ( Key : Value )
        • Key에 대한 값은 Document가 될 수 있음 ( Embedded Document )
      • key-value Type과의 차이는 Database에 값을 문서로 저장한다는 점
      • 트랜지션이 원자적으로 이루어짐
      • 데이터를 여러 서버에 분산 저장이 가능하고, 복제와 회복이 가능한 형태이다. 장애가 발생하더라도 대응에 유리
    • 사용 조건
      • 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
      • 제품처럼 다양한 속성이 있는 데이터 관리
      • 다양한 유형의 메타데이터 추적
      • JSON 데이터 구조를 사요하는 애플리케이션
      • 비정규화된 중첩 구조의 데이터를 사용하는 애플리케이션 
    • 종류
      • MongoDB
      • Azure Cosmos DB
      • CouchDB
      • MarkLogic
      • OrientDB
  • Wide Column
    • 특징
      • 행마다 키와 해당값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있습니다.
      • 사용자 이름(Key)에 해당하는 값에 스키마들이 각각 다르다
      • Wide Column Database는 대량의 데이터의 압축, 분산처리, 집계 처리(sum, count, avg 등) 및 쿼리 동작 속도 그리고 확장성이 뛰어나다
  • 종류
    • Cassandra
    • HBase
    • Google BigTable
    • Vertica
    • Druid
    • Accumulo
    • HyperTable
  • graph
    • 특징
      • 데이터를 노드로 표현하며, 노드 사이의 관계를 엣지로 표현
      • RDBMS 보다 Performance가 좋고 유연하며 유지보수에 용이한것이 특징
      • Social networks, Network diagrams 등에 사용
    • 종류
      • Neo4j
      • Blazegraph
      • OrientDB
      • AgensGraph(국내솔루션)

시계열 데이터베이스(TSDB, Time Series Database)

  • 시간에 따라 저장된 데이터
  • 동일한 소스로부터 시간이 지남에 따라 만들어진 데이터들로 구성되므로 시간 경과에 따른 변화를 추적하는데 용이
    • 예를 들어, 어떤 집안의 온도들부터 경제 지표, 환자의 심장 박동수나 회사의 주가 등과 같은 모든 것들이 시계열 데이터가 될 수 있고,
    • 그 뿐만 아니라 서버로부터 기록되는 히스토리성 데이터나 센서 데이터, 이벤트 등 역시 시계열 모두 데이터가 될 수 있음
    • 시계열 데이터를 처리하기 위해 최적화된 데이터베이스로써 빠르고 정확하게 실시간으로 쌓이는 대규모 데이터들을 처리할 수 있도록 고안되었음
    • TSDB는 데이터들과 시간이 함께 저장하는데, 이를 통해 시간의 흐름에 따라 데이터를 분석하기에 매우 용이
      과거의 데이터를 시간과 함께 기록용으로 저장하므로 주된 작업은 INSERT와 DELETE이며 UPDATE가 아님
  • 중요성 및 증가 추세
    • Time Series Database(시계열 데이터베이스)가 중요한 이유는 오늘날 엄청나게 많은 데이터들이 수집되기 때문
    • 인공지능의 급격한 발달로 필요한 데이터들의 양은 급증하였고, 이러한 데이터들을 처리하기에는 관계형 데이터베이스와 NoSQL로 한계가 있기 때문임
  • 특징
    • 시간을 기반으로 하는 저장 공간
      • 기존의 다른 데이터베이스들과 차별이 되는 핵심적인 아키텍처 디자인 특징이 있는데, 그것은 바로 time-stamp를 기반으로 하는 저장소를 가지고 있다는 것
      • 이를 통해 데이터를 압축하고 요약하는 등의 작업을 진행하여 대규모의 시간 기반 데이터들을 다룰 수 있고, 시간을 기반으로 하는 쿼리를 가능하게 함
    • 빠른 처리 속도
      • TSDB는 빠르고 효율적인 방법으로 데이터를 수집하기 위해 만들어졌음
      • 물론 RDB도 빠르지만 데이터의 양이 증가함에 따라 성능이 급격하게 느려지는 경향이 있고, 특히 테이블에 인덱싱이 걸려있다면 인덱싱의 재정렬 등에 의해 퍼포먼스는 점점 더 떨어지게 됨
      • 반면에 TSDB에서의 인덱스는 시간에 따라 축적된 데이터들에 최적화되었기 때문에, 시간이 지나도 데이터를 수집하는 속도가 느려지지 않고 빠른 처리 속도를 보여줌
    • 다양한 자동화된 기능 제공
      • TSDB에는 시간에 따라 변화되는 데이터들을 저장하므로 데이터의 양이 상당히 많으며, 시간에 따른 데이터의 요약 또는 통계 등과 같은 작업이 흔히 요구됨
        • 예를 들어 회사의 주가가 지난 6개월 대비 몇 퍼센트 데이터가 증가하였는지 등
      •  TSDB는 이렇게 특정 주기마다 자동으로 데이터들을 처리하는 기능(InfluxDB의 Continous Query, 연속적인 쿼리)이나 오래된 데이터를 자동으로 삭제하도록 도와주는 기능(InfluxDB의 Retention Policy, 보존 정책) 등을 제공함으로써 편리성을 제공하고 있음
    • 단점
      • INSERT와 SELECT에 최적화되어 DELETE나 UPDATE에 대한 기능이 상당히 제한됨
      • 시간에 따라 데이터를 오름차순으로 정렬하므로 임의의 시간으로 데이터를 읽고 쓰는 작업(Read/Write)은 성능이 떨어짐
      • 대량의 데이터가 쓰여지도록 최적화되어 DB에 부하가 걸린 경우 항상 최신의 데이터를 반환하지 못할 수 있음
  • 종류
    • InfluxDB, Kdb+, Graphite, Prometheus, OpenTSDB, MachBase 

 

출처: 

https://mangkyu.tistory.com/188

https://velog.io/@swhan9404/NoSQL-%EC%9D%98-%EC%A2%85%EB%A5%98%EB%B3%84-%ED%8A%B9%EC%A7%95

https://honeywater97.tistory.com/174 

728x90
반응형

'DevOps > Database' 카테고리의 다른 글

MariaDB docker 설치 - Ubuntu  (0) 2023.01.17
Machbase - dbeaver 연결 및 오류  (0) 2022.04.06
Machbase 6.7  (0) 2022.04.05

댓글