1.0 데이터베이스 시스템
데이터베이스란, 데이터들이 모여있는 어떤 기지를 의미.
데이터베이스 관리 시스템(DBMS)란, 데이터베이스를 관리하는 소프트웨어고.
예를 들어, MySQL, Oracle, Maria DB, Postgres SQL 등이 DBMS임.
기존의 DBMS들이 처리하기 어려운 데이터 - 빅데이터 - 가 나옴에 따라서, 새로운 종류의 DBMS들이 나오게 됨.
빅데이터의 특성 :
- 볼륨 : 데이터가 많다
- 다양성 : 비정형적인 데이터들의 등장.
- 실시간성 : 데이터를 엄청 빨리 처리해야 하게 됨.
따라서, NoSQL의 등장.
SQL은, 기존의 DBMS들에서 사용하던, 데이터를 처리할 수 있는 언어인데, NoSQL은 Not Only SQL의 약자로서 SQL 뿐만 아니라 뭔가 더 할 수 있어야 함. 그래서 MongoDB, HBase 등의 NoSQL DBMS들이 등장함.
자, 그럼 데이터베이스란?
조직체의 응용 시스템들이 공유해서 사용하는, 운영데이터들이 구조적으로 통합된 모임.
예전에는 하나의 회사에서도 각 부서가, 개별적으로 본인 목적에 맞는 프로그램을 개발해서 데이터를 처리했지만, 이러다보니 일관성 문제가 발생하여, 각 부서들이 공유해서 사용하자 ~ -> 데이터를 구조적으로 통합하자 !! 해서 나옴.
따라서 데이터베이스의 특징으로는,
대규모 데이터이며, 여러 부서의 여러 사용자들이 동시에 사용한다는 특징이 있다.
또한, 운영 데이터 + 메타 데이터(데이터에 관한 데이터 - coumn 이름들 등) 까지 포함함.
그래서 이러한 데이터베이스를, 우리가 관리하게 쉽게 해주는 것이 DBMS이고,
DBMS는, 데이터베이스 스키마를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등의 작업을 수행하는 소프트웨어를 의미하게 된다 ~
1.1 데이터베이스 시스템 개요
먼저 데이터베이스 스키마는, 전체적인 데이터베이스의 구조를 의미하고, 데이터베이스 상태는, 특정 시점의 데이터베이스의 내용을 의미함.
데이터베이스 시스템은, 저장장치, DBMS, 사용자, 응용 프로그램(이 응용 프로그램을 통해 DBMS를 사용하기도 함) 로 구성되어 있음.
DBMS는, 사용자가 데이터베이스를 잘 다루도록… 하는 소프트웨어 패키지로,
데이터베이스 언어라고 부르는 프로그래밍 언어를 한 개 이상 제공함. - SQL이라는 질의 언어가 표준으로 제공됨.
컴퓨터 시스템에서, DBMS는 운영체제 위에 위치함.
따라서, DBMS는 응용 소프트웨어(일반 사용자들을 위해 만들어 놓는 application)이라기 보단, 시스템 소프트웨어(middleware, 특정 end user를 목적에 두지 않고, 시스템 운영에 필요한 거)라고 볼 수 있음.
우리는 데이터를 읽고 쓰는데, 데이터베이스는 디스크와 같은 보조 기억 장치에 저장됨. 그래서 DBMS에서 원하는 정보를 찾기 위해서, 디스크의 블록들을 주기억 장치로 읽어들임.
또한, DBMS 자체도 주기억 장치에 적재되어 실행되어야 함.
이러한 데이터베이스 시스템은,
... 이런 요구사항이 있는데, 나중에 하나하나 배울 것.
1.2 화일 시스템 vs. DBMS
자 그럼 이런 요구사항이 어떻게 나오게 되었는지, 역사를 알아보자 ~
1.2.1 화일 시스템을 사용한 기존의 데이터 관리
초창기에, DBMS 제품이 안 나왔을 때는 각자 본인 목적에 맞는 데이터를 다루는 프로그램을 만들어서 썼음.
파일 시스템에다가 데이터 파일을 저장하고, 프로그램이 그거 읽어서 처리하는 방식.
- 화일을 접근하는 방식이 응용 프로그램 내에 상세하게 표현되므로, 데이터에 대한 응용 프로그램의 의존도가 높음.
- 데이터가, 많은 화일에 중복해서 저장됨.
- 다수 사용자들을 위한 동시성 제어가 제공되지 않음.
- 검색을 쉽게 하기 위한 질의어가 제공되지 않음.
- 보안 조치도 없고, 회복 기능도 없고, 등등…
의 단점이 있어서, DBMS를 사용해 데이터베이스를 관리하게 됨.
1.2.2 DBMS를 사용한 데이터베이스의 관리
그래서, 이런 단점들을 해결하기 위해 데이터 관리를 좀 더 쉽게 하기 위한 소프트웨어, DBMS의 탄생.
프로그램 - 데이터 독립성 (program-data independence)이 있어서, 프로그램에 영향을 주지 않으면서 데이터베이스 구조 변경 가능해짐.
1.3 DBMS 발전 과정
“링크”라는 물리적인 저장 방법으로 데이터들의 관계를 표현한
계층 DBMS - 트리 구조 기반의 계층 데이터 모델을 사용한 DBMS.
네트워크 DBMS - 그래프를 기반으로 하는 데이터 모델.
를 거쳐,
관계 DBMS - 데이터를 행과 열로 구성된 테이블로 표현하는 것. 가 나왔고,
기존의 네트워크 / 관계 DBMS에서 제대로 표현할 수 없었던 복잡한 형태의 데이터들을 표현할 수 있게 된 객체 지향 DBMS가 나오고,
현재는 다
관계 DBMS와 객체 지향 DBMS가 결합된 형태인, 객체 관계 DBMS임.
이걸 우리는 그냥 관계 DBMS라고 함. (보통 관계 DBMS가 객체 지향 DBMS의 특성을 흡수한 거라서)
그래서, 우리는 관계 DBMS를 배울 것.
그래서 현대 관계 DBMS의 기능들은
- 효율적인 질의 처리 (고전 DBMS도 가졌던 핵심 기능)
- 고급 사용자 인터페이스 지원 (SQL, 자연어, 폼 기반 등..)
- 트랜잭션 개념을 지원 (고전 DBMS도 가졌던 기능)
- 특별한 데이터 타입 지원 (long field, 이미지, HTML, 공간 정보 등)
- 객체지향개념, 웹 인터페이스, .. 등등 여러 기능들을 제공해준다.
와 같다 !
1.4 DBMS 언어
사용자가 데이터베이스에 저장되어 있는 데이터를 쉽게 access할 수 있도록 도와주는 질의 언어.
1.4.1 데이터 정의어 (DDL: Data Definition Language)
: 데이터의 구조를 정의(데이터베이스 스키마 정의)할 때 사용.
- CREATE TABLE : 테이블을 만드는 데 사용
- ALTER TABLE : 구조를 변경할 때 사용 (필드를 하나 더 추가해야겠네? 이 필드 더 필요 없네?)
- DROP TABLE : 만들어진 테이블을 제거
- CREATE INDEX : 특정 레코드들을 빠르게 찾기 위해 인덱스를 만듦.
1.4.2 데이터 조작어 (DML: Data Manipulation Language)
: DB 안에 들어가 있는 특정 레코드들을 검색/수정/삭제할 때 사용.
→ 데이터베이스 안에 있는 레코드들이 영향을 받게 됨. (메타 데이터가 아니라)
- SELECT : 레코드들을 검색
- UPDATE : 레코드에 있는 필드 값 수정
- DELETE : 레코드 삭제
- INSERT : 레코드 삽입
1.4.3 데이터 제어어 (DCL : Data Control Language)
→ 뒤에 우리가 Transaction이라는 걸 배울 텐데, 이 Transaction을 명시하거나, 또는 권한에 관련된 거를 부여하거나 취소하는 것 등등을 하는 것.
1.5 DBMS 사용자
DBMS에 다양한 종류의 사용자들이 관여되어 있다.
- 데이터베이스 관리자, 오퍼레이터 (시스템 오퍼레이터), 데이터베이스 설계자, 응용 프로그래머, 최종 사용자(end user)
-> 한 사용자가 이제 팀 단위가 될 수도, 한 명이 이 전체 사용자의 역할을 다 담당할 수도 있다. (기업의 규모에 따라..)
1.6 ANSI/SPARC 아키텍처와 데이터 독립성
1.6.1 ANSI/SPARC 아키텍처
: 현재 대부분의 상용 DBMS를 구현할 때 사용되고 있는 아키텍쳐.
- 외부 단계 : 데이터베이스의 각 사용자가 갖는 뷰.
- 각 사용자들은 각자의 목적에 맞는 일부만을 보니까, 전체 데이터가 아닌 각 사용자에 맞는 뷰를 제공해주는 것.
- 동일한 개념 단계로부터 서로 다른 뷰가 제공되는 것.
- 개념 단계 : 조직의 공통적인 뷰를 나타내는 것. 공통적으로 우리가 표현한 거라, 하나 뿐.
- 내부 단계 : 물리적 또는 저장 뷰. 궁극적으로 개념적인 것들이 물리적인 장치에 저장되어야 하니, 이걸 관리해주는 단계.
- 데이터가 어떻게 저장되어 있는가! 실질적으로 물리적인 데이터 구조에 관한 스키마를 표현.
- 가장 하드웨어하고 밀접한 단계. 하드웨어에 데이터가 실질적으로 어떻게 저장되는지를 나타내는 것.
여기서 외부/개념 사상, 개념/내부 사상은, 각 단계들 사이의 mapping해주는 것을 의미합니다.
1.6.2 스키마 간의 사상
1. 외부/개념 사상
: 외부 단계의 뷰를 사용해서 입력된 사용자의 질의를, 개념 단계의 스키마를 사용한 질의로 변환하는 것.
2. 개념/내부 사상
: 테이블 구조로 mapping은 되어있지만 실질적으로 데이터는 물리적인 저장 공간에 있으니, 이를 다시 내부 단계의 스키마로 변환해서 디스크에 있는 데이터베이스를 접근하도록 해주는 것.
이때, 데이터 독립성 - 상위 단계에 영향을 주지 않으면서, 어떤 단계의 스키마 정의를 변경할 수 있는 것 - 이 제공됨.
- 논리적 데이터 독립성: 개념 스키마가 변화해도 외부 스키마가 영향을 받지 않게끔함.
- 외부/개념 사상에 존재
- 물리적 데이터 독립성 : 내부 스키마의 변화가 그 윗 단계인 개념 스키마에 영향을 미치지 않고, 따라서 그 위에 있는 외부 스키마에도 영향을 미치지 않는 것
- 개념/내부 사상에 존재
1.7 데이터베이스 시스템 아키텍처
1.7.1 중앙 집중식 / 분산 데이터베이스 시스템
- 중앙 집중식 데이터베이스 시스템 (centralized database system)
: 데이터베이스 시스템이 하나의 컴퓨터 시스템에서 운영됨.
: 서버 하나에 DBMS가 들어가 있어서, 다른 클라이언트들은 위와 같이 네트워크를 통해 DBMS에 access함.
- 분산 데이터베이스 시스템 (distributed database system)
: DBMS 소프트웨어가, 하나의 사이트(하나의 머신)에 있는게 아니라 여러 머신에 설치되어 있음. 그리고 이 DBMS들이 서로 협력해서 커다란 데이터베이스를 구성함.
1.7.2 클라이언트-서버 데이터베이스 시스템(client-server database system)
옛날에 했던 방식 : 키보드 입력을 내리면, DBMS가 설치되어 있는 서버로 키보드 입력이 가서, 거기서 명령어가 처리가 돼서 결과만이 다시 이 모니터로 출력이 되는 방식.
→ 자체적으로 컴퓨팅 파워를 가지는 PC가 등장하면서, 모든 종류의 키보드 인풋 등을 서버로 보내지 말고, 이 단말 쪽에서 처리할 수 있는 건 여기서 처리하고, DBMS가 처리해야 하는 서버 역할은 DBMS가 하자. 해서 나온게 클라이언트-서버 구조.
클라이언트-서버 데이터베이스 시스템
- 클라이언트 : 사용자 인터페이스를 관리(입출력 처리)하고, 간단한 논리들을 처리.
- 서버 : 데이터베이스 저장 / DBMS 운영 / 클라이언트에서 온 질의 최적화 / 권한 검사 수행 / 동시성 제어 / 회복 기능 / 데이터 무결성 유지 / 접근 관리 .. 등의 일을 수행.
1.7.3 2층 모델(2-tier model) / 3층 모델(3-tier model)
- 2층 모델 : 서버가 하나, 클라이언트 하나 총 2개가 있는 것.
- 3층 모델 : 이 사이에 응용 서버가 추가된 것.
- 응용 서버 : 자기 조직의 특정 응용 비즈니스 로직인, 응용 논리를 담당함.
- ex.) 편의점 1+1 / 2+1 .. / 우유 하나 사면 김밥을 천원 깎아준다던지 -> 이런 건 DBMS에서 관리하지 않고, logic으로 해서 응용 서버에 가지고 있음. 여기서 처리함.
- 응용 서버 : 자기 조직의 특정 응용 비즈니스 로직인, 응용 논리를 담당함.
1.7.4 클라이언트-서버 시스템의 장단점
- 장점
- 클라이언트들이 네트워크를 통해 연결될 수 있으니, 데이터베이스를 보다 넓은 지역에서 접근할 수 있음.
- 그 클라이언트들은 윈도우도 되고, 애플도 되고.. 하니까, 다양한 컴퓨터 시스템을 사용할 수 있음.
- 단점
- 네트워크로 연결되다보니, 보안 문제가 있을 수 있다.
'CS > Database | 데이터베이스' 카테고리의 다른 글
[데이터베이스] 2장. 관계 데이터 모델과 제약 조건 (0) | 2025.04.23 |
---|