데이터 조작 언어
데이터 조작 언어(DML)는 구조화된 데이터에 사용자가 접근 및 조작을 할 수 있도록 지원하는 언어를 뜻한다. DML을 통한 데이터 조작 기능은 사용자와 DBMS 사이의 인터페이스에서 아주 중요한 부분이다. 이러한 인터페이스를 위하여 데이터 조작 기능은 다음과 같은 조건을 만족해야 한다.
첫째, 데이터 조작 기능은 사용하기 쉬워야 한다. 이를 위해 DML은 기계어 보다는 자연 언어에 가까워야 한다. 또한 조작에 사용되는 연산이 의미하는 바가 단순해야 한다.
둘째, 데이터 조작 기능은 정확하고 완전해야 한다. 즉, 데이터에 대한 연산 뿐만 아니라 뷰 내의 데이터나 데이터 간 관계를 명확하게 명시할 수 있어야 한다.
마지막으로, 데이터 조작 기능을 통한 사용자의 요청은 시스템 내부에서 효율적으로 처리되어야 한다. 이를 위해 데이터베이스 언어의 구문은 시스템 내부에서는 기본적인 연산의 조합으로 치환되어 처리되어야 한다.
DML은 이러한 데이터 조작 기능의 조건을 고려하여 설계된다. DML을 통한 데이터 접근을 유형별로 구분하면 다음과 같다.
- 데이터베이스에 저장된 정보 검색
- 데이터베이스에 새로운 정보 삽입
- 데이터베이스에 저장된 정보 삭제
- 데이터베이스에 저장된 정보 수정
DML은 크게 두 유형으로 구분된다.
• 절차적(procedural) DML : 사용자가 필요한 데이터는 무엇(what)이며 어떻게(how) 구할 것인지를 명시하는 유형이다. 절차적 DML에서는 각 레코드에 대한 조작을 위해 반복문이나 변수 선언 등의 프로그래밍 기능을 포함한다. 절차적 DML은 저급 DML이라고도 불리며, 일반적인 프로그래밍 언어의 기능과 비슷한 기능을 가진다.
• 선언적(decarative) 또는 비절차적(non-procedural) DML : 사용자가 데이터를 어떻게(how) 획득할 것인지에 대한 명시 없이, 어떤(what) 데이터가 필요한지만 기술하는 유형이다. 즉, '내가 필요로 하는 데이터는 이런 조건을 만족하는 데이터들이다'라는 식으로 기술하게 된다.
일반적으로 선언적 DML은 절차적 DML보다 쉽게 배울 수 있으며 사용하기도 쉽다. 이 때문에 선언적 DML을 고급 DML이라고도 한다. 그러나 사용자가 데이터를 구하는 절차를 명시하지 않기 때문에 자칫 비효율적으로 처리될 수 있다는 단점이 있다. 이러한 문제를 해결하기 위해 DBMS에서는 질의처리 시 다양한 질의 최적화 기술을 적용한다.
질의(query)란 원하는 정보를 획득하기 위한 요청 명령문이다. DML은 정보를 획득하기 위한 명령어를 포함하는데, 이를 질의 언어(query language)라고 한다. '질의 언어'와 'DML'은 흔히 혼용되는 용어이지만, 기술적으로는 다른 용어 이다.
데이터베이스 관리 시스템의 구성요소
DBMS는 데이터베이스를 구축하고 이를 응용하기 위하여 구성된 소프트웨어 시스템으로, 사용자나 애플리케이션 프로그램이 데이터베이스를 쉽게 이용할 수 있도록 해 준다. DBMS는 데이터가 물리적으로 어떻게 저장되는지에 대한 이해 없이도 사용자나 다른 프로그램이 데이터에 접근하고, 데이터를 수정할 수 있도록 한다. DBMS에서 사용자의 요청을 처리하는 작업을 개념적으로 설명하면 다음과 같다.
- 사용자는 특정한 데이터 언어(SQL 등)를 이용하여 DBMS에 작업을 요청 한다.
- DBMS는 사용자의 요구를 받아 분석한다.
- DBMS는 사용자를 위한 개념적 스키마, 대응하는 뷰와 논리적 스키마의 접속 논리적 스키마, 개념과 내부의 접속, 그리고 기억장소 구조 정의 순으로 차례대로 검토한다.
- DBMS는 저장된 데이터베이스에 필수적인 연산을 수행한다.
DBMS는 데이터 관리에 요구되는 기능을 충족시키기 위해 다양한 구성요소로 이루어져 있으며, 각 구성요소는 서로 복잡하게 연결되어 있다. 기능적 측면에서 DBMS 구성요소는 크게 저장 관리자와 질의 처리기로 구분된다.
데이터 저장과 질의
데이터베이스는 일반적으로 매우 큰 용량의 저장 공간을 요구하기 때문에 저장 관리자(storage manager)의 역할이 매우 중요하다. 기업의 데이터베이스의 크기는 보통 수백 기가바이트(GB : gigabyte)에서 수 테라바이트(TB : terabyte)에 이른다. 이렇게 방대한 양의 정보는 메인 메모리(main memory)에 모두 저장될 수 없기 때문에 디스크 저장장치에 기록된다.
데이터는 필요에 따라 디스크 저장장치에서 메인 메모리로, 또는 메인 메모 리에서 디스크 저장장치로 이동된다. 그러나 디스크의 입출력 속도는 상대적으로 CPU(cental processing unit)보다 매우 느리기 때문에, DBMS는 디스크와 메인 메모리 사이의 데이터 이동을 최소화해야 한다. 저장 관리자는 파일 관리자와의 상호작용을 담당한다. 원시 데이터(raw data)는 운영체제(operating system)가 제공하는 파일 시스템을 사용하여 디스크에 저장된다. 저장 관리자는 여러 DML 명령문을 원시 수준 파일 시스템 명령어로 번역한다. 이 과정에서 저장 관리자는 데이터베이스 내의 데이터의 저장.
검색 및 수정을 처리한다. 저장 관리자의 구체적인 구성 모듈은 다음과 같다.
- 권한 및 무결성 관리자 : 무결성 제약조건을 만족하는지 검사하고 사용자의 데이터 접근을 검사한다.
- 트랜잭션 관리자 : 시스템 오류가 발생하더라도 데이터베이스의 일관성을 유지하고 동시 트랜잭션 실행이 출동을 일으키지 않도록 보장한다.
- 파일 관리자 : 디스크 저장장치의 공간 할당과 디스크에 저장된 정보 표현에 사용되는 데이터 구조를 관리한다.
- 버퍼 관리자 : 디스크 저장장치에서 메인 메모리로 데이터를 호출(fetch)하고 메인 메모리의 어떤 데이터를 캐시 할지 결정하는 일을 담당한다. 버퍼 관리자는 메인 메모리의 크기보다 매우 큰 크기의 데이터를 다룰 수 있도록 하기 때문에 DBMS의 매우 중요한 구성요소이다.
저장 관리자는 시스템의 물리적 구현의 한 부분으로 다양한 데이터 구조를 구현한다.
- 데이터 파일 : 데이터베이스 자체를 저장한다.
- 데이터 사전 : 데이터베이스 구조(데이터베이스의 스키마)에 관한 메타데이터를 저장한다.
- 인덱스 : 빠른 데이터 접근을 가능하게 한다.
와 같이, 인덱스는 특정한 값을 가지고 있는 데이터에 대한 포인터를 제공한다.
질의 처리기
질의 처리기(query processor)는 데이터베이스 사용자가 물리적 단계의 시스템 지식이 없이, 개념적 단계에서 작업을 할 수 있도록 지원하는 중요한 역할을 수행한다. 특히 논리적 단계에서 비절차적 언어로 작성된 명령문을 해석하여 물리적 단계에서 효율적으로 처리하는 작업을 수행한다. 질의 처리기의 구성은 다음과 같다.
- DDL 인터프리터 : DDL 명령문을 해석하고 데이터 사전에 정의를 기록한다.
- DML 컴파일러 : DML 명령문을 질의 실행 엔진(query evaluation engine)이 이해할 수 있는 원시 수준 명령어로 구성된 실행 계획(evaluation plan)으로 번역한다.
- 질의 실행 엔진 : DML 컴파일러가 생성한 로우레벨 명령어를 실행한다.
'데이터베이스' 카테고리의 다른 글
데이터베이스 사용자 및 관리자 (0) | 2024.03.03 |
---|---|
데이터베이스 시스템 아키텍처 (0) | 2024.03.03 |
데이터 모델링과 데이터 정의 언어 (0) | 2024.03.01 |
데이터 모델 (0) | 2024.02.27 |
데이터베이스 관리시스템의 구조 (0) | 2024.02.27 |