반응형

 

❏ 내장 SQL (Embedded-SQL)

 - 일반 응용 프로그램에 SQL 을 삽입하여 데이터베이스 자료를 이용하고 다양한 조작을 할 수 있도록 한 것.
   예를들어.. 웹에서 검색을 하는데.. 일반 사용자가 쿼리문을 치려면.. 너무 어렵다. 그래서 SQL 언어가 내장되어 있어서
   검색 버튼 등 을 쉽게 사용할 수 있다.
 

 

 

 

❏ 커서 (Cursor)

 - 내장 SQL 에 의해 얻은 값은 하나의 행 단위로 처리된다. 여러 개의 행을 그룹으로 처리하기 위해 사용한다.

   한마디로.. 한번 일 하고(행 단위니까) 어느 행에 위치해있는지 커서 역할을 하는것 으로 이해하면 된다.

 

   DECLARE(선언) - OPEN(맨첨으로) - FETCH(하나씩이동) - CLOSE(끝내라) 

 

 

 

❏ 스토어드 프로시저(Stored Procedure)

 - 자주 수행해야 할 SQL 처리 과정을 미리 하나의 작은 프로그램으로 작성하여 DB에 저장해 뒀다가 필요한 경우 호출.

    매크로 라고 보면 됨.

 

 

 

 

❏ 트랜잭션(Transcation)

 - 데이터베이스 내에서 한꺼번에 모두 수행되어야 할 연산들의 집합. 모두 처리 완료되거나 아니면 모두 취소되야하거나. 

    은행 입금 과정을 생각하면 된다. 내 계좌에서 돈을 빼서 다른 사람의 계좌로 입금 하는데. 내 계좌에서 빼고 입금하는 과정에서 오류가 났다.

    내 돈은 없어지고 상대방도 입금 안되고..  ??? 이런 일이 일어나지 않게 롤백 시켜서 최초단계로 다시 돌아가야 한다.. 그래서 끝까지 완료 되거나. 안되거나.

    이런 모든 절차를 그룹지어 트랜잭션 이라고 한다.

 

 

 

 

❏ 트랜잭션의 성질

 - 독립성(원자성, 격리성) : 트랜잭션이 실행되는  동안에는 다른 트랜잭션들이 방해할 수 없다!

 - 일관성 : 문 들어가기 전과 후가 같아야됨. 전에 내용이 잘못되있는게 없다면. 트랜잭션 완료 후에도 내용에 잘못된게 없겠지?

 - 지속성(영속성) : 트랜잭션이 성공하면 그 결과는 지속적으로 저장된다

 - 원자성 : 다 되던지. 아니면 모두 안되게 하던지

 

독 일 지 원

 

* COMMIT : 성공적으로 종료된 후 수정된 내용을 지속적으로 유지하기 위한 연산. 한마디로 적용해라! 명령

* ROLLBACK : 비정상으로 수행되었거나 오류가 발생했을 때 이전 상태로 돌리기 위한 연산. 한마디로 돌아가라! 명령

 

 

 

 

❏ 트랜잭션 스케쥴(Transcation Schedule)

 - 동시에 여러 개의 트랜잭션들이 병행으로 실행되는 경우.. 어떤게 먼저 실행되야되..?  이런 순서를 정하는 것.

 

1. 직렬 스케쥴

 - 하나 다 끝내놓고 다른 트랜잭션 뒤에 붙여서 하고.

 

2. 병렬 스케쥴

 - 왔다 갔다. 이거 조금 하고있다 저거 조금 하다 다시 돌아와서 이거하다.. 갔다.. 왔다 ..

 

 

 

 

❏ 직렬 가능 스케쥴

 - 직렬 스케쥴 기법을 이용한 결과와 비 직렬 스케쥴 기법을 이용한 결과가 동일하게 나오는 경우. 

   근데 이 내용의 이름이 왜 직렬 가능 스케쥴이지,.?;; 가능..? 단어는 왜 단거야!

 

 

 

 

❏ 회복

 - 손상된 데이터베이스를 회복시키자~~.. 이전의 정상적인 상태로 복구시키는 작업!

    로그(Log)를 이용하여 차근차근 돌아가면서 회복시키자~~

 

 

1. 즉시 갱신 기법  
- 트랜잭션이 실행 상태에서 변경되는 내용을 즉시즉시 DB에 적용해서 장애 발생하면 바로 회복!!
2. 지연 갱신 기법
 - 부분완료 될 때 까지 DB에 적용하지 않고 지연시킨 후 부분완료가 되면 로그 내용대로 회복
