Top Banner
제 7 제 DBMS 제제 DBMS 제제 DBMS 제제 제제 제제제 제제 제제
33

7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

May 18, 2018

Download

Documents

vuliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

제 7 장 DBMS 구조• DBMS 기능• DBMS 구성 요소• 물리적 저장 구조

Page 2: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

7.1 DBMS 의 기능 질의어 제공 (query language) 데이타 저장 관리 트랜잭션 관리 (transaction management) 데이타 무결성 유지 (data integrity) 동시성 제어 (concurrency control) 회복 (recovery) 보안 (security)

Page 3: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

질의어

데이타 정의 언어 (DDL) 스키마 (schema) 정의

• 스키마 : 데이타베이스에 저장될 데이타의 구조• 메타 데이타 (meta data)

• 스키마에 대한 정보• 릴레이션 정보 , 속성 , 소성의 데이터 타입 , 기본 키 , 외래 키 , 릴레이션

크기 등의 정보를 저장• 데이타 사전 (data dictionary)

• 메타 데이타를 저장하는 저장 구조 데이타 조작 언어 (DML)

데이타의 추가 , 삭제 , 검색 SQL: 질의어의 표준 (DDL + DML)

DBMS데이타 데이타사전스키마스키마

메타데이타

DDLDML DBMSDBMS데이타데이타 데이타사전스키마스키마

메타데이타

DDLDML

질의어의사용

Page 4: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

데이타 저장 관리

데이타베이스에 저장된 데이타를 운영 체제의 화일 시스템을 이용하여 입출력

화일 시스템에 저장된 저수준의 데이타와 응용 프로그램 사이의 인터페이스 제공

효율성에 따라 다양한 자료 구조로 저장 순차 화일 , B+ 트리 등

Disk

운영 체제

DBMS

File system

저수준 데이타

질의 , 결과

Disk I/O

Page 5: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

데이타 무결성 유지

현실 세계에 존재하는 실제 정보와 일치 데이터가 갖추어야 할 조건 관계형 데이타베이스 모델에서의 무결성 제약 조건 (5

장 ) 개체 무결성 참조 무결성 키 제약 도메인 제약

응용상에서의 제약 DBMS 의 기능을 통한 제약

• Trigger• Assertion

응용 프로그램내에서 제약

Page 6: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

기타 기능 트랜잭션 관리

정의된 트랜잭션에 대해 ACID 성질을 만족시키도록 관리

보안 다수의 사용자들에 대해 각기 다른 데이타에 대한 접근

권한을 부여하여 부당한 변경 , 자료의 유출 방지 소유자 (owner), DBA 만이 권한을 부여 시간에 따른 권한 부여

• 예 > 수강 신청 기간 중에만 학생들에게 수강 릴레이션에 대한 정보 갱신 권한을 허용하고 나머지 기간에는 검색만 허용

동시성 제어 회복

Page 7: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

7.2 DBMS 구성요소 질의 컴파일러 (query compiler) 내장 질의 전처리기 (embedded query preprocessor) 질의 실행기 (query evaluator) 저장 관리기 (storage manager) 트랜잭션 관리기 (transaction manager) 저장 구조 (storage structure)

Page 8: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 구성 요소 도해DBMS 구성 요소

Page 9: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

각 구성 요소의 역할 (1) 질의 컴파일러 (query compiler)

비절차적 질의어 (SQL) • 하나의 질의어에 대해 다양한 실행 절차가 가능• 가장 효율적인 저수준의 DBMS 내부 실행 절차 수립 질의 최적화 (Query Optimization)

내장 질의 전처리기 (embedded query preprocessor) 응용 프로그램에 내장된 질의어 호스트 언어의 내부적인

함수 호출로 변환 질의 컴파일러의 기능을 활용하여 효율적인 세부 절차 수립

질의 실행기 (query evaluator) 질의 컴파일러와 내장 질의 전처리기에서 만들어진 저수준의

실행 절차를 실행• 저장 관리기에 디스크 입출력을 요청

결과를 사용자나 응용 프로그램에 반환

Page 10: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

각 구성 요소의 역할 (2) 저장 관리기 (storage manager)

질의 실행기에서 요청되는 입출력 연산 수행 운영체제를 통하여 디스크 등의 저장 장치에 데이타를 관리 버퍼를 이용한 입출력 연산의 최소화

트랜잭션 관리기 (transaction manager) 트랜잭션의 ACID 성질을 만족하도록 관리 트랜잭션 상태 모니터링 , 동시성 제어 , 복구

저장 구조 (storage structure) 저장 데이타를 관리하기 위한 구조 데이타베이스 , 데이타 사전 , 로그 등

Page 11: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

저장 장치

DBMS 의 질의처리 과정

select 학생 . 학번From 학생 , 학과

where …질의

컴파일러

로그데이타 사전

데이타베이스

DBMS

질의어 입력학생 학과

질의 처리기

저장 관리기

실행 절차

입출력

결과

버퍼

트랜잭션관리기

요청

12

3

4

5

Monitoring

Page 12: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 질의처리 과정의 예 사용자의 입력질의

