Post

데이터베이스 개요

데이터베이스

개요

데이터베이스(영어: database, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다

이러한 데이터의 집합인 데이터베이스를 관리하고 사용하기 위하여 데이터베이스 관리 시스템(DBMS)를 사용하게된다. (그냥 사람들이 데이터 베이스라고 말하는 것은 사실 DBMS를 말하는 것에 가깝다)

1. DBMS의 기능

  1. 정의 기능
    • 데이터베이스의 구조를 정의
    • 논리적, 물리적 구조 두 구조 사이의 매핑 정의
  2. 조작 기능
    • 데이터 처리 기능(CRUD)
  3. 제어 기능
    • 데이터의 정확성과 안정성 유지
    • 트랜잭션, 동시성 제어, 데이터 무결성, 보안 등

2. DBMS의 종류

DBMS의 종류를 등장 순서대로 정리해보겠다.

1) 파일 시스템(File System)

DBMS의 기능만 생각해본다면 사실 파일 시스템 역시 DBMS가 아닌가 싶다.
물론 우리가 흔히들 생각하는 DBMS는 파일 시스템 위에서 구동되는게 일반적이다. 파일 시스템은 운영체제에서 파일을 관리할때 필요한 시스템이라고 생각하면 된다.

2) 계층형 데이터 베이스 관리 시스템(Hierarchical Database Management System, HDBMS)

IBM IMS(IBM Information Management System)이 이 시스템의 대표적인 예시이다.
폴더와 파일 등 계층 구조로 데이터를 저장하는 방식이다.
데이터의 관계를 트리 구조로 정의하여 부모 - 자식 형태를 가진다.

장점
  • 데이터의 엑세스 속도가 빠르다.
  • 데이터의 사용량 쉽게 예측이 가능하다.
단점
  • 상하 종속적인 관계로 구서되어 초기 세팅 후 프로세스 수용이 어렵다.

3) 망형 데이터 베이스 관리 시스템(Network Database Management System, NDBMS)

데이터 구조를 네트워크 상의 노드 형태로 표현한 데이터 모델이다.
각각의 노드가 대등한 관계로 구성되어있다.

장점
  • 계층형 데이터베이스의 데이터 중복 문제가 없다.
  • 상하 종속적 관계 문제가 없다.
단점
  • 이후 변경시 구조가 복잡하여 어렵다.
  • 데이터 종속성은 여전히 존재한다.

4) 관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)

행(Column)과 열(Row)를 가지는 표 형식의 데이터를 저장하는 데이터 베이스이다.
Oracle이나 mariaDB, Mysql 등이 그 대표적인 예시이다.

장점
  • 정의하기에 따라 다양한 용도로 사용이 가능하다.
  • 데이터를 찾는게 빠르다(Indexing이 되어있다는 가정하에)
  • 데이터의 높은 무결성 보장한다.
  • 엄격한 스키마 정의(이 경우 장점이다, 단점이다)
  • 정규화에 따른 갱신 비용 최소화할 수 있다(Join 알고리즘 마다 성능 차이는 있을 수 있다)
  • 데이터의 분류, 정렬, 탐색 속도가 빠르다,
  • 관계를 통해 각 데이터를 중복없이 한 번만 저장(정규화가 잘 된 데이터베이스 기준이다. 반정규화시 비중복성을 보장 할 수 없다)
단점
  • 컬럼의 확장이 어렵다. (스키마 변경시 새로운 테이블을 만들어야한다)
  • 수평 확장의 다른 데이터 베이스에 비해 어렵다.

5) NoSQL(Not Only SQL)

NoSQL은 종류가 매우 많다.

a. Key-value

키(Key)와 값(Value)의 형태로 저장되는 데이터베이스이다.
In-memory DB가 많아서 사실상 데이터 캐싱이나 임시 저장에 많이 사용된다.

ex) Redis, Rocks DB, Memcached

b. Document

최적화된 이진 JSON(BSON) 형식으로 스키마 없이 데이터를 저장한다. 대부분 대용량 데이터 저장에 적합하며 Join에 적합하지 않다.
대부분의 Document 형 NoSQL DB의 경우 Join을 할 바엔 Sub-document 형태로 Document 내에 정보를 심어서 사용하라고 말한다.

c. Wide column

한 테이블 내의 Column의 네이밍이나 포맷이 Row마다 다를 수 있는 Database이다.
한 개의 Column은 다수의 데이터를 포함할 수 있다.

ex) Cassandra

d. Graph

노드와 에지로 특징되는 요소에 특화된 데이터이다. 개체는 노드, 관계는 에지로 표현되며 이를 구조화 하여 저장한다.
ex) Neo4j, MS Azure cosmos DB, Orient DB, Arango DB

6) Vector DBMS(Vector Database Management System)

혹자는 NoSQL에 포함된 형태다라고 하기도 하고, 혹은 별개의 카테고리를 만들어야한다고 하기도 한다. 좀 애매해서 일단은 분리해두었다.
AI가 발달하면서 데이터를 벡터화하여 보관할 필요가 생겼고, 벡터화된 데이터를 불러올때 빠르게 관련 데이터를 찾아서 불러올 필요가 생기면서 관련 DBMS 필요성이 대두되었다.
역사는 그렇게 길지 않으나 빠른 속도로 발달하고 있는 DB중 하나이다.

7) 객체 지향 데이터 베이스(Object Database Management System, ODBMS)

객체 그대로를 데이터베이스에 저장하는 방식의 DB이다.
영상이나 음악과 같은 멀티 미디어 데이터를 처리할 때 유용하다.

목차

다시 공부해가면서 추가적인 작성이 있을 것이기 때문에 목차는 수시로 변경될 수 있다. 위에 언급한 종류의 모든 데이터 베이스를 다룬다면 좋겠지만 그러기에 너무 양이 많고 내 인생은 짧다. 그래서 몇 가지만 언급하고, 최종적으로 AI에 적합한 형태인 Vector DB에 대해서 언급할까 한다.

1. 관계형 데이터베이스

  • 개체 관계 모델
  • 관계형 데이터 베이스 구성요소 및 관계대수
  • SQL
  • Index
  • TABLE 보안
  • 데이터 종속성 및 정규화
  • 트랜잭션

    2. No-SQL DBMS

    1) #### MongoDB

  • 개요
  • 설치 및 설정
  • 필드 타입
  • 사용 방법과 예시
  • Replica Set
  • Sharding
  • Index
  • Aggregation
  • 고급 설계법

    3. Vector DBMS

추가 업데이트 예정

참고자료

  • 위키백과 - 데이터베이스
  • Yikun Han, , Chunjiang Liu, and Pengfei Wang. “A Comprehensive Survey on Vector Database: Storage and Retrieval Technique, Challenge.” (2023).
  • 임승현, 이기적 정보처리기능사 실기 기본서, 영진닷컴, 2022년
  • Abraham Silberschatz , Henry F. Korth , S. Sudarshan, “데이터베이스 시스템”, 정연돈 , 권준호 , 김종욱 , 서영균 , 이동호 역, 한빛 아카데미, 2021
This post is licensed under CC BY 4.0 by the author.