[DB] DataBase와 DBMS

o_jooon_·6일 전
0

DB

목록 보기
1/1
post-thumbnail

CS 스터디를 하면서 정리한 내용을 포스팅 하고 있습니다!
스터티 깃허브

이번 포스팅은 데이터베이스의 핵심 개념을 간단하게 정리한 글입니다.
해당 글은 DB, DBMS에 관한 개념과 특징만 다루고, 이와 함께 꼭 알아야 할 SQL, DB 자료구조(e.g. 인덱스) 등의 개념은 따로 작성 예정입니다.


DataBase

데이터베이스(DataBase, DB)란, 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합이다.

논리적으로 연관된 하나 이상의 데이터의 집합으로, 이를 고도로 구조화하여 검색 및 갱신의 효율을 높인다.
특정 다수의 이용자들에게 필요한 정보를 제공하거나, 특정 조직 내에서 필요로 하는 정보를 체계적으로 축적하고 제공한다.
데이터베이스는 데이터의 구조와 특성에 따라 매우 단순하거나 복잡할 수 있다.
DBMS를 통해서 관리된다.

데이터(화물)은 데이터베이스(창고)에 저장되고, DBMS(관리자)는 화물을 창고에 적재하거나 창고에서 이용자로 보내주는 등의 역할을 한다.

DB의 특징

  • 동시 공유: 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
  • 계속적인 변화: 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지해야 한다.
  • 실시간 접근성: 데이터베이스는 사용자의 요청에 즉시 처리하고 응답해야 한다.
  • 내용에 의한 참조: 데이터베이스에 있는 데이터를 참조할 때, 사용자가 요구하는 데이터 내용으로 찾아야 한다.

DBMS

DBMS(DataBase Management System)란, 데이터베이스를 관리하고 운영하는 소프트웨어이다.

데이터를 파일 단위로 직접 관리하면, 적은 수는 무리 없이 사용할 수 있다.
하지만, 데이터 수가 증가하여 관리해야 할 파일이 늘어나면 한계에 부딪힌다.
따라서, DBMS를 활용하여 데이터를 데이터베이스로 정리하여 효율적으로 데이터를 통제하고 관리할 수 있다.

DBMS는 데이터를 저장, 검색, 수정, 삭제하는 작업을 효율적으로 처리한다.

DBMS의 기능

  • 중복 제어: 동일한 데이터가 여러 위치에 중복 저장되는 현상을 방지한다.
  • 접근 통제: 사용자마다 다양한 권한을 부여하고, 권한에 따라 데이터에 대한 접근을 제어한다.
  • 인터페이스 제공: 사용자에게 SQL 및 GUI, CLI 등 다양한 인터페이스를 제공한다.
  • 관계 표현: 서로 다른 데이터간의 다양한 관계를 표현할 수 있는 기능을 제공한다.
  • 무결성 제약 조건: 무결성에 관한 제약 조건을 정의/검사하는 기능을 제공한다.
    (데이터베이스는 반드시 무결성 제약 조건을 통과한 데이터만을 저장해야 한다.)
    (NoSQL의 경우, 제한적으로 중복 제어나 무결성이 무시되기도 한다.)

DBMS의 종류

DBMS는 데이터를 관리하는 모든 시스템의 큰 틀이고, 유형에는 대표적으로 관계형 DBMS인 RDBMS, 비관계형 DBMS인 NoSQL이 있다.

RDBMS

데이터를 테이블 형식으로 저장하고, 테이블 간 관계를 기반으로 데이터를 관리한다.
외래 키를 사용하여 테이블 간 join을 통해 여러 테이블의 데이터를 결합하여 가져올 수 있다.
ACID 원칙을 준수한다.

Atomicity(원자성): 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다.
Consistency(일관성): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 한다.
Isolation(격리성): 동시에 실행되는 트랜잭션은 서로 간섭하지 않아야 한다.
Durability(지속성): 트랜잭션 완료 후 데이터는 영구적으로 저장되어야 한다.

MySQL, PostgreSQL, Oracle 등이 RDBMS에 해당한다.

장점

  • 정해진 스키마에 따라 데이터를 저장하여 명확한 데이터 구조를 보장한다.
    데이터 정합성 -> 데이터들의 값이 서로 일치하는 상태
  • 데이터를 중복 없이 한 번만 저장한다.
    데이터 무결성 -> 데이터가 처리되는 모든 과정에서 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지하는 특성

