초반부이다 보니 아무래도 기본적인 용어의 설명이나 뭐 그런게 많다. 적당히 보고 넘기면 될듯하다.
가장 기본적인 용어들부터 보겠다.
데이터베이스 : 서로 연관이 있는 데이터들의 모임
데이터 : 알려진 사실로서 의미를 가지고 기록될 수 있다는 특성
미니월드 : db에 저장되는 실세계의 일부분
DBMS : 데이터베이스를 관리 유지 및 생성하는 소프트웨어
DS : DBMS에 덧붙여서 데이터베이스, 어플리케이션을 모두 포함 즉, DBMS + Data + app.
이 중 DBMS에 집중해서 볼 것이다.
DBMS의 기능적인 측면에서 조금 더 알아보도록 하겠다.
1. 정의 : 데이터 타입, 구조, 제약 조건들을 정의한다.
2. 생성 : 기억장치에 데이터를 저장하는 과정이다.
3. 조작 : 검색을 위한 질의, 갱신, 리포트를 생성하는 기능 등
4. 공유 : 여러 사용자와 프로그램이 동시에 접근하도록 하는 기능
이외에도 보호 및 유지 보수 등의 기능을 갖는다.
그렇다면 기존의 파일 시스템에서 굳이 DBMS를 사용하는 이유는 무엇일까 ?? DBMS의 특징을 조금 더 살펴보도록 하자.
1. 자기 기술성(self-describing)
카탈로그에 데이터베이스의 구조, 타입, 저장 형식, 제약 조건 등을 저장하고 이 정보를 메타데이터라고 한다. 이를 통해 구조를 쉽게 파악할 수 있다.
2. 프로그램과 데이터의 격리(insulation) 및 데이터 추상화(data abstraction)
데이터 파일의 구조가 변경되더라도 app은 거의 변하지 않게 된다. 이를 프로그램-데이터 독립성이라 한다. 몇몇 DB에서는 데이터에 대한 연산까지도 DB에 포함할 수 있는데 이 연산의 구현이 변경되더라도 인터페이스가 유지되는 한 app은 변경할 필요가 없는 것을 프로그램-연산 독립성이라 한다.
위 2가지 성질을 제공하는 것을 데이터 추상화라 하며, 사용자에게 상세한 정보보다는 개념적인 표현만을 제공하는 것을 뜻한다.
3. 다중 뷰(multiple view)
사용자에 따라 원하는 데이터가 다를 것이다. 이 때 필요한 데이터만 볼 수 있게 해준다.
4. 공유와 다수 사용자 처리(sharing and multi-user transaction)
다수의 사용자가 동시에 접근할 수 있으며 동시에 변경하고자 하는 경우에도 일관성을 보관한다. 이를 온라인 트랜잭션 처리(OLTP)라 한다.
특징에 조금 더 추가해서 DBMS의 장점까지 알아보도록 하자.
1. 중복성 제어
동일한 정보를 여러 번 저장하는 중복성(redundancy)를 제어한다. 데이터베이스에서 오직 한 번만 저장하는 것을 데이터 정규화(normalization)이라고 한다. 하지만 무조건적인 정규화보다 편의를 위해 중복 저장을 하고 데이터의 불일치를 주의하는 것이 성능면에서 더 좋은데 이를 데이터 반정규화(denormalization)이라 한다.
2. 권한이 없는 접근 통제
데이터에 대한 무단 액세스를 제한한다.
3. 프로그램 객체를 위한 영구 기억 공간을 제공한다.
지속성 객체라 부르며 프로그램의 수행이 끝난 후에도 데이터베이스에 영구적으로 남아 있는다.
4. 효율적인 저장 구조와 탐색 기법 제공
5. 백업과 회복 제공
6. 다수의 사용자 인터페이스 제공
7. 데이터 간의 복잡한 관계 표현
8. 무결성 제약 조건
9. 규칙을 사용한 추론과 수행
이외에도 표준 정의의 용이성, 개발 시간의 단축, 유연성, 변경 즉시 확인 가능한 가용성, 경제성 등이 있다.
이러한 장점들에도 불구하고 DBMS를 사용하지 않는 경우가 있는데 다음과 같다.
1. 높은 초기 투자 비용
2. 저장 공간등의 이유로 실행할 수 없을 때
3. DBMS로 충분하지 않을 때
DBMS로 충분하지 않을 때의 경우 맞춤형 데이터베이스를 개발하는 경우도 있다.
DBMS의 사용자의 분류도 있는데 간단하게만 읊고 넘어가겠다.
데이터베이스의 내용에 관심이 있는가에 따라 무대 위의 사람들과 무대 뒤의 사람들로 구분한다.
무대 위의 사람들로는 데이터베이스 관리자(DBA), 데이터베이스 설계자, 최종 사용자, 시스템 분석가 등이 있으며 무대 뒤의 사람들로는 DBMS의 설계자, 도구 개발자, 운영자 등이 있다.
글만 잔뜩 있어서 나같아도 안볼 것 같다.. 게다가 기능적인 측면에 특징에 장점에 왜 이렇게 분류를 다 따로 한건지 모르겠다. 겹치는 부분도 많은 것 같은데..
모델링 부분이 나오면 이미지를 많이 쓸테니 이것보단 보기 쉬울 것 같다. ㅠ
'데이터베이스' 카테고리의 다른 글
관계 데이터베이스 제약 조건 (0) | 2020.04.17 |
---|---|
관계 데이터 모델 (0) | 2020.04.16 |
ER을 사용한 데이터 모델링 (0) | 2020.04.14 |
DBMS의 분류 (0) | 2020.04.11 |
데이터 모델과 스키마 (0) | 2020.04.11 |