CS

[CS] DBMS

KJihun 2023. 7. 8. 19:12
728x90

DBMS는 DB를 효율적이고 직관적이며 안전하게 사용할 수 있게 해주는 DB ManagerSystem이다


효율성: 중복 제어 및 무결성 제약조건을 정의/검사하는 기능을 가짐
직관성: 서로 다른 데이터 간의 관계를 표현해주는 관계 표현 및 편리한 인터페이스를 제공
안전성: 접근하는 사용자마다 다른 권한을 주어 접근통제 및 데이터 수정/삭제 시 백업 기능 제공

트랜잭션: DB의 상태를 변화시키는 작업 단위나 병행제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.


트랜잭션의 특성: ACID
    - Atomicity(원자성) : 모두 반영(Commit)되거나 전혀 반영되지 않아야 함(Rollback)
    - Consistency(일관성) : 시스템의 고정요소는 트랜잭션 수행 전, 후의 상태가 같아야 함
    - Isolation(독립성, 격리성) : 트랜잭션 병행실행 시 다른 트랜잭션이 끼어들 수 없다
    - Durability(영속성, 지속성) : 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다

 

 


SQL DB(RDB; Relational DataBase): 관계형 데이터베이스

 

특징

1. 테이블(table)로 구성되어 있으며 테이블은 key와 value로 나타낸다.

2. 데이터 분류, 정렬, 탐색속도가 빠름
3. 높은 신뢰성(데이터 무결성을 보장)
4. SQL언어로 관리가 가느아기에 개발 언어가 변경되어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능
5. 기존에 작성된 스키마 수정이 어려움
6. DB 부하를 분석하는 것이 어려움

 



종류

Oracle
- 기업용으로 주로 사용
- 대량의 정보관리를 할 때 타 DBMS에 비해 좋은 성능을 보인다.
- 오라클 자체 SQL 쿼리를 사용해 표준 형식과 약간 다름

MySql
- 오픈 소스 라이선스를 따르기 때문에 무료로 사용 가능
- 표준 SQL 형식 사용
- 오픈 소스이기 때문에 기술 지원의 한계가 있음

PostrgreSQL: 객체-관계형 데이터베이스 시스템 (ORDBMS)
- 북미나 일본에서 많이 사용하며 macOS 서버의 경우 기본 데이터베이스로 사용된다.
- 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
- 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공
- 테이블 상속 기능을 이용해 하위 테이블 생성 가능
- 오픈 소스임에도 상용 RDBMS급의 기능을 제공
- 기본적인 CRUD 성능이 경쟁 DB에 비해 좋지 않다.

MariaDB: MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB
- MySQL과 거의 100% 호환성을 가지고 있음
- MySQL에 비해 애플리케이션 부분 속도가 약 4~5천 배 빠르고, 성능면에선 70% 향상을 보임
- 좀 더 자유로운 MySQL 정도로 이해하면 될듯함

SQLite
- 이름과 같이 매우 가볍다. 사용하는 공간은 시스템에 따라 다르지만 600kb 미만의 공간을 차지
- 완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없음
- 이식성이 뛰어남
- 동시성의 제한, 사용자 관리 존재의 부재, 서버리스 데이터베이스이기에 보안이 약함

 




No(Not Only)SQL: 기존의 RDB의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 DB

특징

데이터의 저장 및 검색에 특화된 메커니즘을 제공
NoSQL은 대부분 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발되었다.

 

 


종류

MongoDB

- 문서 지향(형식이 정해져있지 않음, 동적으로 변경가능) 데이터 모델을 사용하여 데이터를 저장
- 대규모 데이터 처리 및 고가용성을 지원합니다.
- 문서형 DB 특징
    - JSON 객체와 비슷한 문서에 데이터를 저장
    - 각 문서에는 필드와 값의 쌍이 포함
    - 대량의 데이터를 수용하도록 수평 스케일아웃이 가능

Redis
데이터를 메모리에 저장하여 빠른 액세스와 응답 시간을 제공.
문자열, 해시, 목록, 집합, 정렬된 집합 등 다양한 데이터 구조를 지원
- Key-Value DB 특징
    - NoSQL에서도 키값 데이터베이스가 존재함
    - 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우 사용
    - 사용자 선호도 저장 또는 캐싱에서 사용

DynamoDB
아마존 웹 서비스(AWS)의 관리형 NoSQL 데이터베이스 서비스로, 서버 관리와 확장성에 대한 부담을 줄여줌.
데이터의 크기나 트래픽의 증가에 따라 자동으로 확장되어 수평적으로 확장 가능한 성능을 제공.

HBase
Hadoop 분산 파일 시스템(HDFS) 위에서 작동하며, 대용량 데이터의 분산 저장과 처리를 지원.
일관된 읽기와 쓰기 성능을 제공하여 대규모 데이터에 대한 실시간 액세스를 지원.
    - Wide-column store
        - 테이블, 행 및 동적 열에 데이터 저장
        - 각 행이 동일한 열을 가질 필요가 없다는 점에서 RDB에 비해 뛰어난 유연성을 제공
        - 대량의 데이터 저장에 적합
        - IOT 데이터와 사용자 프로필 데이터 저장 시 사용

Neo4j
 데이터 간의 관계를 중요시하고 효과적으로 저장하고 조회할 수 있는 그래프 데이터베이스
ACID를 보장하는 트랜잭션을 지원하여 데이터의 정합성과 신뢰성을 유지한다.
- 그래프 DB 특징
    - 소셜 네트워킹, 추천 엔진 등에서 사용
    - 정점과 간선에 데이터를 저장
    - 정점에는 사람, 장소 및 사물에 대한 정보가 저장
    - 간선에는 정점과의 관계에 대한 정보가 저장