3. 검사 시점 기법
 - 트랜잭션이 실행되는 중간에 검사시점(Check Point)을 지정해서. 검사시점 까지 수행하고 DB에 적용!
4. 그림자 페이징(Shadow Paging) 기법
 - 로그를 안쓴다! DB와 같은 크기로 나눠서 각 페이지마다 복사해서 그림자페이지를 보관하는 기법. 
   음. 분신이 하나 더 있다는 거네. 회복할때는 그림자페이지에 있는거 갖다쓰고.

 

* 트랜잭션 장애 : 하나의 트랜잭션이 수행되는 과정에서 발생하는 오류

* 시스템 장애 : 트랜잭션 장애들로 인해 시스템 상의 문제가 발생하는 오류

* 미디어 장애 : 하드웨어적으로 하드디스크 등이 손상되는 오류

 

 

 

❏ 병행 제어(Concurrency Control)

 - 동시에 여러 개의 트랜잭션이 실행되는 경우를 병행 실행 이라고 한다.

   병행 실행 시 트랜잭션들끼리 문제가 발생되지 않도록 제어하는 것을 병행 제어 라고 한다.

 

 

 

 

❏ 로킹(Locking)

 - 트랜잭션 병행 실행 시 하나의 트랜잭션이 사용할 때 다른 트랜잭션이 접근하지 못하게 하는 기법!

    내 트랜잭션 작업할때는 다른애들이 접근 못하게 잠궈놓고 일하다가 다 끝나면 잠금 풀기~

 

 

  LOCK -> 트랜잭션 실행 -> 트랜잭션 완료 -> UNLOCK 

 

* 교착상태(Deadlock) : 한 트랜잭션의 수행시간이 LOCK 상태가 지속되면 다른애들이 일을 못해서 무한정 기다리는 상태

* 공유 락(Sharedlock) : 사용중인 데이터에 대해 읽기만 OK. 쓰기는 NO

* 베타 락(Exclusivelock) : 사용 중인 데이터에 읽기 NO 쓰기도 NO

 

 

 

로킹 단위는 테이블, 속성, 튜플 단위로 모두 설정할 수 있다. 

단위가 클수록 병행성 수준이 낮아지고(한 로킹 단위가 크니까.. 조그만거 건드리고 싶어도 접근이 불가능함)

단위가 작으면 병행성 수준이 높아진다(단위가 작다보니까 락 안걸어놓은 부분도 있고. 다른트랜잭션이 접근하기에 용이함)

 

 

 

❏ 2단계 로킹 기법(Two-Phase Looking Protocol)

 - 로킹의 대표적인 기법! 일단 LOCK 을 해야될 데이터들을 모두 LOCK 걸어버리는 단계. 그리고 LOCK 을 해제하는 단계의 2단계로 구성된다.

 

확장단계 : 트랜잭션 수행에 필요한 데이터들에 대해 LOCK 을 설정하는 단계

축소단계 : LOCK 이 필요 없어진애들을 LOCK해제하는 단계

 

 

 

 

❏ 타임 스탬프(Time Stamp)

 - 병행제어의 또 다른 방법. 병행제어의 기법을 다시 보자면 로킹과 타임스탬프 가 지금까지 나왔다.

 - 각 트랜잭션이 데이터에 접근할 시간을 미리 지정하고 그 시간의 순서에 따라 순서대로 접근하여 수행하는 방법. 뭐 예약제 라고 보면 되겠네.

 

 

 

❏ 병행제어를 하지 않았을 때의 문제점

 

 갱신 분실   두 개 이상의 트랜잭션이 수행되는 과정에서 연산 결과의 일부가 없어지는 현상. 분실했다니까 뭔가 없어지는 현상이네 
 모순성  두 개 이상의 트랜잭션이 수행되어 얻어진 결과가 일관성 없이 서로 다른 현상.  
 연쇄 복귀  두 개 이상의 트랜잭션이 수행되던 중 하나의 트랜잭션이 취소됨으로 인해 연달아 다른 트랜잭션도 취소되는 현상. 
 비완료 의존성  하나의 트랜잭션 수행이 실패한 후 회복되기 전에!! 다른 트랜잭션이 실패한 갱신 결과 가지고 참조하는 현상. 

 

 

 

❏ 인덱스(Index)

 - 수 많은 데이터 중에서 원하는 자료를 빠르고 효율적으로 검색하기 위한 방법. 사전의 맨 뒤에 찾아보기 라고 생각하면 된다.

 - 인덱스 파일은 키 값(인덱스를 만들 때 사용된 속성의 값), 주소(실제로 저장된 위치) 로 구성된다.

 

