개요
인류는 아주 오래 전부터 무언가 저장하기 위해 노력해 왔습니다. 먼 옛날인 선사 시대에는 생존을 위해 필수적인 음식을 관리하기 위해 골머리를 썩혔을 것이고, 고려, 조선 시대에는 학자들이 연구한 저서들, 역사책 등을 관리하기 위해 힘썼습니다. 현대 사회에 이르러서는 사람의 반복 업무와 빠른 문제 해결을 위해 컴퓨터가 발명됐고 각종 자료들을 컴퓨터를 활용하여 저장하고 관리하는 시대에 우리는 살고 있습니다. 컴퓨터에서 어떻게 대량의 데이터들이 관리되고 활용하는지 아는 것은 IT 분야에 몸을 담글 사람에게 중요한 초석이 될 것입니다.
데이터베이스란?
데이터베이스(Database)는 데이터를 체계적으로 저장, 관리하는 데이터의 집합입니다. 여기서 말하는 데이터는 객체를 표현하는 자료를 의미합니다. 사람이라는 객체는 눈, 코 입, 손, 발 등이 데이터가 됩니다. 그리고 이러한 데이터는 그림, 사진, 파일, PDF 등으로도 표현할 수 있겠습니다. 데이터베이스는 이러한 데이터를 대량으로 관리하기 위한 저장소입니다. 데이터베이스에 저장된 데이터들을 고도로 구조화함으로써 검색과 갱신의 효율화를 목적으로 합니다. 즉, 여러 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있습니다.
데이터베이스 특징 및 장단점
특징
1. 실시간 접근성
2. 지속적인 변화
3. 동시 공유
4. 내용에 대한 참조
5. 데이터 논리적 독립성
장점
1. 데이터의 중복 최소화
2. 데이터 공유
3. 일관성, 무결성, 보안성 유지
4. 최신 데이터 유지
5. 데이터의 표준화 가능
6. 데이터의 논리적, 물리적 독립성
7. 용이한 데이터 접근
8. 데이터 저장 공간 절약
단점
1. 데이터베이스를 운영하기 위한 전문 인력 필요
2. 운영 및 관리를 위한 많은 비용 발생
3. 데이터의 백업과 복구가 어려워 백업 서버를 두어야 함
4. 시스템이 복잡함
5. 대용량 디스크로 액세스가 집중되면 과부하가 발생되어 로드 밸런서와 같은 최적화 필요
DBMS란?
- DBMS(DataBase Management System)는 데이터베이스 프로그램을 사용하는 사람들이 데이터베이스에 접근, 조작하고, 표현하는데 도움을 주는 프로그램을 말합니다. 또한 다양한 사용자가 데이터베이스에 대한 액세스를 제어할 수 있도록 지원합니다.대표적으로 MySQL, MaraiDB, Oracle 등이 있습니다. 실생활에서 찾아볼 수 있는 예시로는 휴대폰 주소록, 페이스북이 있습니다. 주소록에 저장된 전화번호, 이름, 각종 정보를 검색을 통해 조회할 수 있습니다. 페이스북에 우리는 친구가 올린 게시물을 조회할 수 있고, 자신이 올린 글을 다른 친구가 접근할 수도 있습니다. 또한 글을 수정하거나 삭제하는 일도 가능합니다. DBMS는 보다 내부적으로 데이터베이스의 데이터들을 관리할 수 도 있도록 하는 프로그램입니다.
역사
DBMS는 1960년대에 처음 세상에 나왔습니다. Charles Bachmen 씨가 만든 IDS가 DBMS 역사의 시작점이라고 볼 수 있습니다. 시간이 흐르면서 데이터베이스 기술은 매우 발전했고 기대되는 기능성과 사용량은 매우 높아졌습니다.
DBMS의 종류
첫 번째는 계층형(Hierarchical)입니다. 구조는 레코드를 표현하는 노드와 필드를 표현하는 가지로 구성된 트리와 비슷하며window XP에서 사용된 윈도우 레지스트리가 대표적인 예입니다. 요즘엔 거의 사용되지 않습니다.
두 번째는 네트워크형(Network)입니다. 네트워크형은 다대다 관계를 통해 데이터들이 연결되며 보통 복잡한 데이터베이스 구조를 수반합니다. RDM 서버가 네트워크 모델을 사용한 대표적인 DBMS입니다.
세 번째는 관계형(Relation)입니다. 관계형 DBMS는 데이터베이스의 관계성을 관계(relation)으로 불리는 테이블 양식으로 정의합니다. 네트워크 DBMS와 달리 다대다 관계를 지원하지 않습니다. 대신 일반적으로 DBMS가 지원하는 데이터 타입을 미리 정의하여 사용합니다. 이 형식은 시장에서 가장 인기있는 DBMS 타입으로 MySQL, Oracle, MS-SQL 서버에서 사용됩니다.
마지막으로 네 번째는 객체 지향 관계형(Object-Oriented Relation)입니다. 이 타입은 새로운 데이터 유형의 저장소를 지원합니다. 저장할 데이터는 객체 형식이고, 데이터베이스에 저장될 객체는 속성을 가집니다. 예를 들어, 성별, 나이, 그리고 데이터로 할 수 있는 것을 정의하는 방법이 있습니다. 대표적인 객체 지향 관계형 DBMS로는 Postgresql이 있습니다.
SQL
SQL(Structured Query Language)은 뜻 그대로 구조화된 질의어입니다. 관계형 DBMS에서 데이터와 관련된 작업을 SQL을 통해 할 수 있습니다. 데이터 삽입, 수정, 삭제와 같은 작업을 쉽게 할 수 있다는 의미입니다. 또한 SQL은 데이터베이스의 최적화와 유지 보수를 하는데 유용하게 사용됩니다. 문법 또한 간결합니다. 예시를 한 가지 보겠습니다.
SELECT * FROM USERS WHERE EXPENSE >= 300
위 구문은 USERS 테이블에서 EXPENSE가 300 이상인 컬럼을 모두 검색합니다. 영문법과 비슷하여 큰 어려움 없이 배우고 사용할 수 있습니다.
DBMS 언어
DBMS 언어는 다음과 같이 세 가지로 이루어져 있습니다.
- 데이터 정의 언어(DDL: Data Definition Language): 데이터 구조를 정의하는데 사용되는 명령어입니다. Create, Alter, Drop 등의 명령어로 구성됩니다.
- 데이터 조작 언어(DML: Data Manipulation Language): 데이터베이스에 저장된 데이터를 조작하는 명령어입니다. 일반적으로 조회, 삽입, 삭제, 수정 등의 작업을 하며, Select, Insert, Delete, Update 등의 명령어로 구성됩니다.
- 데이터 제어 언어(DCL: Data Control Language): 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 명령어입니다. GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어로 구성됩니다.
트랜잭션
트랜잭션(Transaction)은 하나의 논리적 단위를 구성하는 데이터베이스 연산의 모임입니다.
ACID
트랜잭션은 다음과 같이 ACID 규칙을 만족해야 합니다.
- 원자성(Atomicity): 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 아예 반영되지 않아야 합니다.
- 일관성(Consistency): 트랜잭션의 작업 처리 결과는 항상 일관적이어야 합니다.
- 독립성(Isolation): 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 경우에 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없습니다.
- 지속성(Durability): 트랜잭션이 성공적으로 완료됐을 경우, 그 결과는 영구적으로 반영되어야 합니다.
Uploaded by Notion2Tistory v1.1.0