CS - 6. DBMS의 기능과 종류
Sparta 내일배움캠프 학습으로, CS강의에 대한 공부를 위한 필기입니다.
01. DBMS 정리
- DBMS : 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 SW 프로그램
API : Application Programming Interface
- DBMS 용어
튜플(Tuple) : ‘튜, 카, 행’, 릴레이션에서 중복되는 값을 가질 수 없음, Cardinality
어트리뷰트(Attribute) :’열, 차, 속’, Degree
- 릴레이션(Relation = Table)
- 관계형 DB에서 정보를 구분하여 저장하는 기본 단위
- 키(Key)
테이블에서 행의 식별자로 이용되는 테이블의 열을 의미
- 식별자(Identifier) : 여러 개의 집합(인스턴스)체를 담고 있는 하나의 테이블에서 각각을 구분할 수 있는 논리적인 이름, 개념이며 이 구분자를 식별자라고 함.
- 주키(PK) : 무조건 1개 또는 1쌍, 현재 테이블에서 행을 식별하는 식별자
- 외래키(FK) : 여러개, 현재 테이블과 연관되어있는 외부 테이블과 연관된 행을 식별하는 식별자
- 도메인(Domain) : 하나의 어트리뷰트가 취할 수 있는 같은 타입의 원잣값들의 집합 ex) 성별 어트리뷰트의 도메인은 ‘남’과 여’의 데이터 값만 입력 가능, 나이 어트리뷰트의 도메인은 ‘숫자’의 값만 입력 가능
02. DBMS 기능
2-1. DBMS 요구사항
- DBMS는 DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능
- 1️⃣ 효율적
동일한 데이터가 저장되는 것을 방지하는 중복 제어기능
무결성 제약 조건을 정의/검사하는 기능
- 2️⃣ 직관적
서로 다른 데이터 간의 관계를 표현해주는 관계 표현
편리한 인터페이스 제공
- 3️⃣ 안전
접근하는 사용자마다 다른 권한을 주는 접근통제 기능
데이터가 잘못 수정/삭제 되었을 경우 백업 기능
- 1️⃣ 효율적
2-2. Transaction(트랜잭션)
- DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
- ex)회원가입 절차 = 가입 트랜잭션, 결제 절차 = 결제 트랜잭션
- 트랜잭션은 DB 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용
회원가입, 결제는 작업 단위로 병행(따로) 처리
회원가입 처리 중 잘못된 항목이 존재하여 가입불가시 가입취소(회복)가 됨
- 사용자가 시스템에 대한 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용
- 회원가입 요구 시 가입 완료 응답을 하기까지 작업단위 = 가입 트랜잭션
📌 트랜잭션 특성
원자성(Atomicity) : 트랜잭션의 연산은 DB에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 함. 트랜잭션의 모든 명령은 반드시 완벽히 수행되어야 함. 완벽히 수행되지 않고 하나라도 오류가 발생하면 전부 취소되어야 함
일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 변환함. 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함.
독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
영속성, 지속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함
03. RDB(관계형 데이터베이스) = SQL DB
3-1. 개요
현재 가장 많이 사용되고 있는 DB의 한 종류
- table로 이루어져 있고 테이블은 키(key), 값(value)로 나타냄
- 데이터 종속성을 관계(Relationship)로 표현하는 것이 큰 특징
3-2. 특징
데이터의 분류, 정렬, 탐색 속도가 빠름
신뢰성이 높고, 어떠한 상황에서도 데이터의 무결성 보장
- SQL이라는 표준 언어로 관리 가능, 개발 언어, DB 종류 등에 변화가 있어도 기존에 사용하던 App은 그대로 사용 가능
- 기존에 작성된 스키마 수정 어려움
- DB의 부하를 분석하는 것 어려움
3-2-1. 연관관계
- 관계
- 테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:N)관계가 있음
- 각 테이블은 기본키(Primary key)와 외래키(Foreign key)를 통해 맺어짐
3-2-2. SQL
국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있음.
App이 바뀌어도 그대로 사용할 수 있도록 DBMS에서 제공해 줌.
DDL(CREATE, ALTER, DROP, RENAME), DML(SELELCT, INSERT, UPDATE, DELETE), DCL(REVOKE, TRUNCATE,GRANT), TCL(COMMIT, ROLLBACK)
(이미지 출처 :SQLD 자격증 공부 시험일정 & 시험시간, .. : 네이버블로그 (naver.com))
3-3. 종류
DBMS | 제작사 | 작동 OS | 기타 |
---|---|---|---|
Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 |
MySQL | Oracle | Unix, Linux, Windows,Mac | 오픈 소스(무료), 상용 |
PostgreSQL | PostgreSQL | Unix, Linux, Windows,Mac | 오픈 소스(무료) |
MariaDB | MariaDB | Unix, Linux, Windows | 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듬 |
SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
- Oracle
미국 오라클 사의 관계형 데이터베이스 관리 시스템(RDBMS)
대량의 정보 관리
- MySQL
- RDBMS, 표준 SQL 형식, 오픈 소스이기 때문에 기술 지원의 한계
- PostgreSQL
오픈 소스 객체-관계형 데이터베이스 관리 시스템(ORDBMS)
- macOS 서버의 경우 기본 DB로 사용
- 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
- 테이블 상속 기능을 이용해 하위 테이블 생성 가능
- 오픈 소스임에도 상용 RDBMS급의 기능 제공
- MariaDB
오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)
MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB
- SQLite
RDBMS
- 구글 안드로이드 OS에 기본 탑재된 DB
- ACID 준수
- 완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없음
- 이식성 뛰어남, 동시성 제한, 사용자 관리 존재의 부재, 서버리스 DB여서 보안 약함
04. NoSQL
DBMS | 제작사 | 방식 | 작동 OS | 기타 |
---|---|---|---|---|
MongoDB | MongoDB Inc. | 문서 | Unix, Linux, Windows,Mac | 오픈 소스(무료),분산처리에 적합 |
Redis | Redis Labs | Key-Value | Unix, Linux, Windows,Mac | 오픈 소스(무료), 캐싱에 적합 |
DynamoDB | AWS | Key-Value | AWS 클라우드(Unix, Linux, Windows) | 오픈 소스(무료/유료), AWS에서만 사용, 확장에 용이 |
HBase | Apache 소프트웨어 재단 | Wide-column Store | Linux | 오픈 소스(무료), 빅데이터에 적합 |
Neo4j | Neo4j Inc. | Unix, Linux, Windows,Mac | 오픈 소스(무료), 추천기능에 적합 |
- MongoDB
- 유연한 스키마
- 문서 지향 모델을 사용하여 데이터를 저장, 이는 데이터의 구조를 동적으로 변경할 수 있음을 의미
- 분산 아키텍처
- MongoDB는 수평적으로 확장 가능한 분산 아키텍처를 제공, 대규모 데이터 처리 및 고가용성 지원
JSON 객체와 비슷한 문서에 데이터를 저장
- 각 문서에는 필드와 값의 쌍이 포함
- 유연한 스키마
- Redis
인메모리 데이터 저장소 : Redis는 데이터를 메모리에 저장하므로 매우 빠른 데이터 액세스와 응답시간을 제공
Key-Value DB 특징
- NoSQL에서도 키값 DB가 존재
대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우 사용
- 사용자 선호도 저장 또는 캐싱에서 사용
- DynamoDB
관리형 서비스 : AWS의 관리형 NoSQL 데이터베이스 서비스로 서버 관리와 확장성에 대한 부담을 줄여줌
- 높은 확장성 : 데이터의 크기나 트래픽의 증가에 따라 자동으로 확장되어 수평적으로 확장 가능
- Key-Value 특징(상동)
- HBase
분산 저장 시스템 : HBase는 Hadoop 분산 파일 시스템 위에서 작동하며, 대용량 데이터의 분산 저장과 처리를 지원함
일관된 읽기.쓰기 기능 :Hbase는 일관된 읽기와 쓰기 성능을 제공하여 대규모 데이터에 대한 실시간 액세스를 지원
- Wide-column stor
- 테이블, 행 및 동적 열에 데이터 저장
- 각 행이 동일한 열을 가질 필요가 없다는 점에서 RDB에 비해 뛰어난 유연성 제공
대량의 데이터 저장에 적합
- IOT 데이터와 사용자 프로필 데이터 저장 시 사용
- Wide-column stor
- Neo4j
그래프 데이터 베이스 : 그래프 DB로서 데이터 간의 관계를 중요시하고 효과적으로 저장하고 조회할 수 있음.
- ACID 트랜잭션
- 그래프 DB 특징
소셜 네트워킹, 추천 엔진 등에서 사용
- 정점과 간선에 데이터를 저장
- 정점에는 사람, 장소 및 사물에 대한 정보가 저장
- 간선에는 정점과 관계에 대한 정보가 저장
1
2
3
📌 어떤 DBMS를 사용해야하는가?
- 테이블 구조가 정해져 있고 내부 데이터 수정이 빈번할 때 : SQL DB(RDB)
- 테이블 구조가 정확히 잡혀있지 않고(추가적으로 수정될 가능성이 높을 때) 대량의 데이터를 처리할 때 : NoSQL DB