1. B- 트리 (Balance-Tree)

 - 맨 위 루트부터 검색하면서 루트값과 비교해서 작은값은 좌측 큰 값은 우측으로 훑어 내려가면서 탐색하는 방법

 - 기본적으로 제일 많이 사용하는 구조

 

 P1   data1   P2   data2   P3   ... 

 

P1  : data1 보다 작은 값을 갖는 하위 노드의 주소

P2 : data1 과 data2 의 중간 값을 갖는 하위 노드의 주소

P3 : data2 보다 큰 값을 갖는 하위 노드 주소

 

 

2. B+- 트리

 

인덱스 세트는 단말 노드를 찾기 위한 인덱스를 제공하고. 순차 세트는 단말 노드로만 구성되어 있다. 

별 중요하지는 않은듯 B+- 트리는.

 

 

 

 

❏ 클러스터드 인덱스(Clustered Index)

 - 인덱스의 또 다른 유형 중 하나. 일단.. 속성 하나 잡고 그 기준으로 정렬 하고 테이블을 재구성해서 인덱스를 만든다.

 - 정리가 된 테이블이 있다. 일정한 행의 갯수로 페이지를 나눈다. 몇 개의 테이블이 나올것이다. 그게 하나하나의 page 라고 보고. 이제 대표 인덱스 page 를 만드는데.

 - 각 data page 의 첫 번째 키값(대표값)과 page 번호로 인덱스를 만든다

 

 

 

 

❏ 넌 클러스터드 인덱스(Non Clustered Index)

 - 클러스터드 인덱스는 정렬 한번 쫙 하고 테이블을 재구성 하지 않고. 데이터 주소를 이용하여 인덱스를 만든다. 

 - 일단 일정한 크기로 나눈다. 몇개의 page 가 나온다. 이제 인덱스 page 를 만들어본다.

 - 인덱스 페이지 내용은 키 값과 데이터의 위치를 나타내는 Row id ( page 번호, 행 위치) 로 구성한다.

 - 또 최정으로 대표 인덱스도 만들고. 한마디로 클러스터드 보다 하나 더 있다. 

 

* 클러스터드 인덱스 : 일정한 범위를 가지고 찾는 경우 좋고.. 단! 삽입/수정 의 경우 변경된 내용을 인덱스에 반영하고 재정렬 또 해야하고.. 넌 클보다 불편하다

* 넌 클러스터드 인덱스 : 한개의 특정 값을 찾거나, 많은 양의 데이터 중에서 작은 범위를 찾을 때 유용하다.

 

 

 

❏ 객체 지향 데이터베이스 (OODB; Object-Oriented Database)

 - DB에 저장할 때 단순한 자료가 아닌 멀티미디어 정보를 저장, 관리하고 이용할 수 있는 데이터베이스

 

 

 

❏ 객체 지향 데이터베이스 관리 시스템 (OODBMS; Object-Oriented Database Management System)

 - OODB 를 관리, 운영하는 시스템 이겠지 DBMS 처럼.

 

 

 

 

❏ 객체-관계 데이터베이스 (ORDB; Object-Relation Database)

 - 객체 지향 데이터베이스에 관계 데이터베이스를 더한! O R 데이터베이스

 

 

 

 

❏ 객체-관계 데이터베이스 시스템 (ORDBMS; Object-Relation Database Management System)

 - O-R DB 를 관라해주는 시스템.

 

 

 

❏ 객체와 객체 지향 기법의 특징

 - 객체 : 현실 세계에 존재하는 개체를 추상화 한 것

 - 속성 : 객체의 특성

 - 메시지 : 객체에 어떤 처리를 하도록 지시하는 명령.  (MFC 생각하면..)

 - 메소드 : 연산. (함수떠올리면)

 - 클래스 : 알고 있는 클래스

 - 캡슐화 : 정보들을 묶어서 정보은폐 하려고

 - 상속 : 상위 클래스의 특징을 하위클래스에서 재사용해서 쓰려고

 - 다형성 : 동일한 객체더라도 경우에 따라 다른 의미의 연산으로 사용될 수 있다.

 

 

 

❏ 복합 객체

 - 한 객체가 가지고 있는 속성 가지고 다른 객체를 이용하기 위한 것으로. 관계 데이터베이스의 외래키와 같은 개념

 

 

 

