블링블링 범블링

[DB 1장] 데이터 베이스 개념 본문

Technology/데이터베이스

[DB 1장] 데이터 베이스 개념

뻠스키 2018. 5. 1. 00:59


데이터 베이스란?

-데이터 베이스는 어느 조직이나 개인이 원하는 요구사항과 관련 된 여러가지 자료를 수집하여 이를 컴퓨터에 저장해 놓은 자료의 집합체이다



데이터베이스의 정의

-통합된 데이터 : 자료의 중복을 배제한 데이터 모임

-지정된 데이터 : 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료

-운영 데이터 : 조직의 업무를 수행하는데에 있어서 존재가치가 확실하고 없어서는 안될 반드시 필요한 데이터

-공용 데이터 : 여러 응용 시스템들이 공동으로 소유하고 의지하는 자료



데이터 베이스의 목적

1. 체계적인 자료 저장

2. 적지적인 자료 제공

3. 지식관리 차원 의사 결정 지원



데이터 베이스의 모델

1.개념 모델 : 데이터표현의 논리적 성격에 초점을 맞춘 모델.

데이터간의 관계를 나타내기 위해서 일대일 다대일 다대다의 세가지 유형의 관례를 사용하는 모델


2.구현 모델 : 데이터 베이스내에 있는 사용자에게 데이터를 어떻게 표현할 것인지 혹은 모델링 하는데에 있어, 데이터 구조를 어떻게

표현 할 것인지에 중점을 둔 모델. 계층형, 망형, 관계형 등이 있다.



DBMS의 개념

-DB를 관리하는 제반업무들을 사용자 대신하여 담당하는 일종의 DB관리용 소프트웨어



DBMS역할

1.  기존의 파일시스템이 갖는 종속성과 중복성의 문제 해결

2. 모든 응용 프로그램이 데이터 베이스를 공용할 수 있도록 관리

3. DB언어에 의한 자료 검색, 갱신, 실행 제어

4. 데이터 갱신 이상 시 이전 상태로 복귀 등



파일 시스템의 문제점 

1. 구조적 종속 : 해당 파일 필드를 하나 추가하거나 수정이 되면 해당 파일을 이용하는 모든 프로그램은 해당 파일 구조로 변경되어야 한다.


2. 데이터 종속 : 파일을 구성하는 데이터의 특성, 타입(정수형 -> 실수형)이 변경되면 해당 파일을 이용하는 프로그램도 변경되어야 한다.


3.데이터의 복제 : 같은 내뇬의 파일을 복사하여 부서별로 관리할 수 있다. 하지만 수정할 부분이 생길시에 모두 수정되지 않으면 데이터의 무결성 문제가 일어나기 때문에 데이터 비일관성 문제를 야기할 수 있다.



DBMS구성요소

-DB에 접근하는 모든 프로그램들은 DBMS를 통해 접근이 되어야 한다.



DBMS의 주요 기능

-정의 기능

1. DB에 저장된 데이터의 논리적 구조와 물리적 구조를 정의하는 기능

2. DB와 응용프로그램 간의 상호작용 수단을 제공

-조작 기능

1.DB에 저장된 데이터에 대한 검색, 갱신, 삽입, 삭제 작업을 할 수 있는 기능

2.DB와 이를 사용하는 사용자 간의 상호작용 수단을 제공

-제어 기능

1.데이터간의 모순이 발생하지 않도록 데이터의 일관성과 무결성을 유지하여 항상 데이터의 내용을 정확하게 유지 될 수 있도록 제어하는 기능


-이 이외에도 동시성 제어, 복구 회복, 효율적인 질의 처리, 보안 기능등을 제공한다.



DBMS의 종류

(1)MySQL

-오픈소스 기반의 관계형 DB관리 시스템

-많은 OS에서 사용이 가능하지만 주로 Linux에서 사용

-GUI관리 툴은 따로 내장되어 있지 않으며 공식적인 MySQL프론트 엔드 도구인 MySQL Work bench를 무료로 사용할 수 있다.


(2)MariaDB

-오픈소스의 관계형 DB관리 시스템

-MySQL과 동일한 소스코드 기반으로 하며, GPLv2라이선스를 따른다.

-MySQL과의 높은 호환성과 MySQL APIs와 명령에 정확히 매칭하여 교체 가능성을 높히고자 함이다. MySQL과 명령어, 사용방법이 동일하다.


(3)Microsoft SQL Server

-Mycrosoft사에서 개발한 DB관리 시스템

-동사의 제품에 종속되는 큰 단점이다 장점을 지닌다

-비주얼 스튜디오와 같은 도구와 연동해서 사용할 수 있는 잠정에 반해 Windows에서 밖에 사용할 수 없는 단점이 존재한다.


(4)Oracle

-전 세계에서 가장 많이 사용되고 있는 대형 관계형 DB관리 시스템

-주로 UNIX에서 사용하고 상대적으로 고가이고 일반 기술자가 운용하기 어렵다.

-양립성, 이식성, 연결성, 고생산성, 개방성


(5)Sybase

-관계형 DB관리 시스템 전문기업 또는 제품 이름이다.

