데이터베이스 (Database)
- 데이터를 전산상에 저장하고 원하는 때에 사용할 수 있는 데이터의 집합체
- 데이터베이스의 필요성
: 데이터 종속성 해소 (플랫폼에 상관없이 데이터 접근 가능)
: 일관성 유지 (데이터의 동일성을 유지하기 위해 중복을 최소화)
: 보안성 (모든 데이터에 대한 동일한 수준의 보안 유지)
: 경제성 (저장되는 공간에 대한 비용 절감)
: 무결성 (데이터의 정확성을 유지)
※ 무결성
=데이터의 정확성, 일관성, 유효성을 유지하는 것
- 종류
: 계층형 데이터베이스
: 망형 데이터베이스
: 관계형 데이터베이스
: 객체지향 데이터베이스
: 객체관계형 데이터베이스
: No-SQL 데이터베이스
SQL (Structured Query Language)
- 데이터베이스에 저장된 데이터를 조회, 입력, 수정, 삭제하는 등의 조작이나
테이블을 비롯한 다양한 객체(시퀀스, 인덱스 등)을 생성 및 제어하기 위한 언어
=> 데이터베이스를 관리하기 위한 명령어
- Query (질의)
: 대부분의 데이터베이스를 관리하기 위한 명령어
데이터베이스의 종류
계층형 데이터베이스
- 구조
: 트리구조, 계층구조, 1대N 관계
- 특징
: 가장 오래된 방식
: 각 계층이 물리적인 포인터로 연결되어 있으며 종속적 관계를 지님
- 장점
: 데이터가 부모, 자식의 형태로 연결되어 있어 대용량 데이터 처리에 용이
: 데이터의 무결성이 우수함
- 대표적인 DBMS
: IMS
망형 데이터베이스
- 구조
: 그물형 구조, N대N 관계
: 계층형 트리를 확장한 형태
- 장점
: 계층구조에 링크라는 개념을 추가하여 유연성과 접근성이 우수함
: 데이터 추출이 빠르고 효과적
- 단점
: 유지 및 보수 비용이 많이 듦
: 프로그램 작성시 프로그램의 구조를 이해해야만 작성가능
: 구조 변경시 이를 참조했던 모든 응용 프로그램에 대한 수정 필요
- 대표적인 DBMS
: DBTG, EDBS, TOTAL
관계형 데이터베이스
- 구조
: 테이블 구조 (행렬)
- 장점
: 현재 현업에서 사용중인 대부분의 DBMS에서 채택한 방식으로 범용성과 성능이 높음
: 데이터의 일관성을 보증
: 정규화에 따른 갱신비용 최소화
: 다른 DB로의 변환이 용이하고 간결하며 판독이 쉬움
: 구조적인 독립성
: 유연한 질의(Query) 능력
: 물리적 구조의 특성으로부터 자유로워 데이터베이스 설계시 용이
- 단점
: 데이터 속성의 확장이 어려움
: 대량의 데이터 입력처리가 필요
: 갱신이 발생한 테이블의 인덱스 생성 및 스키마의 변경 필요
: 하드웨어와 운영체제의 오버헤드가 발생 우려로 인한 성능저하
- 대표적인 DBMS
: Oracle, MySQL, MsSQL, SQLite, MariaDB, SYBASE, DB2
객체지향 데이터베이스
- 구조
: 객체 / 클래스 / 메소드 / 상속
- 장점
: 복잡한 객체구조를 효과적으로 관리
: 오디오 및 비디오와 같은 비정형 데이터 지원
: 중첩 객체를 지원
: 장시간 트랜잭션 처리 및 버전관리 가능
: 복잡한 객체의 생성, 조회, 삭제가 용이함
- 단점
: 데이터베이스의 기본 기능 제공 미흡
: 데이터 모델의 논리적 / 물리적 복잡성
: 저장공간의 낭비 및 성능저하 유발
: 기존 데이터베이스와의 미흡한 호환성 (SQL 미지원)
: 질의 최적화의 복잡성
- 대표적인 DBMS
: Objectivity, O2, Versant, Ontos, Gemstone
객체관계형 데이터베이스
- 구조
: 관계형 + 객체지향형
: 사용자 정의 타입, 참조 타입, 중첩 테이블, 객체간의 상속관계 지원
- 장점
: 관계형 데이터베이스와 객체지향 데이터베이스의 장점을 모두 가짐
: 복잡한 데이터 모델 지원
: 빈번한 동일 객체 접근에 대한 빠른 접근을 제공
- 단점
: 효율적인 질의 처리 미비
: 표준제정의 지연으로 인한 혼란스러운 관련기술의 상태
- 대표적인 DBMS
: Unsql, Object Store
No-SQL 데이터베이스
- 구조
: 키 / 값
- 특징
: 관계형 데이터베이스 다음으로 많이 사용되며 최근 사용이 늘고 있는 데이터베이스 형태
: 키를 이용하여 데이터를 접근하고 관리
: SQL을 거의 사용하지 않음
- 장점
: 반정형화 ,비정형화된 데이터에 적합
: 대용량 데이터 처리에 용이
: 데이터 분산처리가 가능
: 클라우드 컴퓨팅에 용이
: 빠른 읽기 및 쓰기속도
: 유연한 데이터 모델링
: 많은 서버로의 확장 가능
: 가변적인 구조로 데이터 저장 가능
- 단점
: 다양하고 복잡한 데이터질의 불가
: 데이터의 일관성이 보장되지 않음
: 높은 학습수준을 요구
: 데이터 모델링의 어려움
: 관계형 데이터베이스에 비해 보안에 취약
- 대표적인 DBMS
: 문서지향
ㆍMongoDB
ㆍIBM Domino
ㆍCouchDB
: key-Value
ㆍOracle NoSQL Database, Apache Ignite, Dynamo
: Graph
ㆍNeo4j
'Database > Database' 카테고리의 다른 글
[백엔드 개발자 로드맵 2020] DATABASE - 인덱스 구조 (Index Structures) (0) | 2021.02.07 |
---|---|
[백엔드 개발자 로드맵 2020] DATABASE - 정규형 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - N+1 쿼리 문제 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - 트랜잭션과 ACID (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - ORM (Object Relational Mapping) (0) | 2021.02.07 |