데이터베이스는 왜 필요할까? 왜 사용할까?
📌 대량의 데이터이여도 조회 속도가 빠르다.
원하는 데이터를 빠르게 가져와야한다. 그러기 위해서는 데이터 구조를 효율적으로 관리해야한다. B+Tree 인덱스, 해시 인덱스 같은 데이터 구조가 데이터의 접근 속도를 향상 시켜준다. 그렇기 때문에 데이터베이스가 필요하다. 텍스트 파일 또는 엑셀 같이 간단한 스프레드 시트에서는 인덱스의 구조를 가진 상태에서 레코드 관리하는 방법이 없기 때문에 필요한 데이터를 신속하게 접근할 수 없다.
📌 데이터를 영구적으로 저장할 수 있다.
java의 경우 HashMap 클래스처럼 데이터를 키와 값으로 메모리에서만 관리할 수 있다. 하지만 이 방식에는 큰 문제가 있다. 바로 메모리는 휘발성이다. 메모리에서만 데이터를 관리했을 때, 시스템 다운이 일어날 경우 모든 데이터가 전부 날라간다. 심지어 대량의 데이터인 경우 메모리 용량이 부족할 수 있다.
HDD(하드 디스크)를 이용하여 데이터를 영구 저장할 수 있다. 하지만 디스크의 읽고 쓰기 속도가 매우 느리기 때문에 성능이 안좋다. 그렇기 때문에 DB가 필요하다.
📌 장애가 발생했을 경우 빠른 복구가 가능하다
데이터베이스의 필요성이 가장 큰 경우가 성능과 장애 대책이다. 장애가 일어났을 때, 복구 노력이 가장 크게 드는 것은 데이터 소실이다. 데이터의 소실이 일어날 경우 복구 방법으로 백업이 있다. 하드 디스크나 개인 PC에서만 데이터를 관리할 경우 백업 속도가 매우 느리다. 심지어, 백업을 했을 때, 데이터의 무결성이 깨질 위험도 존재한다.
DB는 쓰기 도중에 충돌이 날 경우 자동으로 장애 부분을 감지하여 일관성 있는 상태로 복구시켜준다. 또, 백업 속도도 빠르다.
📌 병렬성 제어가 가능하다.
배타 제어를 하지 않으면 여러 명이 하나의 파일을 동시에 접근 했을 때, 나중에 쓴 사람의 기록으로 저장이 된다. 즉, 데이터의 일관성이 무너진다. 데이터베이스는 배타 제어를 쉽게 할 수 있게 해준다. 배타 제어의 가장 단순한 방식은 락(lock)을 거는 것이다. 배타 제어를 할 때, 배타 범위를 잘 고려해야한다.
📌 데이터 무결성을 보장해준다.
병렬성 제어와 연관이 깊다. 데이터 자체가 불일치를 일으키지 않게 하도록 데이터를 관리해야한다. 데이터베이스를 사용한다면 참조 무결성 제약 조건을 통해 데이터의 무결성을 지킬 수 있다.
'[DB] > DB' 카테고리의 다른 글
[DB] 테이블 설계 및 데이터 모델링 (0) | 2022.11.03 |
---|---|
[DB] 인덱스를 활용한 데이터의 빠른 접근 속도 (0) | 2022.11.02 |
[DB] 스프링 부트의 다양한 DB 연동 방법 (0) | 2022.03.31 |