SELECT 학생 . 학번FROM 학생 , 학과WHERE 학생 . 학과번호 = 학과 . 학과번호 and 학과 . 학과명 =

“ 전산과” 가능한 실행 절차의 예 ( 일부 )

학생 . 학번 ( 학과 . 학과명 = “ 전산과” ( 학생 학생 . 학과번호 = 학과 . 학과번호 학과 ))

학생 . 학번 (( 학과 . 학과명 = “ 전산과” ( 학과 )) 학생 . 학과번호 = 학과 . 학과번호 학생 )

학생 . 학번 (( 학생 . 학번 , 학생 . 학과번호

( 학과 . 학과명 =“ 전산과” ( 학과 ))) 학생 . 학과번호 = 학과 . 학과번호 학생 )

질의 컴파일러가 첫째 실행 절차가 비용이 가장 적은 것으로 판단하였다고 가정

Page 13: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 질의처리 과정의 예 생성된 저수준의 실행 절차

Page 14: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 질의처리 과정의 예 실행 과정

저장 관리기로부터 학과 릴레이션과 학생 릴레이션에 대한 읽기 연산을 요청

질의 실행기는 두 릴레이션의 조인 연산을 실행하여 임시 릴레이션 (temp) 을 생성

• 주기억 장치 혹은 디스크에 저장 임시 릴레이션의 각 튜플들을 검사해서 학과가

전산과인 튜플에 대해 학번 속성만을 추출하여 그 결과 (result) 를 사용자에게 출력 .

Page 15: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 질의처리 과정의 예 트랜잭션 관리기의 역할

새로운 트랜잭션의 시작을 감지하고 이 트랜잭션에 고유번호( 예를 들어 T1) 를 부여

로그에 트랜잭션이 시작했다는 사실을 기록 트랜잭션이 쓰기 연산을 실행가게 되면 그 내용을 로그에 기록 트랜잭션이 실패하게 되면 즉시 복귀를 실행 저장 관리기가 읽기 연산이나 쓰기 연산을 실행하게 되면 2

단계 잠금 규약에 따라 적절한 잠금과 해제 연산을 실행 트랜잭션이 정상적으로 종료되면 이 사실을 로그에 다시 기록

최종 로그 기록

<T1 start><T1 , z, temp><T1 commit>

Page 16: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

DBMS 의 질의처리 과정의 예 질의가 응용 프로그램에 내장된 것일 경우

전처리기가 응용 프로그램내의 질의부분을 추출 질의 컴파일러에 최적의 실행 절차를 만들어내도록

요청 질의 컴파일러가 실행 절차를 생성 전처리기는 그 내용을 DBMS 가 제공하는 함수

호출문을 이용하여 응용 프로그램을 재구성 최종적으로 응용 프로그램을 컴파일하고 실행

프로그램을 생성 응용 프로그램을 실행

• 질의 컴파일러는 더 이상 필요 없고 질의 실행기만을 이용하여 질의를 실행

Page 17: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

7.3 물리적 저장구조 물리적 데이터베이스 화일 구조 클러스터링 인덱스

Page 18: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

물리적 데이타베이스

저장 매체의 관점에서 본 데이타베이스 형태 릴레이션과 튜플의 저장 형태 파일 시스템의 기능을 이용

운영체제(파일 시스템)

디스크

DBMS(저장 관리기)

데이타 요청

디스크 입출력

요청된 데이타

출력된 데이타

Page 19: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

화일 구조

DBMS 의 모든 데이타는 화일 형태로 저장

블록 (block) 페이지 (page) 주기억 장치와의 고정된

입출력 단위 512 byte ~

DBMS화일 시스템

릴레이션 ( 튜플 ) 과 파일 ( 레코드 ) 의 관계

Page 20: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

화일 구조 예 )

create table 학과 {학과번호 integer, 학과명 char(10), 대학명 char(10)}

하나의 튜플을 저장하는데 최소 24byte 가 필요 각 레코드는 화일의 블록 내에서 고정된 길이 혹은 가변적인 길이로 저장된다 . Char 가 아닌 varchar 의 경우 가변길이 문자열이 효율적

레코드 1 레코드 2 …

레코드 n

블록 내에 고정 길이로 저장된 레코드의 예

레코드 1 레코드 2 …

레코드 n

블록 내에 가변 길이로 저장된 레코드의 예

Page 21: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

클러스터링 (clustering) 순차 화일

레코드들의 순서에 특별한 의미가 없다 같이 쓰이는 경우가 많은 데이타들이 분산되어 있으면 탐색 시간이 오래 걸림

클러스터링 동시에 자주 사용되는 레코드들을 묶어서 (cluster

ing) 같은 , 혹은 인접한 블록에 저장 탐색 시간 (seek time) 을 줄임

Page 22: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

클러스터링 (clustering) 클러스터링이 안된 파일 구조

Page 23: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

클러스터링 (clustering) 단과대학별로 클러스터링이 된 화일구조

단과대학별 검색 이외의 검색에는 도움이 안됨 하나의 릴레이션 당 하나의 클러스터링만 가능

Page 24: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

인덱스 (index) 특정 조건을 만족하는 레코드 검색 방법