-Sybase는 Microsoft가 개발한 SQL서버버전인 1.0의 기반이 된 제품

-UNIX, Novel Netware, Windows NT기반의 3개 버전이 존재한다.


(6)DB2

-IBM의 AS/400 시스템에 임베디드되는 DB관리 시스템이고 직접 하드웨어로 지지한다.

-전 세계 500개의 가장 큰기업에서 거의 85%이상 모두 DB2의 DB서버를 사용


(7)SQLite

-오픈소스 DB로 가볍고 빠른 특성 때문에 간단한 정보를 체계적으로 저장해야 하는 응용프로그램, 스마트폰, 임베디드 장비에 탑재되는 소프트웨어에서 주로 사용

-SQLite 는 MySQL과 같은 DB관리 시스템이지만 서버용이 아닌 응용프로그램에 넣어 사용하는 비교적 가벼운 DB

-구글 안드로이드 운영체제에 기본 탑재된 DB


1)SQLite DB저장구조

-트랜젝션을 지원하는 DB엔진, 타 라이브러리에 대한 의존성이 없고 별도로 설치 될 필요도 없는 작고 단순한 구조로 인해 Android, IOS를 포함한 대부분의 모바일 기기에 널리 사용.


-정수, 실수, 바이너리, 문자열과 같이 4가지 형식으로 Data저장.


-정수와 실수 데이터는 삭제된 영역에서 16진수로 존재하는 주변의 데이터와 구현되지 않기 때문에 삭제된 레코드의 구조를 정확하게 분석 해야만 저장 되었던 값을 확인할 수 있다.


-SQLite의 경우 사용자 설정에 따라 6가지 저널링 모드를 제공하지만 포렌식 관점에서는 크게 단독모드(NONE), WAL(Write Ahead Log)모드, Rollback journal모드로 나뉜다

저널링 모드 

파일 구성 

데이터 카빙 

NONE 

.db(혹은 사용자 정의 이름) 

파일에서 확성, 삭제 레코드 카빙 

WAL 

.db, .db-wal 

.db-wal파일에서 활성 카비

.db 파일에서 활성 및 삭제 레코드 카빙 

Rollback journal 

.db, .db-journal 

.db파일에서 활성 및 삭제 레코드 카빙

.db-journal파일에서 삭제 레코드 카빙 


(3)SQLite DB페이지 종류


-DB파일은 하나 이상의 페이지로 구성되고 페이지 크기는 SQLite의 기본 입출력 단위이며 2의 배수로서 512(0x200) ~ 65536(0x10000)byte 사이이며 페이지의 크기는 DB헤더에 저장된다.



페이지 종류

-포렌식 관점에서는 B-Tree, Payload overflow가 중요하다

페이지 종류 

상세 내용 

look-byte 

OS가 DB잠금(lock)기능을 구현할 때 사용 

freelist 

DB가 사용되지 않는 페이지들의 연결리스트 

B-Tree 

DB내의 테이블과 인텔스가 B-Tree로 구현되어 있다. 테이블, 인덱스 Bt 

 payload overflow

B-Tree내의 페이로드가 한 페이지 보다 큰 경우 할당되는 추가적인 페이지 

Pinter map 

DB내의 페이지 할당 여부정도를 비트맵으로 관리하는 페이지 




B-Tree 페이지

-메인 DB는 고정크기의 페이지의 집합으로 구성되는데 SQLite는 효율적인 데이터 관리를 위해 페이지를 B-Tree로 관리 

-테이블과 인덱스는 B-Tree자료구조로 저장

-실제 데이터는 B-Tree의 자식 페이지에 저장

-B-Tree루트 페이지와 내부 페이지는 원하는 레코드를 가지고 있는 자식 페이지로 빨리 찾아가기 위한 인덱스로 사용



4) 페이지 구조

-SQLite의 페이지는 페이지 헤더, 셀 포인터 배열, 미사용 영역, 셀 영역, 프리블록, 예약영역으로 구분


가. 페이지 영역

- 자식 페이지 -> 8byte, 내부 페이지 -> 12byte로 구성


나. 셀 포인터 배열

- 페이지 내에 존재하는 셀의 시작주소의 배열 2byte 빅 엔디안 정수로 표현


다. 미사용 영역

-cell포인터 배열 다음부터, 첫번째 셀이 나타나는 지점까지의 영역(cell이 할당되지 않은 영역)


라. 셀 영역

-활성 데이터가 존재하는 영역

-테이블 B-Tree자식 페이지 셀 내부에 테이블 레코드 존재

-테이블 B-Tree와 Index B-Tree 셀 내부에 키, 포인터 정보가 저장


마. 프리블록

-셀에 할당 되었다가 삭제된 영역


바. 예약 영역

-추가적인 확장 기능을 수용하기 위해 사용되는 영역


5)셀 구조


Payload size (var int) 

Roco id (var int) 

Payload 

overflow page(4byte) 


-Pyload크기가 현재 페이지에 남은 공간보다 크다면 페이지를 새로 하나 할당하여 그 페이지 번호를 Overflag page에 기록한다.


Comments