* 데이터베이스(DB)의 기본 기능
1. 데이터의 검색과 갱신
- DB의 가장 중요한 기능은 '검색'이다.
- DB는 새로운 데이터를 등록하고 기존 데이터를 수정하며 불필요해진 데이터를 제거하는 것이
가능해야함. ( 등록, 수정, 제거 - 3가지 기능을 통틀어 '갱신'이라고 한다. )
- 데이터 포맷에 유의해야한다. ( 나중에 다시 정리할 예정 )
- 처리 성능에 유의해야한다.
2. 동시성 제어
- DB 사용자가 2명인 경우를 생각해보자. A라는 사람이 주소록 파일을 열고 있을 때 B라는 사람이 그 파일을 연다고 하면 다음과 같은 3가지 상황으로 동시에 파일에 접근하는 것을 제어할 수 있다.
1) 최초로 파일을 연 사람(A)이 파일을 열고 있을 때 그다음으로 파일을 열려고 한 사람(B)은 파일을 열 수 없다.
2) 최초로 파일을 연 사람(A)이 파일을 열고 있을 때 그다음으로 파일을 열려고 한 사람(B)에게는 파일이 '읽기 전용'으로밖에 열리지 않는다.
3) 어떤 사람도 문제없이 파일을 여는 것이 가능하고 나중에 수행된 쪽의 갱신이 반영된다. (=더티 쓰기)
* 더티 쓰기(dirty write)
-> 어떤 사람도 문제없이 파일을 여는 것이 가능하고 나중에 수행된 쪽의 갱신이 반영되는
경우를 '더티 쓰기'라고 한다. 더티 쓰기가 발생한 갱신 처리는 '남보다 늦게 손을 내밀어 이기는
가위바위보' 같은 것이다. 데이터베이스에서 이런 식의 제어는 일반적으로 데이터 무결성 관점에서
기피하는 경향이 있다.
-> 데이터베이스를 복수의 사용자가 동시에 공유하고 이용하려고 한다면 같은 데이터를 갱신하는 상황에 대한 제어가 필요하다. 위의 상황처럼 어느 사용자에게는 괜찮은 갱신 제어가 다른 사용자에게는 불편한 상황을 '트레이드 오프'관계라고 한다.
이렇게 복수 사용자의 갱신을 조절하기 위한 기능을 데이터베이스의 중요한 두 번째 기본 기능인 '동시성 제어' 또는 '배타 제어'라고 한다. ( 실제 1), 2)를 기준으로 한 동시성 제어가 수행되는 경우가 많다. )
3. 장애 대응
- DB에 요구되는 세번째 중요 기능은 '장애에 강할 것'이다. 쉽게 말해 '좀처럼 부서지기 어렵고 부서졌다 하더라도 복원할 수 있다'라는 것이다.
- DB관계자는 데이터 보호와 장애 대책에 예민해질 필요가 있다.
-> 데이터 다중화, 백업을 통해 데이터 소실 문제에 대한 대안을 세운다.
* 데이터 다중화 : 데이터를 한 곳이 아니라 복수의 장소에 분산해서 유지하는 것, 데이터가 완전히 소실되는 것을 막는 방법.
* 백업 : 데이터 소실이 발생했을 때 데이터를 복원하는 방법.
Q. 데이터 소실 사건이 끊이지 않는 이유?
-> 엔지니어가 항상 '서비스 레벨'과 '비용'이란 트레이드 오프의 딜레마로 고민하기 때문이다.
( 추후 상세내용 덧붙일 예정. )
4. 보안
- DB에 보존된 데이터를 어떻게 숨길 것인지가 중요하다.
- DB는 사용자로부터 가능한 보이지 않게 설계되고 있다. 여기에는 2가지 이유가 있다.
1) 사용자는 서버를 의식할 필요가 없다.
-> 사용자로서 시스템을 사용하면 직접 조작하는 것은 어디까지나 클라이언트뿐이고, 서버에 배치된 DB 등의 소프트웨어를 직접 조작하는 일은 없다. 이 때문에 사용자가 서버의 구조까지 의식할 일이 없다.
2) DB는 기밀성이 높다.
-> DB에 들어 있는 데이터는 기밀성이 높아서 일반에 공개할 수 없는 내용이 상당수 포함되어 있다. 예를 들면, 계좌번호와 주소, 신용카드 번호와 비밀번호 등이 DB에 있다. 따라서, DB에 대한 보안은 날이 갈수록 어려워지는, 어려워져야하는 추세이다.
-> 하지만 보안의 강도는 편리함이나 간편함 같은 사용자 편의성과 트레이드오프 관계가 있어서 설계에서 그 균형을 잡기가 쉽지 않다. 여하간, DB에 요구되는 보안은 매우 엄격하다.
*이 포스트는 '데이터베이스 첫걸음'책을 참고하여 작성했습니다.
'데이터베이스 > 데이터베이스' 카테고리의 다른 글
데이터베이스(데이터베이스(DB)의 아키텍처-가용성과 확장성의 확보) (0) | 2017.08.18 |
---|---|
데이터베이스(데이터베이스(DB)의 아키텍처-역사와 개요) (0) | 2017.08.17 |
데이터베이스(데이터베이스(DB)의 운영비용) (0) | 2017.08.15 |
데이터베이스(데이터베이스(DB)의 초기비용) (0) | 2017.08.10 |
데이터베이스(관계형 데이터베이스(RDB)) (0) | 2017.08.09 |