[DB] Prologue : Why Databases?

2023. 10. 9. 00:57

 

이번 내용은 데이터베이스를 왜 사용해야하는지에 대한 정말 기본적이면서도 가벼운 이야기이다. 딱히 어려운 내용도 없고 모르고 넘어가도 학습하는데 크게 지장이 없기 때문에 심심할 때 읽어보길 추천한다. 나중에 DB에 관련하여 학습을 다 하고 읽어보아도 좋은 내용이라고 생각한다.

 

Why Databases?

현재 대부분 website들은 강력한 Database를 가지고 있다. 

세계적인 기업 Google만 봐도 회원정보, 게시글 등 대부분의 정보는 데이터베이스를 통해 저장, 관리되고 있다. 최근에는 데이터의 양이 극도록 많아지면서 빅데이터 기반의 산업 또한 활발해지고 있다. 즉, 데이터를 어떻게 다루고 관리할 것인지에 대한 기술이 점점 중요해지고 있다. 

 

Data management Senario

여기서 한 가지 의문을 가질 수 있다. 우리는 왜 데이터를 저장하고 관리하는데 데이터베이스를 사용할까?

이에 대한 해답을 간단한 예시를 이용해 알아보고자 한다. 

당신은 영화(비디오) 대여소를 운영한다고 하자. 각 영화마다 여러개의 DVD가 있으며, 당신의 고객은 영화 DVD를 빌려간다.

고객이 DVD를 빌려갈 때, 빌려간 사람의 이름, 빌려간 DVD의 종류, 반납 일자를 기록해야한다.  

요새는 DVD를 잘 사용하지는 않지만, 교수님이 제시하신 예제라서 그냥 그대로 따라가보겠다. 

기본적으로 데이터를 관리하는 가장 기본적인 방법은 txt 파일에 저장하는 것이다. 

 

<rent.txt>

Customer : Gildong Hong, Rented : Avengers, Due : Oct. 10, 2023

위와 같은 방식으로 저장할 수 있다. File-based system의 장점은 사용하기 간편하고 삽입, 삭제가 간단하는 것이다. txt를 이용하여 정보를 추가, 삭제를 하는 것은 컴퓨터에 대한 지식이 조금만 있어도 쉽게 할 수 있다. 하지만, 이 방식은 여러 한계가 있다. 

 

1. Queries

저장된 데이터를 기반으로 여러 질의에 대한 정답을 찾을 수 있어야한다. 여러 질문 사항에 대해 File-based system을 기반으로 답을 해보자.

1) Gildong Hong은 어떤 영화를 빌려갔나요?
=> Regular expression을 이용하여 어떤 영화를 빌려갔는지 검색하는 방식으로 정보를 얻을 수 있다. 

2) 기간이 만료되었는데 반납되지 않은 DVD가 있나요?
=> 오늘 날짜보다 Due가 더 작은 데이터를 일일히 찾거나 직접 코딩을 통해 데이터들을 찾아야한다. 
즉, 데이터를 관리하는데 코드를 짜는 것은 매우 일이 복잡해지며, 일일히 찾는 과정은 데이터의 양이 많아지면 불가능에 가까워진다. 

이를 통해 정교한 Query를 위한 language의 필요성이 대두된다. 

 

[위 내용과 관련된 관련 DBMS 개념]

  • Schema
  • DML
  • SQL

 

2. integrity

integrity는 무결성이라는 뜻으로 모든 데이터는 유효하고 일관성이 있어야한다. 

유효하지 않는 데이터는 대표적으로 3가지를 말할 수 있다. 

1) 데이터 철자 오류
=> Gildong Hong 이 빌려갔는데 Gildong Song으로 잘못 표기한 경우

2) 부적절한 값의 기록, 동일한 값을 다르게 표현함.
=> Due 에 10월 35일로 기록하거나 (부적절한 값), 같은 영화를 다른 이름으로 ( 어떤 곳에는 The avangers라고 적어두고 다른 곳에는 avengers라고 적어둠) 기록한 경우

3) Field의 순서를 바꾸거나 빠뜨리거나 윗줄과는 다른 field를 추가함.
=> Customer, Rented, Due 를 순서대로 저장해야하는데 Employee, Due, Rented 처럼 기존 저장방식과 다른 값을 저장하거나 순서를 지키지 않은 경우

위와 같은 방식들은 데이터의 일관성을 깬다. 이러면 값을 찾거나 관리하는데 어려움이 있을 수 있다. 

 

