CS

데이터베이스 종류

Hyeon_E 2023. 11. 16. 13:58

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

폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식

데이터의 관계를 트리 구조로 정의

부모 - 자식 형태를 가짐

 

종류

하드디스크, DVD 파일 시스템 등

 

장점

데이터의 액세스 속도가 빠름

데이터의 사용량 쉽게 예측

 

단점

상하 종속적인 관계로 구서오디어 초기 세팅 후 프로세스 수용이 어려움

 

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

데이터 구조를 네트워크 상의 노드 형태로 논리적이이게 표현한 데이터 모델

각각의 노드를 서로 대등한 관계로 구성한 시스템

 

장점

계층형 데이터베이스의 데이터 중복 문제 해결

상하 종속적 관계 해결

 

단점

추후 변경시 복잡한 구조로 인해 변경이 어려움

데이터 종속성을 해결하지 못함

 

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

https://honeywater97.tistory.com/174

 

행(Colunm)과 열(Row)을 가지는 표 형식 데이터를 저장하는 형태의 데이터 베이스

 

종류

  • Oracle
    • 오라클에서 개발, 가장 많이 사용하는 RDBMS
    • 중앙 집중 방식, Administration Monitoring 가능
    • Multiple Databases 튜닝 가능
    • 다른 Admin User들과 공유 가능
    • 다양한 핸들링 지원
  • DB2
    • IBM이 개발, 한동안 IBM 컴퓨터에서만 구동이 가능했음
  • SQL Server
    • 마이크로소프트에서 개발, 윈도우 플랫폼에서만 동작
  • PostgreSQL
    • 오픈 소스 커뮤니티에서 개발
  • MySQL
    • 오픈소스 커뮤니티에서 개발
    • 경량 데이터 베이스 ▶️ 기능이 확장되면서 다른 RDBMS와 비슷
    • 매우 적은 오버헤드 사용 ▶️ 오라클 128mb, MySql 1mb

장점

다양한 용도로 사용 가능(범용성), 높은 성능

데이터 무결성 보장, 높은 신뢰성

명확한(= 엄격한) 스키마 정의

정규화에 따른 갱신 비용 최소화

데이터의 분류, 정렬, 탐색 속도가 빠름

관계를 통해 각 데이터를 중복없이 한 번만 저장

 

단점

대량의 데이터 입력 처리

갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경

컬럼 확장 어려움 ▶️ 유연성 부족

데이터베이스 부하 분석이 어려움

수평 확장의 어려움 ▶️ 데이터베이스 저장 방식으로 인해 수직 확장만 지원

 

- 수직확장 vs 수평확장

  • 수직확장: 데이터베이스 서버의 성능을 향상시키는 것(Ex. CPU 업그레이드)
  • 수평확장: 서버를 추가하여 데이터베이스를 분산시키는 것. 여러 호스트에서 하나의 데이터베이스가 작동

 

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

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

 

NoSQL(Not Only SQL)

https://honeywater97.tistory.com/174

 

키(Key) - 값(Value)의 형태로 저장되는 데이터베이스, 키를 사용해 데이터 관리 및 접근

스키마 없음, 관계형 데이터 베이스가 아님
Join이 존재하지 않고 데이터를 가져올 때, 컬렉션에 있는 데이터를 복제하여 필요한 데이터의 일부만 가져옴
정확한 데이터 요구 사항을 알 수 없거나 관계를 맺는 데이터가 자주 변경될 때 사용
읽기를 자주 하지만 데이터를 자주 변경하지 않는 경우 사용

 

종류

  • Document
    • 레코드마다 각각 다른 스키마를 가짐(유동적인 스키마)
    • XMS, JSON과 같은 Document를 이용해 레코드 저장
    • 트리형 구조(레코드 저장 및 검색에 용이
    • MongoDB(가장 유명), Azure Cosmos DB, CouchDB, MarkLogic, OrientDB 등
  • Wide Column 
    • 행마다 키와 값을 저장할 때 각각 다른 값의 다른 수의 스키마를 가짐
    • Key 값의 스키마가 각각 다르다는 것을 사용자가 알 수 있음
    • 대량의 데이터 압축, 분산처리, 집계 처리, 쿼리 동작속도, 확장성이 뛰어남
    • Cassandra, HBase, Google BigTable 등
  • Key Value
    • 기본적인 패턴, Key와 Value가 하나의 묶음으로 저장되는 단순한 구조
    • 빠른 속도, 분산 저장 용이
    • Scan에 용이하지 않음
    • Redis, Oracle NoSQL Database 등
  • Graph
    • 데이터를 노드로 표현하여 노드 사이의 관계를 엣지로 표현
    • RDBMS보다 Performance가 좋고 유연
    • 유지보수에 용이
    • Social Network, Network diagrams 등에 사용
    • Neo4j, OrientDB 등

 

장점

높은 유연성으로 스키마가 없음(저장된 데이터를 조정하고 새로운 필드 추가 가능)

애플리케이션에 필요한 형식으로 저장(데이터를 가져오는 속도가 빠름)

수직 및 수평 확장 가능

 

단점

데이터 구조 결정이 늦어짐
복사된 데이터가 변경되면 모든 콜렉션과 문서 수정 필요

- RDB와 NoSQL의 차이점

https://honeywater97.tistory.com/174

 

NoSQL은 비정형 데이터(메신저 텍스트, 음성, 이미지 등)를 다룰 수 있음
수평 확장이 가능하여 분산형 컴퓨팅(클라우드)에 적합