본문 바로가기

CS

[CS] DBMS 기능과 종류

DBMS 기능

DBMS 요구사항

DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능

  • 효율적으로,
    • 동일한 데이터가 저장되는 것을 방지하는 중복 제어기능
    • 무결성 제약 조건을 정의/검사하는 기능
  • 직관적으로,
    • 서로 다른 데이터 간의 관계를 표현해주는 관계 표현
    • 편리한 인터페이스 제공
  • 안전하게,
    • 접근하는 사용자마다 다른 권한을 주는 접근통제 기능
    • 데이터가 잘못 수정/삭제 되었을때 백업하는 기능

 

Transaction(트랜잭션)

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

 

트랜잭션의 특성

  • 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 한다. 또한 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 한다. 완벽히 수행되지 않고 하나라도 오류가 발생하면 전부 취소되어야 한다.
  • 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다. 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
  • 영속성, 지속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장이 나더라도 영구적으로 반영되어야 한다.

 

DBMS는 데이터 관리의 원칙 중 안전, 공유, 일관성, 손상방지 등의 원칙을 트랜잭션 단위로 해결한다.

 

DBMS 종류

RDB(관계형 데이터베이스) = SQL DB

현재 가장 많이 사용되고 있는 데이터베이스의 한 종류

테이블(table)로 이루어져 있으며, 테이블은 키(key)와 값(value)으로 나타낸다.

데이터 종속성을 관계(Relationship)로 표현

 

특징

  • 데이터의 분류, 정렬, 탐색 속도가 빠름
  • 신뢰성인 높고, 어떠한 상황에서도 데이터의 무결성을 보장
  • SQL이라는 표준 언어로 관리가 가능하기에 개발 언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용 가능
  • 기존에 작성된 스키마를 수정하기가 어려움
  • 데이터베이스의 부하를 분석하는 것이 어려움

 

연관관계 (1:1, 1:N, N:M)

  • 일대일 = 나 : 내 핸드폰 = 유저 : 프로필 이렇게, 하나의 테이블과 다른 하나의 테이블만 연결된 것
  • 일대다 = 나 : 담임 선생님 = 유저 : 게시글 게시글 또한 한명의 유저만 작성하기 때문에 일대다 관계
  • 다대다 = 나 : 동아리 = 게시글 : 해시태그 게시글에 사용되는 해시태그의 연관관계를 보면, 여러 게시글이 여러 해시테그들과 관계를 가질 수 있으므로 다대다 관계

 

SQL(Structured Query Language)

관계형 데이터베이스에서 사용되는 언어

SQL은 특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있음. (표준 SQL)

문제는 SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에 표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못한다는 것. 그래서 DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용함.

SQL이라는 표준 언어로 관리가 가능하기에 개발 언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능하다.

위 같은 내용을 고려하여 서비스를 위한 데이터는 데이터베이스(DBMS)를 사용하게 된다.

이런 내용을 모두 애플리케이션마다 구현하고 예외를 처리하려면 엄청난 리소스가 들지만, DBMS에서는 이를 제공해주기 때문

 

종류

DBMS
제작사
작동 운영체제
기타
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
모바일 전용, 오픈 소스(무료)

1. Oracle

  • 미국 오라클(Oracle) 사의 관계형 데이터베이스 관리 시스템(RDBMS)
  • 오픈 소스 DBMS가 있음에도 안정성과 유지보수를 보장받을 수 있다는 장점 때문에 비 IT업종 기업에서 많이 사용됨

특징

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

2. MySql

  • 관계형 데이터베이스 관리 시스템(RDMS)
  • 오픈 소스이며, 다중 사용자와 다중 스레드 지원

특징

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

3. PostrgreSQL

  • 오픈 소스 객체-관계형 데이터베이스 시스템 (ORDBMS)
  • macOS 서버의 경우 기본 데이터베이스로 사용됨
  • 북미나 일본에서 많이 사용

특징

  • 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
  • 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공
  • 테이블 상속 기능을 이용해 하위 테이블 생성 가능
  • 오픈 소스임에도 상용 RDBMS급의 기능을 제공
  • 기본적인 CRUD 성능이 경쟁 DB에 비해 좋지 않음

4. MariaDB

  • 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)
  • MySQL과 동일한 소스 코드를 기반, GPL v2 라이선스를 따름
  • MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB

특징

  • 위의 말한 관계로 인해 MySQL과 거의 100% 호환성을 가지고 있음
  • MySQL에 비해 애플리케이션 부분 속도가 약 4~5천 배 빠르고, 성능면에선 70% 향상을 보인다고 말함
  • 좀 더 자유로운 MySQL 정도로 이해하면 될듯함

5. SQLite

  • 독립형 파일 기반의 오픈소스 RDBMS
  • 구글 안드로이드 운영 체제에 기본 탑재된 데이터베이스
  • ACID 준수

특징

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

 

NoSQL

Not Only SQL(SQL 뿐만이 아닌. 이라는 뜻)의 줄임말로, SQL뿐만 아니라 다른 여러 장점을 가지고 있다.

기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 데이터베이스라서, 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하며, 데이터의 저장 및 검색에 특화된 메커니즘을 제공함.(종류마다 특화된 기능이 다름)

NoSQL은 대부분 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발되었음

 

종류

DBMS
제작사
방식
작동 운영체제
기타
MongoDB
MongoDB Inc.
Document
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.
Graph
Unix, Linux, Windows, Mac
오픈 소스(무료), 추천기능에 적합

1.  MongoDB

  • 유연한 스키마: MongoDB는 유연한 문서 지향 데이터 모델을 사용하여 데이터를 저장한다. 이는 데이터의 구조를 동적으로 변경할 수 있음을 의미함
  • 분산 아키텍처: MongoDB는 수평적으로 확장 가능한 분산 아키텍처를 제공하여 대규모 데이터 처리 및 고가용성을 지원한다.
  • 문서형 DB 특징
    • JSON 객체와 비슷한 문서에 데이터를 저장
    • 각 문서에는 필드와 값의 쌍이 포함
    • 대량의 데이터를 수용하도록 수평 스케일아웃이 가능

2. Redis

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

3. DynamoDB

  • 관리형 서비스: DynamoDB는 아마존 웹 서비스(AWS)의 관리형 NoSQL 데이터베이스 서비스로, 서버 관리와 확장성에 대한 부담을 줄여준다.
  • 높은 확장성: DynamoDB는 데이터의 크기나 트래픽의 증가에 따라 자동으로 확장되어 수평적으로 확장 가능한 성능을 제공한다.
  • Key-Value DB 특징 (상동)

4. HBase

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

5. Neo4j

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

 

DBMS 사용

테이블 구조가 정해져 있고, 내부 데이터 수정이 빈번할 때 -> SQL DB(RDB)

테이블 구조가 정확히 잡혀있지 않고(추가적으로 수정이 될 가능성이 높을 때) 대량의 데이터를 처리할 때 -> NoSQL DB

 

 

 

참고

https://toload.tistory.com/entry/DB-DBMS-%EC%A2%85%EB%A5%98%EB%B3%84-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

http://www.incodom.kr/DBMS

'CS' 카테고리의 다른 글

[CS] OSI 7계층 - 세션, 표현, 응용 계층  (0) 2023.08.14
[CS] 가상메모리  (0) 2023.08.10
[CS] 데이터베이스(DB 구조와 유형)  (0) 2023.07.21
[CS] B-Tree & B+Tree  (0) 2023.07.20
[CS] 트라이(trie)  (0) 2023.07.20