[위 내용과 관련된 DBMS 개념]

  • Integrity constraints
  • Types

 

3. Update

저장된 데이터의 형식을 바꾸거나 새로운 정보를 추가해야할 때가 있다. 

DVD 전문점을 운영하다보니 사용자의 전화번호를 추가하는 것이 좋겠다고 생각했다. 그래서 Phone : 010-1234-1234를 추가하려고 한다. 이러면 데이터가 조직된 구조 자체를 바꿔야한다.

[위 내용과 관련된 DBMS 개념]

  • DDL

 

4. Multiple Users

당신이 아르바이트 생을 고용해서 두 명이 가게를 관리한다고 하자. 동시에 같은 파일에 접근하여 내용을 수정할 때 서로 충돌이 나면 안된다. File-based system으로만 이 것을 관리하기에는 한계가 있다.

[위 내용과 관련된 DBMS 개념]

  • Serializability
  • Concurrency control

 

5. Crashes

Gildong 씨가 이름을 Gilddong으로 개명했다. Gildong씨의 내역이 20번이 있는데 이 중 10개만 고치고 저장하려고 하면 충돌이 난다. ( 같은 정보임에도 다른 방식으로 표현했기 때문이다 )

같은 정보를 나타내면 수정될 때 모든 정보가 함께 수정되어야한다. 또한, 필요할 때 rollback하거나 commit하는 기능도 구현되어야한다.

[위 내용과 관련된 DBMS 개념]

  • Transactions
  • Commit
  • Rollback
  • Recovery

 

6. Data Physically Seperate

어벤저스를 빌린적 있는 손님에게 '어벤저스:엔드게임' 영화가 나왔다고 홍보하고 싶다. 그래서 이전에 어벤저스를 빌린 고객들에게 다른 txt에 저장되어 있는 고객의 이메일 정보를 합쳐서(merge) mailing list를 만들고 싶다. 

근데 홍길동이라는 사람이 여러명 있어서 어벤저스를 빌려간 고객의 이메일이 무엇인지 알 수 없는 상황이 발생했다. 그리고 어떤 고객은 이메일 정보가 없었다. 

이를 통해 각 고객은 무조건 uniquely identify해야한다. 그리고 영화를 빌려간 고객의 이메일 정보를 무조건 받아야한다.

[위 내용과 관련된 DBMS 개념]

  • Joins
  • Keys
  • Foreign keys
  • Referential integrity

 

7. Security

여러명의 손님이 이때까지 자신이 빌린 DVD 목록을 확인하고 싶다고 한다. 개인정보 보호를 위해 다른 손님의 정보를 제외하고 손님에게 보여주어야하는데 editor로 어떻게 보여줄 수 있을까?

각 손님에 따라 접근할 수 있는 정보의 구역이 달라야한다. (보안)

[위 내용과 관련된 DBMS 개념]

  • Security
  • Views

 

8. Efficiency

DVD 사업이 성공했다. 당신의 고객이 100000명이 되었다. 그리고 매일 100명씩 비디오를 빌려가고 운영한지 5년이 넘어간다. 데이터의 양이 TB 단위를 넘어 굉장히 커지고 있다. 

데이터를 관리하기 어렵고 File system이 느려지기 시작했다. 

새로운 자료 구조를 통해 query 성능을 향상시키고 speed 향상을 위해 시스템 자체적인 수정이 필요하다. 

[위 내용과 관련된 DBMS 개념]

  • Indexes
  • Query optimization
  • Database tuning

 

9. New needs

DVD를 가게를 더 효율적으로 운영하기 위해 함께 자주 빌린 DVD는 근처에 배치하려고 한다. 함께 빌려진 영화들은 뭐가 있을까? 그리고 최신 유행하는 영화는 무엇이 있을까?

데이터를 보고 요약을 하거나 흥미로운 트렌드를 예측하는 기능을 추가하고 싶다.

[위 내용과 관련된 DBMS 개념]

  • Data mining
  • Big Data Analytics
  • Data warehouses
  • Database API

 

 

위 9가지 상황을 보면 데이터를 이용해 할 수 있는 (하고 싶은) 일은 많지만, 파일 시스템의 한계로 많은 것을 하지 못한다. 

특히, 보안, concurrency(동시성), schema reorganization, 성능 향상 등의 분야에는 굉장히 약한 모습을 나타낸다. 

이런 문제점들을 향상시키기 위해 Database가 등장하였다. 

BELATED ARTICLES

more