서론
데이터베이스는 여러 사람들이 데이터를 공유하고 사용하기 위해서 만들어진 데이터의 집합입니다.
하지만 단순히 데이터를 저장하는 것에서 그치지 않고, 내용을 저장하는 방식 및 구조를 달리함에 따라서 검색과 갱신에 있어서의 효율성을 높일 수 있습니다.
따라서 데이터베이스를 잘 이해하여 구조를 만들고, 설계하는 것은 굉장히 중요합니다.
이번 카테고리에서는 데이터베이스가 무엇인지, 어떻게 효율적으로 DB의 구조를 설계할 수 있는지에 대해서 배워보는 시간을 갖고자 합니다.
데이터베이스의 Basic Definitions
데이터베이스에 대해서 알아보기 전, 데이터베이스에 대한 간단한 정의를 해봅시다.
- Database(DB) : 연관된 데이터, 즉 자료들의 집합
- Data : 기록할 수 있으며, 암묵적인 의미를 갖고 있는 정보들
- Mini-World : DB에 데이터로 저장되어 있는 real world(실세계)의 일부분
- Database Management System (DBMS) : 전산 데이터베이스의 생성과 유지보수를 용이하게 하는 소프트웨어 패키지 및 시스템
- Database System : DBMS의 소프트웨어와 data를 합친 것을 의미, 때때로 application을 포함함
우리가 흔히 말하는 MySQL이나 오라클과 같은 부분은 모두 데이터베이스 관리를 쉽게 할 수 있도록 도와주는 DBMS라고 할 수 있습니다.
즉, Appliaction과 DB 의 중간에 있는 소프트웨어라고 할 수 있습니다.
Database의 타입과 Application, 기술의 진화
데이터베이스는 숫자나 문자 정보를 저장하는 전통적인 DB에서, 이미지나 비디오와 같은 멀티미디어 데이터, 지도 데이터 등을 저장할 수 있는 수준까지 발전하였습니다.
뿐만 아니라 바이오 유전자나 Data Warehouse, Mobile Databases, Real-time Databases 등이 Database Application으로 존재하고 있습니다.
특히 기술이 진화하면서, 웹 기반으로 이루어져있는 non-database software 가 등장하게 되었습니다.
이는 빅데이터 저장 시스템을 분산 컴퓨터에 저장하는 방식으로, 현재 NoSQL(Not Only SQL)이라고 불립니다.
많은 양의 데이터가 수천개의 머신을 사용하는 대용량 데이터 센터, 즉 클라우드에 저장되는 방식입니다.
DB 시스템 환경
DB의 시스템은 아래와 같이 도식화 할 수 있습니다.
크게 Database System(Application), DBMS Software, DB 부분으로 나눌 수 있습니다.
이 때, DBMS에서의 Software to Process Queries/Programs 부분은 질의 요청을 분석 및 접근하는 역할을 수행하며, Software to Access Stored Data 부분은 DB에서 데이터를 효율적으로 가져오기 위한 소프트웨어 역할을 수행합니다.
DB 단계에서는 크게 Meta-Data와 Stored Database로 데이터를 나눌 수 있습니다.
이 때, Meta-Data란 "데이터를 위한 데이터"로, 데이터베이스나 테이블의 이름이나 컬럼의 데이터 타입(int, char ...), 접근 권한 등을 예시로 들 수 있습니다.
Stored Database는 사람의 이름 데이터나 출생연도, 성별 데이터 등, 우리가 저장하고자 하는 데이터를 예시로 들 수 있습니다.
NoSQL와 같은 최신 시스템의 경우, meta-data를 필요로 하지 않는 경우도 있습니다.
이러한 시스템에서는 데이터 정의를 structure 내에 self describing하는 방식으로 사용합니다.
기본적인 DBMS의 기능
- 특정 DB를 data type, structure, constraint 등을 이용하여 정의
- 다른 저장 장소에 기존의 저장 내용들을 consturct 하거나 load 하도록 함 (ex. excel에서 DB로 내용을 불러오기)
- 데이터베이스를 읽고, 쓰고, 수정하며, 웹 어플리케이션을 통해 access가 가능하도록 함
- 동시에 데이터베이스에 접근하는 사용자들을 문제 없이 처리할 수 있도록 함
데이터베이스의 접근에 대한 주요 특징
데이터베이스는 단순하게 기록을 저장할 뿐만 아니라, 저장된 정보를 필요로 하는 사용자들이 접근할 수 있도록 해야합니다.
이에 따라 몇가지의 특징들이 생겨나게 됩니다.
우선, data와 meta-data가 함께 저장되게 됩니다.
즉, 데이터와 데이터에 대한 설명이 같이 저장되게 되는데, 이를 self-describing 특성이라고 합니다.
이를 이용하여 DBMS 소프트웨어는 서로 다른 DB application에서 동작이 가능하게 됩니다.
application은 DB가 파일에 어떻게 저장되어있는지 알 필요가 없습니다.
즉, 프로그램와 데이터가 독립적으로 존재하게 되며, 이를 program-data independence라고 합니다.
따라서 DBMS가 프로그램에 access하는 방식을 변경하지 않아도, data의 구조와 저장 방식을 변경할 수 있게 됩니다.
data model을 사용함으로써, storage의 세보 정보를 숨기고 사용자에게 DB의 conceptual view를 제공합니다.
즉, 프로그램은 데이터의 상세 정보가 아닌, data model의 구조를 참조하게 됩니다.
data의 multiple view를 제공합니다. 즉, 같은 DB를 가지고도 사용자마다 다른 데이터를 보여줄 수 있도록 합니다.
multi-user transaction에 대한 프로세싱을 제공하고, data를 공유할 수 있는 특징을 갖고 있습니다.따라서 동시 사용자가 DB를 검색하거나 수정하여도 문제가 없습니다. DBMS의 동시 접속에 대한 컨트롤은 각 트랜잭션이 올바르게 실행되고, 중단될 수 있음을 보장해주어 안전성을 높여줍니다.또한, Recovery Subsystem은, 각 트랜잭션이 DB에 영구적으로 기록됨을 보장해줍니다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] MySQL Replication (0) | 2022.03.07 |
---|---|
[데이터베이스] SQL 튜닝 - 드라이빙 테이블 (0) | 2021.12.10 |
[데이터베이스] ERD 설계하기 (1) - 기본과 용어 (0) | 2021.01.28 |
[데이터베이스] 데이터베이스 유저와 역사 (0) | 2021.01.03 |