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와 비슷
- Oracle
- 장점
- 다양한 용도로 사용 가능(범용성), 높은 성능
- 데이터 무결성 보장, 높은 신뢰성
- 명확한(= 엄격한) 스키마 정의
- 정규화에 따른 갱신 비용 최소화
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 관계를 통해 각 데이터를 중복없이 한 번만 저장
- 단점
- 대량의 데이터 입력 처리
- 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경
- 컬럼 확장 어려움 ▶️ 유연성 부족
- 데이터베이스 부하 분석이 어려움
- 수평 확장의 어려움 ▶️ 데이터베이스 저장 방식으로 인해 수직 확장만 지원
- 수직 확장 : 데이터베이스 서버의 성능을 향상시키는 것 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, 보존 정책) 등을 제공함으로써 편리성을 제공하고 있음
- TSDB에는 시간에 따라 변화되는 데이터들을 저장하므로 데이터의 양이 상당히 많으며, 시간에 따른 데이터의 요약 또는 통계 등과 같은 작업이 흔히 요구됨
- 단점
- 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
728x90
반응형
'DevOps > Database' 카테고리의 다른 글
MariaDB docker 설치 - Ubuntu (0) | 2023.01.17 |
---|---|
Machbase - dbeaver 연결 및 오류 (0) | 2022.04.06 |
Machbase 6.7 (0) | 2022.04.05 |
댓글