DB란?

Joon·2021년 10월 27일
0
post-custom-banner

참고

DB란? https://noahlogs.tistory.com/36
RDBMS http://tcpschool.com/mysql/mysql_intro_relationalDB
생활코딩DB강의 https://opentutorials.org/course/3161/19531

Data & Information

데이터(data)는 현실의 사건이나 사물의 특징을 관찰하거나 측정하여 기술하는 가공되지 않은 사실이나 값이다. 이는 자료라고 부르기도 한다.

반면 정보(information)은 의미 있고 쓸모 있는 내용으로 가공하여 체계적으로 조직한 데이터를 말한다.

데이터 -> (가공) -> 정보

데이터베이스(DB or Database)란?

실생활에서 데이터들은 다양한 형태로 쓰인다. 대학교에서는 수강 신청과 관련된 학생 데이터들이 있고, 이 학생들의 점수 데이터는 학기말마다 성적으로 가공되어 데이터로 저장된다. 무신사와 같은 쇼핑 어플리케이션에서는 상품 판매자와 구매자, 그리고 상품에 관련된 데이터를 저장하고 이 데이터는 추후 마케팅의 기초 자료로 쓰인다.
이러한 데이터들은 그저 무더기로 쌓여 있지 않으며, 인간이 무언가를 기억하듯이 추상적이고 감각적으로 저장되어 있지 않다.
그렇다면, 우리가 현재 실생활에서 쓰고 있으며, 앞으로 설계를 하더라도 데이터베이스로 기능하기 위해 필요한 '정의'의 모습은 어떨까?

"어떠한 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고, 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합"

조금 복잡하고, 여러가지가 한번에 압축이 되어있으니 한번 풀어서 생각해보자.

  1. 공유 데이터(Shared Data)
    데이터베이스의 데이터는 어떠한 하나의 프로그램이나 시스템을 위한 데이터들이 아니다. 그 데이터들이 필요한 조직 내의 사용자나 시스템들, 또는 프로그램들이 데이터의 통합적인 관리를 위해 공동으로 유지하며 이용하기 위한 데이터들이다.
  2. 통합된 데이터(Integrated Data)
    데이터베이스는 통합된 데이터의 성질을 띈다. 이 '통합된 데이터'란, 여러 군데에 분산되어 있는 데이터를 통합하여 데이터의 중복을 최소화(minimal redundancy)하기 위한 개념이다.
    이러한 데이터의 통합관리는 데이터들의 일관성 유지와 데이터 관리 비용 감소등의 장점이 있다.

데이터베이스의 특징

  1. DB는 질의(Query)에 대해 실시간 처리(real-time processing)으로 응답할 수 있다.
  2. 데이터베이스는 CRUD(Create, Read, Update, Delete)에 의해 지속적으로 변하며(continuous evolution), 그 속에서도 정확한 데이터를 유지할 수 있다.
  3. 여러 사용자가 자신이 원하는 데이터를 동시 공유(concurrent sharing)할 수 있다.
  4. 데이터의 레코드 위치나 주소가 아니라, 원하는 데이터의 내용에 따라 참조(content reference)할 수 있다.

데이터베이스의 본질

CRUD

Create

Read

Update

Delete

이상 위의 네가지야말로 DB의 본질이라 할 수 있다. Database란 결국 의미를 부여한 가치 있는 정보들을 관리하기 위한 논리적/물리적 장치이다. 이 정보들을 관리하기 위해서는 정보를 생성하고, 읽고, 갱신하고 삭제할 수 있는 기능이 필수적이다. 따라서 어떠한 데이터베이스를 사용하던 (MySQL, Postgres MariaDB...)등등 이 4가지 기능은 세부적인 사항은 다를지언정 무조건 구현이 되어 있다.
따라서 나는 이 위의 4가지 기능이 결국 데이터베이스라는 것의 본질이라고 생각한다.

DBMS(DataBase Management System)

기존의 데이터를 관리하던 파일 시스템(file system)의 데이터 종속성과 데이터 중복성 문제를 해결하기 위해 고안된 데이터관리시스템이다.
정의는

사용자 또는 응용 프로그램과 데이터베이스의 사이에 위치하여 데이터베이스를 공유할 수 있도록 관리해 주는 소프트웨어이다.

서버에 저장된 대량의 데이터를 관리하며, 사용자가 원하는 정보를 효과적으로 질의(Query)할 수 있는 기능을 제공한다.
사용자 및 응용 프로그램은 DBMS를 통해서만 DB를 사용할 수 있도록 설계되었으며,

이는 DBMS가 DB의 생성, 접근방법, 처리절차, 보안, 물리적 구조 등에 대한 모든 책임을 지고 있다는 의미이다.

대표적인 DBMS로는 오라클(Oracle), MySQL, MSSQL, MariaDB 등이 있다.

장점

  1. 데이터의 중복(redundancy)를 최소화한다.
  2. 데이터를 공유(sharing)할 수 있다.
  3. 데이터의 일관성(consistency)를 유지할 수 있다.
  4. 데이터의 무결성(integrity)를 유지할 수 있다.
  5. 데이터의 보안(security)를 보장할 수 있다.

단점

  1. DBMS는 파일시스템과는 달리 고가의 제품이며, 운영에 필요한 컴퓨터의 자원도 많이 요구된다.
  2. DB가 사용될 때 다수의 사용자가 동시에 접근하기 때문에 보안적인 부분에 많은 주의를 요구한다.
  3. 구조 또한 복잡하기 때문에 장애가 발생했을 때 명확하게 이유나 상태를 파악하기 어려울 때도 있다.
  4. DB는 한 조직의 모든 데이터를 중앙 집중화하는데 필요한 필수적인 자원이다. 다만 이러한 DB의 장점인 응용의 유용함, 실시간 처리, 다수 사용자의 동시 접근 같은 기능이 필요하지 않는다면, DBMS를 사용하지 않는 것이 더 바람직할 수 있다.

RDBMS(Relational Database Management System)

: 관계형 데이터베이스(Relational Database)를 위한 DBMS이다.

Relational Database

: 키(key)와 값(value)로 이루어진 데이터들을 행(row)과 열(column)으로 구성된 테이블 구조로 단순화 시킨 모델이다.

  • 데이터의 종속성을 관계(Relationship)으로 표현하는 것이 가장 큰 특징이며, 행과 열로 구성된 각 테이블들이 다른 테이블들과 관계를 맺고 모여있는 형태이다.

  • 데이터의 분류, 탐색, 정렬 속도가 빠르다.

  • 오랫동안 사용된 모델인만큼 신뢰성이 높고, 어떠한 상황에서도 데이터의 무결성을 보장해준다.

  • 관계(Relationship)을 기반으로 테이블끼리 서로 참조하는 형태이기에, 한눈에 전부 알아보기에는 불편함이 있다. (참조값들을 더 자세히 보고 싶으면 참조테이블을 다시 펼쳐서 살펴야한다.)

  • SQL(Structured Query Language)를 사용하여 데이터를 관리한다.
    다음은 생활코딩 강의에서 나온 간략한 SQL구조이다.

마치며

다음에는 SQL이란 무엇인지 한번 알아보고, 또 Relational Database의 용어들을 한번 정리해보자.

profile
한줄씩 완성해가는 개발 공부
post-custom-banner

0개의 댓글