데이터 베이스의 개념
데이터베이스란
데이터 베이스는 여러 사람들과 공유되어 사용할 목적으로 관리되는 데이터의 집합입니다.
약칭으로 DBMS이라고도 합니다.
데이터베이스의 기능
파일을 기반으로 데이터를 관리하게 되면 데이터 중복, 데이터 불일치 등 문제가 발생하게 되는데 이런 단점을 보완하기 위
MS SQL, Oracle DB, MySQL, MariaDB등으로 데이터들을 파일로 만들어서 다수의 사람들이 저장하고 관리할 수 있게 만들어주는 소프트웨어입니다.
데이터베이스 관리 시스템의 특징
1. 데이터의 독립성
데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없습니다.
2. 데이터의 무결성
여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능을 통해 입력 조건에 맞지 않는 입력값은 저장할 수 없도록 방지합니다.
3. 데이터의 보안성
허가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 혹은 접근 권한을 설정함으로서 모든 데이터에 보안을 구현합니다.
4. 데이터의 일관성
연관된 정보를 관리함으로서 하나의 데이터만 변경했을 경우 발생하는 데이터의 불일치성을 배제할 수 있습니다. 또한 일부 데이터만 변경했을때 불일치하는 오류를 없앨 수 있습니다.
5. 데이터의 중복 최소화
데이터를 통합해서 관리함으로서 중복 문제를 해결할 수 있습니다.
데이터베이스의 종류
계층형 데이터베이스
하드디스크, DVD파일 시스템 등에 사용
1. 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식
2. 데이터의 관계를 트리 구조로 정의
장점 | 단점 |
데이터의 엑세스 속도가 빠름 | 추후 변경 시 복잡한 구조로 변경이 어려움 |
데이터의 사용량 쉽게 예측 가능 | 데이터 종속성 해결 불가 (응용프로그램에 의존적임) |
네트워크형 데이터베이스
네트워크상의 노드 형태로 논리적으로 표현한 데이터, 각각의 노드를 서로 대등한 관계로 구성한 시스템
장점 | 단점 |
상하 종속적 관계 해결 | 추후 변경 시 복잡한 구조로 변경이 어려움 |
데이터 중복 문제 해결 | 데이터 종속성 해결 불가 (응용프로그램에 의존적임) |
관계형 데이터베이스
행과 열을 가지는 표 형식 데이터로 저장하는 형태의 데이터베이스
ex) 1.제품 ID 제품 이름 색상 ID
0001 매트리스 색상 1
0002 베개 색상 2
2. SQL (관계형 데이터베이스를 처리하는 개발 언어) 을 이용하여 관리 및 접근함
종류
ORACLE
1. 오라클에서 개발. 가장 많이 사용하는 RDBMS
2. 중앙 집중 방식. Administration Monitoring (관리자 모니터링) 가능
3. Multiple Database (다중 데이터베이스) 가능
4. 다른 관리자들과 공유 가능
5. 다양한 핸들링 지원
DB2
IBM이 개발. IBM 컴퓨터에서만 구동 가능
SQL SERVER
마이크로소프트에서 개발. 윈도우 플랫폼에서만 동작
PostgreSQL
오픈 소스 커뮤니티에서 개발
MySQL
오픈 소스 커뮤니티에서 개발
경량 데이터 베이스였으나 기능 확장
장점 | 단점 |
다양한 용도로 사용 가능(범용성), 높은 성능 | 대량의 데이터 입력 처리 |
데이터 무결성 보장, 높은 신뢰성 | 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경 |
명확한 스키마 정의 | 유연성 부족, 컬럼 확장 어려움 |
정규화에 따른 갱신 비용 최소화 | 데이터베이스 부하 분석이 어려움 |
데이터의 분류, 정렬, 탐색 속도가 빠름 | 수평 확장의 어려움, 데이터베이스 저장 방식으로 인해 수직 확장만 지원 |
관계를 통해 각 데이터를 중복없이 한번만 저장 가능 |
수직 확장
데이터베이스 서버의 성능을 향상시키는 것
수평확장
서버를 추가하여 데이터베이스 분산, 여러 호스트에서 하나의 데이터베이스 작동
객체지향 데이터베이스 (ODBMS)
1. 객체 그대로를 데이터베이스의 데이터에 저장하는 것
2. 멀티미디어 데이터의 원활한 처리 가능
3. RDBMS의 비지니스형 데이터 타입만 처리되는 제한을 극복함
NoSQL (NOT ONLY SQL)
키(KEY) - 값 (VALUE)의 형태로 저장되는 데이터베이스, 키를 사용해 데이터 관리 및 접근
1. 스키마 없음. 관계 없음
2. JOIN이 존재하지 않고 데이터를 가져올때 컬렉션에 있는 데이터를 복제하여 필요한 데이터의 일부만 가져옴
3. 정확한 데이터 요구 사항을 알 수 없거나 관계를 맺는 데이터가 자주 변경될 때 사용
4. 읽기를 자주 하지만 데이터를 자주 변경하지 않는 경우 사용
RDB와 NoSQL의 차이점
NoSQL은 비정형 데이터 (메신저 텍스트, 음성, 이미지 등)을 다룰 수 있음
수평 확장이 가능하여 분산형 컴퓨팅 (클라우드)에 적합함
장점 | 단점 |
스키마가 없기 때문에 훨씬 더 유연하며 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능 | 유연성 때문에 데이터 구조 결정을 하지 못함 |
데이터는 애플리케이션이 필요로 하는 형식으로 저장되고 데이터를 읽어오는 속도가 빨라짐 | 여러 컬렉션과 문서가 생기기 때문에 데이터 중복으로 여러개의 레코드가 변경된 경우 업데이트를 해야 함 |
수직 및 수평 확장이 가능하므로 모든 읽기/쓰기 요청을 처리할 수 있음 | 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정해야 하는 경우 모든 컬렉션에서 수정 필요 |
종류
KEY-VALUE
키와 값으로 이루어진 저장과 조회라는 가장 간단한 원칙에 충실한 데이터베이스
특징
기본적인 패턴으로 KEY, VALUE가 하나의 묶음으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이
KEY안에 Column, Value 형태로 된 여러개의 필드를 가짐
KEY는 특별한 고유값으로 저장됨.
값에 모든 데이터 타입을 허용하며 개발자들이 데이터 입력 단계에서 검증 로직을 제대로 구현하는 것이 중요
테이블간 조인을 고려하지 않으므로 RDB에서 관리하는 외부키나 컬럼별 고려사항 등이 필요 없음
사용조건
성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
이미지나 오디오 파일 같은 대용량 객체 저장
종류
Redis
Riak
Oracle Berkely
Aws DynamoDB
DOCUMENTS
특징
XML, JSON, BSON: 계층적 트리 데이터 방식으로 저장
_id: PK, RowID 보유
집합적 데이터 모델: 관계형 DB에서의 여러개 테이블 데이터를 하나의 문서에 모아둘 수 있음
조회시 한번의 조회로 필요한 데이터 휙득. Join기능을 대체
스키마 없음
Document 내에 Field를 정의함 (KEY : Value)
Key에 대한 값은 Document가 될 수 있음
Key-value의 TYPE과의 차이는 Database의 값을 문서로 저장함
트랜지션이 원자적으로 이루어짐
데이터를 여러 서버에 분산 저장이 가능하고 복제와 회복이 가능한 형태. 장애가 발생하더라도 대응이 빠릅니다.
사용 조건
대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
제품처럼 다양한 속성이 있는 데이터 관리
다양한 유형의 메타데이터 추적
JSON 데이터 구조를 사용하는 애플리케이션
비정규화된 중첩 구조의 데이터를 사용하는 애플리케이션
종류
MongoDB
Azure Cosmos DB
CouchDB
Marklogic
OrientDB
Wide Column
특징
행마다 키와 해당값을 저장할 때마다 각각 다른 값과 다른 수의 스키마를 가질 수 있습니다.
사용자 이름의 해당하는 값의 스키마들이 각각 다릅니다.
Wide Column database는 대량의 데이터들의 압축, 분산처리, 집계 처리(Sum, count, avg 등) 쿼리 동작 속도 그리고 확장성이 뛰어납니다.
종류
Cassandra
HBase
Google BigTable
Vertica
Druid
Accumulo
HyperTable
Graph
특징
데이터를 노드로 표현하며 노드 사이의 관계를 엣지로 표현합니다.
RDBMS 보다 반응성이 좋고 유지보수에 유연합니다.
Social networks, Network diagrams 등의 사용
종류
Neo4j
Blazegraph
AgensGraph (국내)
시계열 데이터베이스 (TSDS)
시간에 따라 분류된 데이터동일한 소스로부터 시간이 지남에 따라 만들어진 데이터들로 구성되므로 시간 경과에 따른 변화를 추적하는데 용이합니다.
예를 들어, 어떤 집안의 온도들부터 경제 지표, 환자의 심장 박동수나 회사의 주가 등과 같은 모든 것들이 시계열 데이터가 될 수 있고, 그 뿐만 아니라 서버로부터 기록되는 히스토리성 데이터나 센서 데이터, 이벤트 등 역시 시계열 모두 데이터가 될 수 있습니다. 시계열 데이터를 처리하기 위해 최적화된 데이터베이스로써 빠르고 정확하게 실시간으로 쌓이는 대규모 데이터들을 처리할 수 있도록 고안되었습니다.
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