그 레코드가 파일 내의 어떤 블록 내에 위치하는가를 우선 알아야 함

미리 알지 못한다면 모든 블록들을 읽어 순차적으로 검색해서 원하는 레코드를 찾아야 함

인덱스는 원하는 레코드를 빠른 시간내에 찾을 수 있는 기번을 제공

• 예 ) 도서관에서 인덱스를 이용한 도서 검색

Page 25: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

인덱스 레코드에 대한 저장 위치를 별도로 기록한 구조

( 검색 키 , 주소 ) 쌍으로 구성• 검색 키 : 검색에 이용되는 값• 주소 : 레코드의 물리적 위치

검색 키로 지정된 값 이외의 속성으로 검색 시에는 도움이 안됨 별도의 인덱스 필요검색 키

주소

Page 26: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

인덱스 인덱스의 생성

대부분의 DBMS 에서는 기본 키에 대한 인덱스는 자동으로 생성

DBA 가 필요에 따라 질의어를 통해 인덱스를 생성 인덱스와 성능

검색에 대한 성능은 일반적으로 증가 삽입 , 삭제 , 수정에 대해서는 성능 저하가 발생할

수 있다 ( 인덱스의 변경 비용 ) 인덱스를 위한 저장 공간의 소모

인덱스의 자료 구조 다양한 용도의 자료 구조가 존재

• 속도 , 저장 공간 , 운용의 효율성 등을 고려 B+ 트리 인덱스 구조가 보편적으로 사용된다 .

Page 27: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

B+ 트리 인덱스 자료 구조

…… …… … ……

…… …… …… … ……

…… …… …… … …… ……

… ……

… …

B+ 트리

단말 노드는 검색키와 실제 저장된 데이타에 대한 주소를 기록

루트와 하위 노드들은 검색키와 하위 노드의

주소를 기록

단말 노드는 인근 형제 노드에 대한 포인터를 가진다노드 주소 검색키 노드 주소 검색키 …

검색키 레코드 주소리스트

… 형제 노드 주소

Page 28: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

B+ 트리 인덱스 자료 구조 B+ 트리의 성질

루트에서 단말 노드까지의 모든 경로의 길이는 같다 .

루트 노드는 최대 n 개의 자식 노드를 갖는다 .• n 을 차수라 한다

루트 노드와 말단 노드를 제외한 중간 노드들은 최소 n/2 개 최대 n 개의 자식 노드를 갖는다 .

각 노드의 검색 키 값은 정렬된다 .

각 검색 키 값에 대해 왼쪽의 포인터가 가리키는 자식 노드는 그 검색 키 값보다 작거나 같은 값을 가지고 , 오른쪽 포인터가 가르키는 자식 노드는 큰 값을 가진다 .

Page 29: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

B+ 트리 인덱스 자료 구조 차수가 3인 B+ 트리의 예

Page 30: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

B+ 트리 인덱스 자료 구조 루트 및 중간 노드 상세 구조

P1 ~ Pn은 자식 노드를 가리키는 포인터

key1 ~ keyn-1 은 검색키

key1 < key2 < …<keyn-1

Pi+1 이 가리키는 모든 하위 노드들의 검색키는 keyi 보다는 크고 keyi+

1보다는 작거나 같은 값을 갖는다 .

Page 31: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

B+ 트리 인덱스 자료 구조 B+ 트리를 이용한 성능 향상의 정도

레코드의 수가 많을 수록 인덱스를 이용한 검색의 성능은 인덱스가 없는 경우보다 월등함

예 ) 10,000개의 레코드• 인덱스가 없으면 최악의 경우 10,000번을 검색• 차수가 10인 B+-트리 인덱스가 존재하면

• 루트부터 4번의 노드 접근만이 필요함

Page 32: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

SQL 을 이용한 인덱스 정의 SQL 표준에는 포함되지 않으나 대부분의 DBMS에서 지원

CREATE INDEX 인덱스이름 ON 릴레이션이름 ( 속성 리스트 )

검색키의 리스트

DROP INDEX 인덱스이름

생성

삭제

Page 33: 7장 DBMS 구조mmlab.uos.ac.kr/Database/Presentation/제 … · PPT file · Web view · 2002-03-04제 7장 DBMS 구조 DBMS 기능 ... Lee and J.-y. Chang * Disk 운영 체제

Copyright 2002 by S.-g. Lee and J.-y. Chang

SQL 을 이용한 인덱스 정의 예 )

학과 릴레이션에서 학과명에 대한 인덱스 생성 명령은 다음과 같다 .

CREATE INDEX dept_index on 학과 ( 학과명 )

학과명의 값들이 학과 릴레이션에 유일하게 존재한다면

CREATE UNIQUE INDEX dept_index on 학과 ( 학과명 )

• 학과 릴레이션에 튜플을 삽입할 경우 여기서 생성된 인덱스를 이용하여 동일한 학과명이 이미 존재하는 가를 먼저 검색

• 만약 그렇다면 삽입을 하지 않고 에러 메시지를 내보냄• 학과명을 학과 릴레이션의 후보 키로 정의하는 효과