일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 단계별로 풀어보기
- 평균은 넘겠지
- 백준
- 블록 체인
- 별 찍기 - 11
- 자바스크립트
- 함수 사용하기
- 1110
- Remix
- for문 사용해보기
- 시험 성적
- 1546
- 1%d
- 솔리디티
- X보다 작은 수
- 비트 코인
- 알고리즘 문제풀이
- 10871
- 10817
- Mist
- 더하기 사이클
- Baekjoon
- 2448
- 그대로 출력하기
- 1065
- 가상 화폐
- 세 수
- if문 사용해보기
- Dapp
- 이더리움
- Today
- Total
블링블링 범블링
[DB 1장] 데이터 베이스 개념 본문
데이터 베이스란?
-데이터 베이스는 어느 조직이나 개인이 원하는 요구사항과 관련 된 여러가지 자료를 수집하여 이를 컴퓨터에 저장해 놓은 자료의 집합체이다
데이터베이스의 정의
-통합된 데이터 : 자료의 중복을 배제한 데이터 모임
-지정된 데이터 : 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
-운영 데이터 : 조직의 업무를 수행하는데에 있어서 존재가치가 확실하고 없어서는 안될 반드시 필요한 데이터
-공용 데이터 : 여러 응용 시스템들이 공동으로 소유하고 의지하는 자료
데이터 베이스의 목적
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에 기록한다.
'Technology > 데이터베이스' 카테고리의 다른 글
[DB 4장] ENTITY SET, KEY, 관계 집합 (0) | 2018.05.01 |
---|---|
[DB 3장] DDL, DML, DBMS, 4GL (0) | 2018.05.01 |
[DB 2장] View, 추상화, 독립성, 스키마, 모델 (0) | 2018.05.01 |
[DB 1장 추가] 데이터 베이스 역사 및 문제점 (0) | 2018.05.01 |
Tip. 데이터 베이스의 기본 상식 및 개념 (0) | 2018.05.01 |