❏ 보안

 - 데이터의 위험이나 손실, 정보의 유츨 등을 차단하기 위해 통제된 접근을 통해 정보를 안정적으로 관리하는 것..

    그냥 보안 느낌에 맞는 말 고르면 될듯.

 

  기밀성  기밀하게.. 허락되지 않은 사람들이 내용을 알 수 없도록 한다! 
  무결성  허락되지 않은 사람들이 함부로 정보를 수정 할 수 없도록 한다!
  가용성  허락된 사람들이 정보 쓸때 방해받지 않도록 한다! 

 

* 허락되지 않은 접근, 수정, 훼손, 노출 등을 고려해야 한다.

 

정보 보안의 방법으로는..

 물리적인 방법    무식하게.. 자물쇠나 사람의 감시 등의 방법
 비 물리적인 방법   암호화 기법을 통해 보안해보자!
 
 
 

 

❏ 암호화 기법을 통한 보안

 - 보호해야 할 메시지나 정보를 .. 문자나 수치로 알아볼 수 없게 변환하여 보호하는 방법

 

 대칭키 시스템   암호화 / 복호화 할 때 사용하는 키가 동일한 암호 시스템
 대표적인 시스템 : DES 
 비 대칭키 시스템  암호화 / 복호화 할 때 사용하는 키가 다르다. 공개 키 시스템 이라고도 한다(PKI)
 암호화 할 때 사용되는 키를 공개키 라고 하고 (공개)
 복호화 할 때 사용되는 키를 비밀키 라고 한다. (비공개)
 대표적인 시스템 : RSA  

 

 

 

❏ 개체(Entity)의 종류

 1. 독립 개체

  - 다른 개체에 종속되지 않고. 그 개체 내에서 모든 검색과 변경 등이 가능한 개체. 한마디로 자기 테이블 안에서 노는..

 2. 종속 개체

  - 혼자는 힘들어.. 다른 개체를 참조해야될것같아!! 

 

 

 

❏ 속성(Attribute)의 종류

 1. 단순 속성

  - 속성의 값을 더이상 작은 단위로 나눌 수 없는 속성. 학생수 속성은.. 더 나눌라고 생각해봐도..

 2. 복합 속성

   - 속성의 값을 더 작은 단위로 나눌 수 있는 속성. 예를들어 이름 속성은. 성 과 이름으로 나눌 수 있다!

 3. 결합 속성

   - 두 개 이상의 속성값을 합쳐 하나의 속성으로 만들어 진 속성. 출생년도+출생월일 두 개의 속성을 합쳐서 생년월일 속성을 만들었다!

 4. 설계 속성

   - 실제 연산에는 사용되지 않지만.. 편의상 만들어 놓은 속성. 순번 속성이 있다. 얘는 딱히 더하거나 빼거나.. 연산에 사용하지는 않는데 이게 없다면 일일히 행을 세야한다.

 

 

 

 

❏ 관계(Relation)의 종류

 1. 중복 관계 

  - 다른 테이블 참조하러 갈 때 우리 테이블의 여러 속성 가지고 모두 참조 조건이 되는 관계. 1번 속성갖고 떠나도 가능하고. 2번 속성 갖고 떠나도 가능하고.. 중복 관계이다.

 2. 재귀 관계

  - 일반적으로 참조는 다른 테이블로 떠나지만.. 재귀 관계는 하나의 테이블 내에서 자기 자신의 테이블 내용을 참조하는 경우. 

 

 

 

❏ 분산 데이터베이스(Distributed Database)

 - 여러 컴퓨터에 데이터를 분산시켜저장하고 관리!

 

  수평 분산    다량의 정보를 여러개의 동등한 기능을 가진 서버에 저장시켜 운영
  하나의 서버에 문제가 발생해도 DB 운영에는 지장을 주지는 않는다. 
  수직 분산   전체를 운영하는 주 서버와 처리를 담당하는 부 서버들로 운영
  관리 하기엔 좋은데. 문제가 발생했다 하면 전체 운영에 지장이 간다.

장점 : 신속한 서비스 제공. 확장성, 신뢰성, 가용성, 효율성, 융통성 좋다~

단점 : 당연히 구축하기가 어렵고 비용이 들겠지. 또 그만큼 오류가 생길 확률도 많아지고

 

 

 

❏ 튜닝(Tuning)

 - 뭘 튜닝한다는걸까. DB를 튜닝? 데이터베이스 시스템을 최적화 시켜서 재조정하는 것을 말한다.

 - 데이터 검색 시 저장 공간을 조정하여 신속한 검색이 되게 하고. SQL 명령어 작성 시 쉽게 이해할 수 있도록 표준화된 형태로 작성한다.

 - 트랜잭션의 무결성을 유지하며 LOCKING 기법을 사용한다. 트랜잭션의 무결성? 

 

 

 

