🤔

Why DB? - DB의 필요성


DB?

DB(Database)관계있는 데이터들의 집합이다.

DBMS(DataBase Management System)는 유저들이 DB를 생성하고 유지할 수 있도록 도와주는 "소프트웨어 시스템"이다.

Why DB?

기존 파일 시스템으로 데이터를 관리하면 여러 어려움이 발생한다.

1. Queries(질의)

어떤 데이터를 접근할 때 복잡한 질의를 하기 어렵다.

그래서 DBMS는 정교하고 세련된 데이터 베이스와의 소통 방법인 쿼리 언어(DML)를 제공한다. 또한 Schema를 통해 '데이터의 조직'과 '데이터'를 분리한다.

DML(Data Manipulation Langauge): 데이터베이스에 대한 검색이나 업데이트를 명시할 때 사용할 수 있는 언어다.

2. Integrity(무결성)

학교에서 엑셀이나 텍스트 파일로 학생들의 정보를 관리한다고 하자.

초보 관리자가 학생들의 정보를 이것저것 바꿀 때, 이름을 잘못 입력할 수도, 생년월일을 다른 형식으로 입력할 수도 있고 아니면 아예 몇가지 정보를 빼먹을 수도 있다.

데이터의 무결성, 일관성이 지켜진다고 보장하기 힘들다. 데이터의 정확성이 떨어진다는 말이다.

DBMS를 사용하면 제약조건을 통해 유효한 정보만 입력할 수 있게 강제할 수 있다.

3. Update(갱신)

학생들의 모든 정보에 추가/삭제/갱신해야 할 새로운 정보가 생겼다고 해보자(졸업 예정일을 새로 관리한다던가...). 아니면 새로운 파일을 만들 수도 있다.

그럴 때마다 관리자는 데이터를 어떤 식으로 정리해야 하는지 생각해야 한다.

그렇기 때문에 데이터들이 정리된 방식을 잘 조작할 수 있는 방법이 필요하다. DBMS에서는 DDL(Data Definition Langauge)를 제공한다.

4. Multiple Users(다중 사용자)

영화를 예매할 때 텍스트 파일을 사용한다고 해보자(말도 안되지만). 2명 명의 유저가 동시에 이 파일을 열어서 남은 자리에 예약을 하면 어떻게 될까? 둘 다 똑같은 파일을 열어서 조작을 했기 때문에, 마지막에 저장한 사람의 예약 정보만 저장된다.

DBMS에서는 다중 사용자를 처리해주기 위해 Serializability를 제공하고 동시성을 제어해준다.

5. Crashes(크래시)

송금을 하면 내 계좌에서 보내는 만큼 차감되고, 받는 사람의 계좌에 그만큼 더해진다. 만약 송금 도중, 즉, 계좌에서 돈이 차감됐을 때 은행 시스템이 박살나면? 내 계좌에서만 돈이 빠지고 상대는 돈을 못받는 아주 억울한 일이 벌어질 것이다.

이런 상황을 방지하기 위해 DBMS는 Transactions, Commit, Rollback, Recovery를 제공한다.

6. Security(보안)

학생들의 정보를 아무나 함부로 보면 당연히 안된다.

정보에 접근할 수 있는 사람을 구별하기 위해 DBMS에서는 View보안을 제공한다.

7. Efficiency(효율성)

학생들 100명의 정보까지는 어찌저찌 관리자가 잘 다뤘다고 치자. 하지만 관리해야하는 학생의 수가 수만 명, 수십만 명으로 늘어나면 정보를 다루기 굉장히 힘들어질 것이다.

학생들의 정보를 찾는데도 오래 걸리고, 찾는데 오래 걸리니 편집하는 데도 오래 걸린다.

DBMS는 거대한 데이터를 다루고 질의 성능을 높일 수 있게 질의 최적화인덱스, DB 튜닝 등을 제공한다.