데이터베이스 시스템이 무엇인지, 앞서 다뤘던 DBMS의 개념과는 어떤 차이점이 있는지, 어떤 구조로 이루어져 있는지, 어떤 언어를 사용하는지 살펴보도록 하겠다.
데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템이다.
데이터베이스와 이를 관리하는 소프트웨어인 DBMS와 응용프로그램 모두를 칭하는 용어이다. 통상적으로는 DBMS와 구분없이 사용한다.
데이터베이스를 구성할 때 자주 언급되는 두 가지 용어에 대해 간단히 살펴보자.
스키마(Schema)✔️
스키마는 데이터베이스에 저장되는 데이터의 논리적 구조와 제약조건을 정의한 것이다.
인스턴스(Instance)✔️
인스턴스는 정의된 스키마에 따라 데이터베이스에 실제로 저장된 값을 말한다.
미국의 기관인 ANSI/SPARC에서 데이터베이스의 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이용하고 사용할 수 있게 하는 구조를 제안했다.
구조는 다음과 같다.
DATABASE
→Internal Schema
→Conceptual Schema
→External Schema
→END USER
각 스키마에 대해 더 자세히 알아보자.
Physical Level - Internal Schema(내부 스키마)✔️
👉🏻 실제 데이터가 데이터베이스에 어떻게 저장되는지 기술한다.
👉🏻 파일에 저장되는 레코드의 구조(사이즈), 압축 방법, 암호화 방법 등Conceptual Level - Conceptual Schema(개념 스키마)✔️
👉🏻 일반적인 스키마로, 데이터베이스를 개념적으로 표현하고 데이터 테이블 간의 관계를 기술한다.
👉🏻 물리적 데이터 독립성을 가진다.External Level - External Schema(외부 스키마)✔️
👉🏻 사용자가 보는 View Level이다.
👉🏻 사용자에게 View의 형태로 필요한 정보만 보여주는 단계를 말한다.
👉🏻 각 사용자들의 개별 요구 사항에 따라 다른 view를 정의해서 데이터를 볼 수 있다.
👉🏻 데이터베이스 하나에 여러 개의 외부 스키마가 있을 수 있다.
👉🏻 개념 스키마와 논리적 데이터 독립성을 가진다.
데이터베이스 시스템 언어를 살펴보기에 앞서 데이터베이스에 접근하는 사용자 유형에 대해 살펴보자.
데이터베이스 관리자(DBA)✔️
👉🏻 데이터베이스 시스템을 운영하고 관리한다.
👉🏻 데이터베이스를 설계 및 구축하며, 제어한다.
👉🏻 DBMS 자체는 물론, 데이터베이스 구축과 관리에 해박한 지식과 많은 경험이 요구된다.응용 프로그래머✔️
👉🏻 데이터베이스 언어를 이용하여 응용 프로그램을 작성한다.
최종 사용자(END USER)✔️
👉🏻 데이터베이스에 접근하여 데이터를 조작한다.
👉🏻 Casual end user: 데이터베이스 언어를 이용해 데이터베이스에 접근하고 조작한다.
👉🏻 Native end user: 데이터베이스 언어를 쓰지 않고 응용프로그램을 통해 데이터베이스에 접근한다.
데이터 언어는 사용자가 데이터베이스를 구축하고 이에 접근하기 위해 데이터베이스 관리시스템과 통신하는 수단이다.
데이터 정의어 (DDL)✔️
스키마 구조와 제약조건 등을 정의, 수정, 삭제
데이터 조작어 (DML)✔️
데이터의 삽입, 검색, 수정, 삭제
데이터 제어어 (DCL)✔️
내부적으로 필요한 규칙(보안, 무결성 체크) 등을 정의하는 데이터 언어. 데이터 베이스를 백업하거나 백업이미지로 회복(recover)하는 명령어
그림으로 나타낸 데이터베이스 시스템이다.질의 처리기✔️
👉🏻
DDL Interpreter
: DDL로 작성된 스키마의 정의를 해석, 딕셔너리(Catalog)에 저장한다.
👉🏻DML Compiler
: DML로 작성된 데이터 처리 요구를 processing engine이 이해할 수 있는 코드로 해석하여 plan을 작성한다.
👉🏻DML(Query) Processing Engine
: 컴파일 된 plan을 데이터베이스에 실제로 실행한다.