❏ CRUD 매트릭스

 - Create, Read, Update, Delete. 

 - 개체간의 상관관계를 분석...!! 2차원 구조의 행렬 구조로 표현함으로써 한눈에 분석할 수 있는 도표 

 

 

 

❏ 트리거(Trigger)

 - 참조 관계에 있는 두 테이블에서 하나의 테이블에 삽입이나 수정 삭제 이런거로 내용이 바뀌었을 때!

   자동으로 연관된 테이블도 변경이 이루어 질 수 있도록 하는 것

 

 

 

❏ 행 이주(Row Migration)

 - 데이터 입력하거나 수정 시.. 기존에 있던 가변길이 내용 때문에 (줄어들었을때) 저장할 공간이 없을 때 블럭을 옮겨 저장하는 현상.

 - VARCHAR(20) 인 속성이 있는데 VARCHAR(11) 크기만 썼다. 가변길이 이기 때문에 줄어들었는데. UPDATE 로 18 크기만큼 수정했다.

 - 줄어든 11 공간에.. 18을 다시 넣을라고 하니..!! 다른 블록에 옮겨 저장할 수 밖에!

 - VARCHAR (가변길이) 일 경우에 발생한다. 

 

 

 

❏ 행 연결(Row Chaining)

 - 비어 있는 블록에 데이터를 삽입할 때 그 비어있는 공간이 .. 협소해서 일부만 저장하고 다른 블록에 저장해서 두개를 연결하는 방법

 

 

 

❏ 데이터 웨어하우스(Data Warehouse)

 - 사용자에 의사 결정에 도움을 주기 위하여(결정장애인가봄). 일정 기간 내에 저장된 대량의 데이터를 공통의 형식으로 변환하여 관리하는 데이터베이스.

 

 

 

❏ 데이터 마트(Data Mart)

 - 데이터 웨어하우스의 축소판. 데이터의 한 부분에서 사용자가 관심있는 부분의 데이터들을 담은 조그마한 규모의 데이터 웨어하우스. 

   쇼핑몰 사이트에서 판매되는 많은 제품들 중 내가 관심있는 조그마한 제품을 장바구니에 담아 두는 것.

 

 

 

❏ 데이터 마이닝(Data Mining)

 - 이것도.. 데이터 웨어하우스와 같은 다량의 데이터 는 같은데! 실제로 존재하지 않는 정보를 얻어내기 위해!! <-- 목적

   각 데이터의 관계를 체계적으로 분석, 인공지능 기법 등을 통해 통계적 규칙이나 패턴을 찾아내는 것!. 

 

 

 

 

❏ OLAP(Online Analytical Processing)

 - 사용자가 직접!! DB 검색과 분석을 해서 문제점이나 해결책을  찾도록 해주는 분석형 애플리케이션

 - 대규모 데이터를 이용하기 때문에... 연산에 장시간이 걸리고. 온라인 검색을 지원하는 데이터 웨어하우스 지원 도구이다. 

 - 한마디로.. 데이터 웨어하우스 (엄청난 데이터들..) 를 온라인으로 사용자가 질의 검색 해서 문제점이나 해결점을 찾는다!

 

 MOLAP   Multi.. OLAP . 다차원 데이터베이스를 기초.  
 ROLAP  Relation.. OLAP. 관계형 데이터베이스를 기초.  
 HOLAP  Hybrid.. OLAP. 다차원과 관계형을 함께 사용. 

 

* 스타 스키마(Star Schema)

 - OLAP 와 같은 다차원 분석을 지원하기 위한 데이터 모델링 기법. 

 

 

 

❏ OLTP(Online Transaction Processing)

 - OLAP 는 Analytical (분석적인) 이지만. 이건 전송이다. 

   중앙 컴퓨터와 통신회선으로 연결된 사용자들이 요청한 트랜잭션의 처리는 그래! 우리 중앙컴퓨터에 바로 왔으니까 내 선에서 얼른 처리해줄께! 하고

   즉시 처리된 결과를 사용자 단말 측으로 되돌려 보내주는 처리 형태.

 

 

 

 

반응형
도움이 되셨다면 공감 클릭 부탁드리며
출처만 남겨주시면 글 내용은 마음껏 퍼가셔도 좋습니다 :)