[DB] DB 개념, 특징과 DBMS 종류 (RDBMS, NO SQL)
DB(Database) 란?
: 데이터의 집합. 여러 사람이 공유하여 사용할 목적으로 통합 관리하는 데이터의 집합을 의미.
- 데이터: 현실 세계에서 사건이나 사물의 특징을 관할하거나 측정하여 기술하는 가공되지 않은 사실이나 값
- 정보: 의미있고 쓸모 있는 내용으로 가공하여 체계저으로 조직한 데이터
→ 데이터베이스는 단순한 데이터 저장소가 아닌, SQL 등으로 세밀히 제어가 가능하며, 정보를 통합하여 구조적이며 효율적으로 데이터를 저장 관리할 수 있음
DB의 데이터 특징
1. 통합된 데이터 (Integrated Data)
- 중복된 정보를 통합하여 자료의 중복을 최소화한 데이터의 모임으로 구성
- 데이터의 일관성 유지, 관리비용 감소 가능
2. 저장된 데이터 (Stored Data)
- 컴퓨터가 접근 가능한 매체에 데이터 저장
3. 운영 데이터 (Operational Data)
- 조직의 목적을 위해 존재하고 활용되는 운영 데이터를 다루는데 주로 이용
- 운영을 위해 사용되기 때문에 지속적으로 유지 필요 (임시적으로 처리하는 데이터가 아님)
4. 공유 데이터 (Shared Data)
- 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터
- 어느 하나의 프로그램에 종속된 것이 아닌, 다수의 사용자나 프로그램이 공동으로 소유하고 유지
DB의 기능 특징
1. 실시간 접근성 (Real-Time Accessibility)
- 사용자의 요구(query)를 실시간으로 처리하고 신속하고 정확하게 응답해야 함
2. 지속적인 변화 (Continuous Evolution)
- 현실 세계의 변화를 반영하기 위해 새로운 데이터 삽입, 삭제, 갱신을 통해 최신 데이터 유지 필요
3. 동시 공용 (Concurrent Sharing)
- 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함
4. 내용에 따른 참조 (Content Reference)
- 데이터베이스 내의 데이터 참조 시 데이터 위치나 주소가 아닌, 데이터 내용에 따라 참조가 가능해야 함
DB 언어 (Database Language) 종류
- 가장 많이 사용하는 데이터베이스 언어는 SQL (Structured Query Language)로 대부분의 DB시스템에서 지원
- 데이터를 어떻게 다루느냐에 따라 아래와 같은 4개로 구분됨
명령어 종류 | 명령어 | 설명 |
데이터 정의어 (DDL, Data Definition Language) |
CREATE ALTER DROP RENAME TRUNCATE |
테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어 |
데이터 조작어 (DML, Data Manipulation Language) |
SELECT | 데이터를 조회하거나 검색하기 위한 명령어 |
INSERT UPDATE DELETE |
데이터에 변형을 가하는 종류(삽입, 수정, 삭제)의 명령어 | |
데이터 제어어 (DCL, Data Control Language) |
GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용할 수 있도록 권한을 주고 회수하는 명령어 |
트랜젝션 제어어 (TCL, Transaction Control Language) |
COMMIT ROLLBACK SAVEPOINT |
논리적인 작업의 단위를 묶어 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어 |
DBMS (Database Management System) 란?
: 데이터베이스를 관리하는 소프트웨어
- 데이터베이스의 데이터를 효율적으로 저장하고 검색하고 수정하고 삭제하고 보호할 수 있도록 함
- 다양한 종류와 모델이 존재하며 사용하는 목적과 환경에 따라 선택 사용 필요
DBMS 종류
1. HDBMS (Hierarchical DBMS), 계층형 DBMS
- 데이터를 트리구조로 표현
- 데이터 접근 속도가 빠르고 단순한 구조를 가지지만 데이터 중복이 많고 구조 변경 및 관계 표현이 어려움
- IMS, System2000
2. NDBMS (Network DBMS), 네트워크형 DBMS
- 데이터를 그래프 구조로 표현
- HDBMS에 비하여 관계 표현이 유연하고 다대다 관계를 지원
- 구성과 설계가 복잡하고 데이터 종속성(데이터 구조가 변경되면 프로그램까지 바뀌어야 함)을 해결하지 못함
- IDS, TOTAL, IDMS
3. RDBMS (Relational DBMS), 관계형 DBMS
- 데이터를 테이블 형태로 표현
- 데이터의 중복을 최소화하고 구조 변경이 쉬우며 SQL 언어를 사용한 데이터 조작 용이
- ACID 원칙을 준수하여 데이터의 무결성과 일관성을 보장
- 가장 널리 되는 DBMS로 MySQL, Oracle, SQLite 등이 있음
[ ACID 원칙 ]
1. Atomicity (원자성) : 트랜젝션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장
2. Consistency (일관성) : 트랜젝션이 실행을 성공적으로 완료하며 언제나 일관성 있는 DB상태를 유지하는 것
- 특정 제약이 있다면 데이터는 이에 위반되는 트랜젝션은 중단되는 것
ex. 금액의 데이터 타입이 정수형(integer)인데 갑자기 문자열(string)이 되지 않는 것을 의미
3. Isolation (독립성) : 트랜젝션 수행 시 다른 트랜젝션의 연산 작업이 끼어들지 못하도록 보장
4. Durability (지속성) : 성공적으로 수행된 트랜젝션은 영원히 반영되어야 함을 의미
- 시스템 문제, DB 일관성 체크를 하더라도 유지되어야 함을 의미
- 트랜젝션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주 가능
4. NO SQL (Not Only SQL)
- 여러가지 모델로 데이터를 표현 (Document, Key-Value, Wide-Column 등)
- RBDMS의 테이블 형태가 아닌 형태를 띈 DB를 총칭
- 높은 확장성과 가용성, 유연한 스키마를 가짐
- 데이터의 일관성이 항상 보장되지는 않으며 기존 SQL과의 호환성 낮음
- 대용량 데이터나 분산 처리에 빠르게 대응 가능
- MongoDB, HBase, Cassandra, Redis