batch 란? 일을 바로바로 처리하는 것이 아니라, 일을 모았다가 한번에 작업을 처리하는 것을 말한다. 배치는 대량의 데이터를 특정 시간에 프로그램을 실행하여 일괄적으로 처리하는 특징을 갖는다.
티베로 데이터베이스 파일의 구조 :
DataFile: 테이블, 인덱스 들과 같은 논리적 구조들은 물리적으로 데이터 파일에 저장이 된다.
Redo Log File : 복구를 위한 데이터베이스의 변경된 모든 것을 길록하는 파일
Control File : 물리적 구조와 상태를 기록하는 파일
논리 볼륨 (Logical Volume) 이란?
데이터파일의 구조 : 파일 헤더 + 사용공간 / 미사용공간
- 파일헤더 : 데이터 사이즈 정보, 체크 포인트* TSN, 파일 고유 식별 절대번호, 테이블스페이스에서 식별하기 위한 상대번호 등의 메타 정보들을 포함하고 있다
- 사용공간
- 미사용공간 : 한번 이상 사용되었던 공간과, 한번도 사용되지 않은 미사용공간으로 나뉜다.
* 체크 포인트 ?
스키마 객체 (Schema Object) 란? 스키마는 테이블, 뷰, 인덱스 등의 집합체로써, 각종 오브젝트를 포함하며, 동일한 이름의 유저에 의해 소유된다. 스키마 오브젝트는 논리적인 데이터 저장 구조로써, 디스크의 물리적 파일과 1대1 대응을 하지 않고, 논리적인 구조인 테이블 스페이스에 저장된다. 쿼리의 대상이 되는 것들을 통칭하여 스키마 객체라고 부른다.
리두 로그 파일의 종류 : Online Redo Log Files, Multiplexed Redo Log Files, Archived Redo Log Files (pg.11~12)
컨트롤파일 (Control File) :
Segment & Extent :
익스텐트 Extent 란? 연속된 데이터베이스 블럭의 집합이다.
세그먼트 Segment 란? tablespace 내 특정 구조에 대한 모든 데이터를 갖고 있는 하나 혹은 하나 이상의 익스텐트의 집합이다 .
데이터 블록 이란? : 데이터베이스 I/O의 단위이자, 논리저장구조의 최소 단위가 데이터 블록이다. 운영체제 블록 크기와 다를 경우 배수 단위로 데이터 블록의 크기를 설정해야한다.
테이블스페이스 (tablespace) 란? : 세그먼트를 저장하는 논리 저장소, 한개 이상의 데이터 파일이나 임시파일을 사용하여 데이터를 저장한다.
테이블 (table) : 테이블은, 말 그대로 해석을 하자면 표를 의미한다. 데이터베이스에서 실제 데이터가 저장되는 논리적 구조를 테이블이라고 부르는데, 일반적인 표의 구조와 마찬가지로 행(로우, row)과 열(컬럼, columnn)로 이루어져 있다. 테이블의 종류로는 일반 테이블과 *파티션 테이블이 있다.
* Partition 이란? DB의 규모가 너무 클 경우, 너무 커다란 테이블을 가지고 작업을 하게 되면 성능 측면에서 문제가 발생하게 되는데, 이를 해결하기 위해 '파티션' 이라는 단위로 테이블을 쪼개서 관리를 한다. 파티셔닝이란 논리적인 데이터 element 를 다수의 entity로 쪼개는 행위를 뜻하는 일반적인 용어이다.
* 파티션 테이블 이란? 지속적으로 용량이 증가하는 논리적 테이블을 어러 개의 물리적인 공간으로 나누어 성능을 향상시킨 테이블. 각 파티션 테이블은 별개의 세그먼트에 저장되어 개별적으로 관리가 가능하다.
파티션 테이블의 장점 :
- 개선된 가용성 : 파티션은 독립적으로 관리가 가능하다. Backup and Restore 를 파티션 별로 작업이 가능하다. 같은 테이블에서 Unavaliable 한 파티션은 다른 파티션에 영양을 주지 않는다.
- 관리의 편의성
사용자가 지정한 값으로 파티션이 가능하고, 테이블스페이스 간에 파티션 이동이 가능하다. 파티션 레벨에서 SELECT, DELETE, UPDATE 가 가능하다.
- 개선된 성능
데이터를 액세스할 때 액세스 하는 범위를 줄여 퍼포먼스를 향상시킨다.
가상머신 스냅샷이란?
스냅샷은 마치 사진 찍듯이 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술을 의미합니다. Windows OS의 복원 지점과 같이 장애나 데이터 손상 시 스냅샷을 생성한 시점으로 데이터를 복구할 수 있습니다.
스냅샷은 원본 데이터를 그대로 복사해 다른 곳에 저장하는 백업과 달리 초기 생성 시 혹은 데이터의 변경이 있기 전까지는 스토리지의 공간을 차지하지 않습니다. 또 메타데이터(데이터에 대한 부가적인 정보)의 복사본에 해당하기 때문에 생성하는 데 오랜 시간이 걸리지 않고, 장애 상황이 발생해도 빠르게 데이터를 복원할 수 있습니다.
티베로가 인스턴스를 기동하는 부분의 작동과정은 오라클의 작동과정과 거의 유사하다. 티베로에서 오라클의 명령어가 거의 다 작동하는 것은, 오라클과 구조가 거의 유사하기 때문이라고 생각한다.
tbboot step
mount, nomount 차이 ?
사용자 관리 -> 티베로가 설치되면, 다음 6개의 계정 (SYS, SYSCAT, OUTLN, SYSGIS, TIBERO, TIBERO01)이 자동으로 생성된다. 데이터베이스 관리자는 기본 계정 이외에 업무에 필요한 사용자 계정을 추가로 생성하고 관리해야한다.
- SYS : 데이터베이스 관리를 위한 계정으로서 시스템 패키지, 동의어, 사용자, 역할, 가상 테이블, 시퀀스, 동적 뷰 등을 생성하고 관리한다
- SYSCAT : 데이터베이스 관리를 위한 정적 카탈로그 뷰를 생성하고 관리하는 계정이다
- OUTLN : 동일한 SQL을 수행할 때 항상 같은 질의 플랜으로 수행될 수 있게 관련 힌트를 저장하는 등의 일을 하는 계정이다
- SYSGIS : GIS 와 관련된 테이블 생성 및 관리하는 계정이다
- TIBERO/TIBERO1 은 CONNECT< RESOURCE, DBA 역할이 부여된 샘플 사용자 계정이다
사용자를 관리하면서, 권한을 부여할수도 있는데, 그럴때는 GRANT 명령어가 사용이 된다. 반대로 권한이 부여된 사용자로부터 권한을 회수할 수도 있는데, 그럴땐 REVOKE 를 통해 스키마 오브젝트 또는 시스템 권한을 회수할 수 있다.
# 권한 부여
GRANT SELECT ANY TABLE TO tibero WITH ADMIN OPTION;
# 권한 회수
# 스키마 오브젝트 권한 회수
REVOKE SELECT, UPDATE (EMPLOYEE_NAME, ADDRESS) ON EMPLOYEE
FROM tibero;
# 시스템 권한 회수
REVOKE SELECT ANY TABLE FROM tibero;
롤 (Role) 이란? 여러 권한을 모아놓은 집합이며, 하나의 단위로서 사용자에게 부여한다. 롤을 생성하거나 수정, 부여하기 위해서는 그에 맞는 권한이 필요하다.
Tibero 데이터베이스 파일 구조는 Data File, Control File, RedoLog FIle 로 이루어져있다.
Data Files : Tables & Indexes 과 같은 Logical Structures
- 데이터 파일 헤더 : 이 곳에는 데이터 사이즈에 대한 정보, 체크 포인트 TSN, 데이터베이스에서 고유하게 식별하기 위한 파일 절대번호, 테이블 스페이스에서 데이터파일을 식별하기 위한 파일 상대번호 등의 메타 정보를 포함하고 있다.
- 미사용 공간 (한번 사용된적이 있지만현재 미사용) : 데이터의 갱신 또는 삭제가 반복되면 중간에 사용하지 않는 공간이 존재하게 되고, 재사용하기에는 작은 크기일 경우에 조각난 공간이 발생한다.
- 미사용 공간 (한번도 사용된 적이 없음) : 데이터 파일 생성 시에 초기 포맷된 공간으로, 테이블 스페이스의 데이터 증가할 때 데이터 파일의 여유 공간을 사용하여 세그먼트에 익스텐트를 할당하게 된다.
Control Files : Database 의 물리적 구조와 상태를 기록하는 파일
Redo Log FIles : 복구를 위해 데이터베이스에서 변경된 모든 것들을 기록하는 파일
- Online Redo Log Files
---
---
---
---
- Multiplexed Redo Log Files
---
---
---
---
- Archived Redo Log Files
---
---
---
---
세그먼트!
Undo 세그먼트
언두 데이터는 트랜잭션 기록을 보관하며, 다음의 경우에 사용된다.
- 트랜잭션 롤백 / - 트랜잭션 복구 / - 읽기 일관성 작업 / - 플래시백 작업
플래시백 작업이 가능한대, 이를 수행할 수 있는 쿼리가 존재한다. 특정 시간의 테이블 데이터로 돌릴 수 있는데, 그게 UNDO Data 이다. 항상 가능하지는 않고, Undo Data는 없어진다. expire 되는 시간이 있다.
언두가 되는 데에는 조건이 있다. 지워도 되는 조건이면 지운다.
UNDO_RETENTION 이라는, 커밋 언두 데이터의 보존하는 기간을 설정하는 파라미터가 있다. 커밋을 하고 900초 (15분)으로, 해당 언두 익스텐트의 데이터 보장. 이 시간이 지난 익스텐트는 진행중인 트랜잭션을 위해 재 할당될 수 있다. RETENTION 기간 이내인 경우 익스텐트는 재활용 될 수 없음.
* retention : 보유, 유지
* 트랜잭션 제어 (TCL)
명령어
핵심
설명
커밋 COMMIT
트랜잭션 확정
트랜잭션을 메모리에 영구적으로 저장하는 명령어
롤백 ROLLBACK
트랜잭션 취소
트랜잭션 내역을 저장 무효화시키는 명령어
체크포인트 CHECKPOINT
저장시기 설정
ROLLBACK을 위한 시점을 지정하는 명령어
테이블 스페이스 : 세그먼트를 저정하는 논리 저장소, 한 개 이상의 데이터 파일이나 임시 파일을 이용하여 데이터를 저장한다.
DB서버 장비를 별도로 갖춰서 사용하는게 일반적, (IBM, DELL, HP 등 여러 종류의 서버 장비들) 그런 서버 장비를 구매해서 DB 소프트웨어를 설치해서 DB 서비스 용도로만 사용하는데,
티비 부트, 티비 다운으로 실행
티베로 인스턴스는 기본적으로 어떻게 사용하냐면, 티베로 바이너리가 설치가 되어있어야한다. 그리고는 티베로 인스턴스가 시작이 된다. 인스턴스가 존재하는 이유는, 데이터베이스를 관리하기 위해서이다.
데이터베이스가 관리하는게 인스턴스의 역할이고, 데이터가 담긴 파일들이 있는 곳이 데이터베이스이다.
데이터베이스는 한 개이고, 인스턴스는 여러 개이다
데이터베이스는 확장이 된다 하더라도 한개이고, 인스턴스와 데이터베이스는 1대1 구조를 기본 원칙으로 한다. (1대N 관계)
인스턴스가 여러개 모여있면 클러스터 구조가 된다. TAC (Tibero Active Cluster)
티베로 바이너리 파일 : ?
뒤에 언급될 내용 : 데이터베이스, 그리고 인스턴스에 대한 구조에 초점을 맞춰서 설명이 진행이 된다
Tmax Tibero RDBMS 구조
- 모니터링 프로세스
- 관리자 프로세스
- 작업 프로세스
- 리스너
- 공유 메모리
- 백그라운드 프로세스
- 스토리지 (가상화 스토리지)
Tibero 가 이해하는 언어는 SQL 이다.
작업 프로세스 하나에는 쓰레드가 열개가 들어있다. 프로세스가 1,000개면 쓰레드는 10,000개가 들어있다고 할 수 있다. 여러개의 회선이 존재한다. 그래서 사용자들이 다양한 요청을 할 수 있다. 여러명이 사용자가 있기 때문에, 여러개의 회선이 존재할 것이고 그 끝에는 여러개의 쓰레드가 존재할텐데, 동시에 같은 데이터를 처리해달라고 요청을 받는 경우가 있을 것이다.
인스턴스 : OOP에서 인스턴스는, 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.
여기서 클래스는 속성과 행위로 구성된 일종의 설계도이다. OOP에서 객체는 클래스와 인스턴스를 포함한 개념이다.
사용자의 요청을 받아서 처리를 해주는 것이 인스턴스의 역할이다. 티베로 인스턴스와 연결하는 역할을 하는 것이리스너(Listener)이다.
pg7. Tibero 프로세스 구조 - 대규모 사용자 접속을 수용하는 다중 프로세스 및 다중 스레드 기반의 아키텍쳐 구조
접속 요청이 이루어지는 과정
1단계 : 리스너에서 클라이언트에 대한 연결 요청을 받는다.
2단게 : LIstener에서 비어있는 WTHR 프로세스를 찾아서 접속 요청을 CHTR에게 넘겨준다
* WTHR : Worker THReads / CTHR : Control THRead
3단계 : 요청받은 CTHR은 자기 자신의 WTHR의 상태를 체크해서 놀고있는 곳에 할당한다.
4단계 : 할당받은 스레드와 클라이언트와의 연결을 다시 하는 과정인데, 유저명을 확인하는 과정이 이루어진다. 데이터가 테이블에 들어있는지를 확인한다.
CTHR :
- 각 working process 마다 하나씩 생성. 서버 시작 시에 지정된 개수의 워커 쓰레드를 생성
- 시그널 처리를 담당하기도 하고, I/O Multiplexing을 지원하며, 필요한 경우 워커 쓰레드 대신 메시지 송/수신 역할을 수행한다.
WTHR :
- 각 워커 프로세스마다 여러개 생성.
- 클라이언트가 보내는 메시지를 받아 처리하고 그 결과를 리턴한다.
- SQL Parsing, 최적화, 수행 등 DBMS가 해야하는 대부분의 일을 처리한다.
데이터베이스 파일들은 설치할때 만들어놓고 계속 사용한다.
데이터 베이스에 이름을 부여하게 되어있는데, 그이름은 티베로에 접속하는 사용자도 알고 있어야하는 정보다. IP포트, DB name, 접속정보에는 유저명과 패스워드 (데이터베이스에 정의되어있어야함),
Background Processes
감시 프로세스 (MONP : monitor process) : 티베로 가동 시 최로로 생성되고, 종료시에도 마지막으로 종료가 된다. 리스터를 포함한 다른 프로세스를 생성하고, 주기적으로 각 프로세스 상태를 점검한다
Deadlock도 검사한다
매니저 프로세스(MGWP) : 시스템 관리 용도 프로세스로, 관리자의 접속 요청을 받아 관리 용도로 예약된 워커 스레드에 접속을 할당한다.
리스닝을 직접 한다.
에이전트 프로세스 (AGNT) : 시스템 유지를 위해 주기적으로 처리해야하는 티베로 내부의 작업을 담당한다.
데이터베이스 쓰기 프로세스 (DBWR) : 데이터베이스에서 변경된 내용을 디스크에 기록하는 일과 연관된 스레드들이 모여있는 프로세스. 사용자가 변경한 플록을 디스크에 주기적으로 기록한다. Redo 로그를 디스크에 기록하는 스레드도 포함이 되어있고, 두 스레드를 통해 데이터베이스의 체크포인트 과정을 관할하는 체크포인트 스레드도 포함이 되어있다.
복구 프로세스 (RCWP) : 복구전용 프로세스이고, Crash / Instance Recovery를 수행한다.
Tibero Memory
Tibero Shared Memory (TSM) :
- 인스턴스에 대한 데이터와 제어 정보를 가지는 공유 메모리 영역
- 사용자가 동시에 데이터를 공유
- Database Buffer, Redo Log Buffer, SQL Cache, Data Dictionary Cache 로 구성됨
- Background Process 는 인스턴스가 시작될 떄 TSM 영역을 할당하고, 인스턴스가 종료하면 할당 해제
평균은 그렇게 좋은 것은 아니다. 가령 유튜브의 영상 추천 서비스를 생각해보면, 유튜브에서 추천해주는 영상은 나의 취향을 고려해서 추천을 해주지만, 만약에 어떤 사람의 취향이 바뀌더라도 나의 평균적인 취향은 기존의 취향에 더 가까울 것이기 떄문에, 새로운 취향에 대한 영상을 추천해주지 않을 것이다.
<예문>
앇 날씫돇 좋은덳 놁럯갃곣 싶닧 (아 날씨도 좋은데 놀러가고 싶다)
엯긳는 절댃롟 들얷갃짃맋섻욗 (여기는 절대로 들어가지 마세요)
위와 같은 예문이 존재한다고 했을 때, 우리나라 사람이라면 웬만하면 읽으면서 대충 이해를 하겠지만, 한국어를 청므 배우는 외국인은 이를 이해하기 쉽지 않을 것이다.