단점

  • 시스템이 커질수록 join이 많아져 쿼리가 복잡해진다.
  • 성능 향상을 위한 Scale-up만 지원한다.
    -> Scale-out이 불가능하고, 비용이 기하급수적으로 커질 수 있다.
  • 스키마로 인해 데이터가 유연하지 않다.
    -> 스키마가 변경될 경우 번거로워진다.

사용하는 경우

  • 데이터 구조가 명확하고 변경될 여지가 없으며, 스키마가 중요한 경우에 사용한다.
  • 중복된 데이터가 없기 때문에, 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.

NoSQL

빅데이터의 등장으로 인해 데이터와 트래픽이 엄청나게 증가함에 따라 등장했다.
-> RDBMS는 빅데이터를 처리하기 위해 장비 업그레이드(Scale-up)을 하고 비용이 많이 든다.
NoSQL은 이런 RDBMS의 단점을 극복하고 데이터의 분산 저장(Scale-out)을 목표로 한다.

데이터를 문서, 키-값, 그래프 등 다양한 형식으로 데이터를 관리한다.

장점

  • 스키마가 없어 유연하고 자유로운 데이터 구조를 가지고 있다.
    -> 데이터 조정과 새로운 필드 추가가 자유롭다.
  • 성능 향상을 위해 Scale-up/Scale-out이 모두 가능하다.
    -> 데이터 분산이 용이하고, RDBMS에 비해 대용량의 데이터를 저장할 수 있다.

단점

  • 데이터 정합성을 보장하지 않기 때문에, 데이터 구조를 결정하기 어려울 수 있다.
  • 데이터의 중복이 발생 가능하며, 중복된 데이터가 변경될 경우 모든 컬렉션에서 수정해야 한다.

사용하는 경우

  • 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우에 사용한다.
  • 데이터의 수정이 많이 이루어지지 않는 시스템에 적합하다.
  • 데이터를 분산해서 저장(Scale-out)해야 할 만큼 대용량의 데이터를 저장하는 경우에 적합하다.

두 유형의 주요 차이

구분RDBMSNoSQL
데이터구조관계형 테이블 형식문서, 키-값, 그래프 등 다양한 형식
스키마고정된 스키마유연한 스키마
확장성수직적 확장(Scale-up)수직적 확장(Scale-up) 및 수평적 확장(Scale-out)
사용 사례트랜잭션, 데이터 관계가 중요한 시스템대규모 데이터, 비정형 데이터, 실시간 처리

면접 대비 질문

Q 1)
DB의 특징은?

A 1)
동계실내(동시 공유, 계속적인 변화, 실시간 접근성, 내용에 의한 참조)

  • 동시 공유: 다수의 사용자가 같은 데이터를 동시에 이용할 수 있어야 한다.
  • 계속적인 변화: 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 상태를 유지해야 한다.
  • 실시간 접근성: 데이터베이스는 사용자의 요청에 즉시 처리하고 응답해야 한다.
  • 내용에 의한 참조: 데이터베이스에 있는 데이터에 참조할 때, 사용자가 요구하는 데이터 내용으로 찾아야 한다.

Q 2)
DBMS란?

A 2)
데이터베이스를 관리하는 시스템으로, 사용자가 효율적으로 데이터베이스에 데이터를 저장, 검색, 수정, 삭제할 수 있도록 해준다.


Q 3)
RDBMS와 NoSQL의 차이점은?

A 3)
RDBMS는 고정된 스키마와 중복 없는 데이터로 정합성과 무결성을 보장하고, Scale-up만 지원한다.
NoSQL은 유연한 스키마와 중복 허용으로 확장성에 강하며, Scale-out 또한 지원한다.


Q 4)
트랜잭션의 ACID 원칙이란?

A 4)

  • Atomicity(원자성): 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다.
  • Consistency(일관성): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 한다.
  • Isolation(격리성): 동시에 실행되는 트랜잭션은 서로 간섭하지 않아야 한다.
  • Durability(지속성): 트랜잭션 완료 후 데이터는 영구적으로 저장되어야 한다.

참조

profile
안녕하세요.

0개의 댓글