객체 관계 데이터베이스는 관계형 데이터베이스에 객체 지향 데이터베이스의 개념을 추가한 데이터베이스이다. 객체 지향 데이터베이스 관리 시스템을 위한 표준 모델로는 ODMG 2.0 표준이 있고 객체 관계 데이터베이스를 위한 데이터 언어 표준으로는 ISO에서 제시한 SQL3가 있다.
090 고급 데이터베이스
분산 데이터베이스(Distributed Databases)
논리적으로는 같은 시스템에 속하지만 물리적으로는 컴퓨터 네트워크를 통해 분산되어 있는 데이터베이스이다.
분산 데이터베이스 시스템의 구성 요소
분산 처리기:자체적으로 처리 능력을 가지며 지리적으로 분산되어 있는 컴퓨터 시스템을 말한다.
분산 데이터베이스:지리적으로 분산되어 있는 데이터베이스로서 해당 지역의 특성에 맞게 데이터베이스가 구성된다.
통신 네트워크:분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 네트워크를 말한다.
분산 데이터베이스의 목표
위치 투명성(Location Transparency):실제 위치를 알 필요가 없고 데이터베이스의 논리적인 명칭만으로 접근할 수 있다.
중복 투명성(Replication Transparency):동일한 데이터가 여러 곳에 중복되더라도 마치 하나의 데이터만 존재하는 것처럼 활용할 수가 있다.
병행 투명성(Concurrency Transparency):다수의 트랜잭션들이 동시에 실행되더라도 그 트랜잭션들의 수행 결과는 영향X
장애 투명성(Failure Transparency):트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션은 정확하게 수행한다.
분산 데이터베이스의 장ㆍ단점
장점
단점
지역 자치성이 높다.
DBMS가 수행할 기능이 복잡하다
데이터의 공유성이 향상된다.
데이터베이스 설계가 어렵다
분산 제어가 가능하다.
소프트웨어 개발 비용이 증가한다.
시스템 성능이 향상된다.
처리 비용이 증가한다.
효율성 및 융통성이 높다.
잠재적 오류가 증가한다.
신뢰성 및 가용성이 높다.
점증적 시스템 용량 확장이 용이하다.
멀티미디어 데이터베이스(Multimedia Database)
텍스트, 그래픽, 정지 화상, 동영상, 음성 등이 복합적으로 구성된 데이터베이스이다.
멀티미디어 데이터베이스의 특성
데이터가 일반적으로 대용량이다.
정형화된 데이터가 아니고 검색 대상의 내용이 데이터의 중간에 있을 수 있으므로 미디어별로 별도의 검색 방법이 필요하다.
비정형 데이터이기 때문에 데이터의 구조가 복잡하고 관계를 구성하기가 어렵다.
멀티미디어 데이터베이스 구축 방법
파일 기반 기법
DBMS를 사용하지 않으며 단순한 검색 위주의 VOD(Video On Demand)등에 이용된다.
데이터의 동시 접근이 어렵고 회복 기능 등의 지원이 빈약하다.
관계형 데이터베이스 기반 기법
텍스트 데이터를 저장하기 위해서는 CLOB(Character Large Object) 데이터 타입을 이용하고, 이미지, 비디오, 오디오 등을 이용하기 위해서는 BLOB(Binary Large Object) 데이터 타입을 이용한다.
일반적으로 정형화된 데이터는 관계형 데이터베이스의 데이터 타입을 이용하고 비정형화된 데이터는 파일로 저장한다.
객체 지향 데이터베이스 기반 기법
멀티미디어를 가장 잘 표현할 수 있는 기법이다.
사용자 정의 클래스, 사용자 정의 메소드를 이용하여 미디어별로 별도의 클래스를 정의할 수 있다.
객체 관계형 데이터베이스 기반 기법
관계형 데이터베이스의 CLOB, BLOB 데이터 타입을 이용하거나 사용자 정의 클래스, 사용자 정의 메소드를 이용하여 미디어별 타입을 정의해서 사용할 수 있다.
주기억장치 데이터베이스(Main Memory Database)
데이터베이스 전체를 주기억장치에 상주시킨 후 데이터베이스 연산을 수행하는 시스템으로, 디스크 입ㆍ출력이 발생하지 않는다.
주기억 데이터베이스의 특성
모든 연산이 주기억장치에서 수행되므로 디스크 입ㆍ출력이 줄어들어 빠른 연산이 가능하다.
시스테에 문제가 생겼을 경우 복수시켜 주는 회복 작업의 구현이 어렵다.
주기억장치의 구입 비용이 많이 든다.
데이터 웨어하우스(Data Warehouse)
급증하는 다량의 데이터를 효과적으로 분석하여 정보화하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스이다.
동기
전사적인 데이터 통합을 통한 정보의 효율적인 분석이 필요하게 되었고, 신속 정확한 의사결정으로 경쟁력을 확보하기 위하여 의사결정용 데이터베이스의 필요성이 대두되었기 때문이다.
다양한 원본 데이터베이스로부터 정제되어 추출된 데이터만을 저장하고 필요한 인덱스를 생성한다. 이후, 데이터의 다차원 분석 도구로 데이터 웨어하우스를 분석하여 효율적인 의사결정에 필요한 자료를 얻는다.
장ㆍ단점
장점
단점
높은 투자 수익률을 얻을 수 있다.
타사에 비하여 경쟁우위를 획득할 수 있다.
의사 결정자의 생산성을 향상시킬 수 있다.
기존 시스템과 명확한 역할 설정을 하지 못하면 혼란을 초래할 수 있다.
추출 기준에 맞지 않는 데이터의 입력, 갱신, 삭제가 발생하면 불일치 문제가 발생할 수 있다.
의사결정을 위한 충분한 데이터가 확보되지 않으면 정확한 결과를 도출할 수 없다.
과다한 자원을 사용하게 되고 유지 보수가 어렵다.
데이터 마이닝(Data Mining)
Data Warehouse에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법이다.
데이터 마이닝 기법
연관(Association):대용량의 트랜잭션 데이터로부터 “A이면 B이다”형식의 연관 관계를 발견하기 위한 방법이다.
연속(Sequence):개인별 트랜잭션 이력 데이터를 시계열적으로 분석(일정 기간 동안 시간의 흐름에 따라 데이터를 분석하는 것)하여 트랜잭션의 향후 발생 가능성을 예측하는 방법이다.
분류(Classification):다른 그룹과의 차별적인 특성을 도출하기 위한 방법이다.
클러스터링(Clustering):상호간에 유사한 특성을 갖는 데이터들을 집단화하는 방법이다.
특성화(Characterization):데이터 집합의 일반적인 특성을 분석하는 것으로 데이터의 요약 과정을 통해 특성을 발견하는 방법이다.
패턴 분석(Pattern Analysis):데이터베이스 내의 명시된 패턴을 찾는 방법이다.
경향 분석(Trend Analysis):시계열 데이터들이 시간 축으로 변화하는 전개과정을 특성화하여 동적으로 변화하는 데이터를 분석하는 방법이다.
키값을 난수로 변환하여 필요한 주소를 산출하는 직접 주소법. 하나의 문자열을 대표하는 일정한 짧은 길이의 값이나 키로 변환된 해시 값을 산출하는 알고리듬을 해시 함수(hash function)라고 한다. 해싱은 해시 함수를 이용하여 데이터베이스에서 자료를 색인하고 신속하게 자료를 검색하는데 사용되며, 전자 서명 알고리듬에서 암호화 및 복호화에도 사용된다 - 참조 다음백과
개요
해싱은 hash Table이라는 기억공간을 할당하고, 해시 함수(Hash Function)를 이용하여 레코드 키에 대한 Hash Table 내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식이다.
해싱은 DAM(직접 접근) 파일을 구성할 때 사용되며, 접근 속도는 빠르나 기억공간이 많이 요구된다.
검색 속도가 가장 빠르다.
삽입, 삭제 작업의 빈도가 많을 때 유리한 방식이다.
해시 테이블(Hash Table, 해시표)
버킷(Bucket):하나의 주소를 갖는 파일의 한 구역을 의미하며, 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미함
슬롯(Slot):한 개의 레코드를 저장할 수 있는 공간으로, n개의 슬롯이 모여 하나의 버킷을 형성함
Collision(충돌 현상):서로 다른 두 개 이상의 레코드가 같은 주소를 갖는 현상
Synonym:같은 Home Address를 갖는 레코드들의 집합
Overflow:계산된 Home Address의 Bucket을 구성하는 Slot이 여러 개일 때 Collision은 발생해도 Overflow는 발생하지 않을 수 있다.
해싱은 하나의 문자열을 원래의 것을 상징하는 더 짧은 길이의 값이나 키로 변환하는 것이다. 짧은 해시 키를 사용하여 항목을 찾으면 원래의 값을 이용하여 찾는 것보다 더 빠르기 때문에, 해싱은 데이터베이스 내의 항목들을 색인하고 검색하는데 사용된다.
간단한 예제로서, 데이터베이스 내에 있는 사람들의 그룹은 다음과 같이 배열될 수 있다.
Abernathy, Sara
Epperdingle, Roscoe
Moore, Wilfred
Smith, David
.
이러한 이름들 각각은 데이터베이스 내에서 개인들 데이터의 키가 될 수 있다. 데이터베이스 검색 수법은 일치하는 것이 먼저 발견될 때까지 각 이름들을 글자단위로 확인하기 시작해야만 한다. 그러나, 만약 이름들 각각이 해시 된다면, 각 이름별로 4자리의 고유한 키 를 생성하는 것이 가능해진다. 예를 들면 다음과 같다.
7864 Abernathy, Sara
9802 Epperdingle, Roscoe
1990 Moore, Wilfred
8822 Smith, David
어떤 이름을 찾는 작업은 먼저 해시 값을 계산하고, 그 다음에 그 값을 사용하여 일치여부를 비교하는 작업으로 구성된다. 일반적으로 이렇게 하는 것은, 각 문자가 26개의 경우를 갖는 예측할 수 없는 값의 길이에서 찾는 것보다, 각각이 오직 9개의 경우를 갖는 네 자리 수에서 일치하는 것을 찾는 것이 더 빠르다.
해싱 알고리즘을 해시 함수라고 부른다. 해싱은 빠른 속도의 데이터 검색 외에도, 전자서명을 암호화하고 복호화하는 데에도 사용된다. 전자서명은 해시 함수를 이용하여 변환된 다음, 해시 값과 전자서명이 별도로 전송된다. 수신자는 송신자가 사용한 해시함수와 같은 것을 사용하여, 서명으로부터 요약 메시지를 뽑아내어 그것을 이미 수신한 요약 메시지와 비교한다. 그 비교 결과는 같아야만 전자서명이 유효한 것이다.
해시 함수는 원래의 값이나 키를 색인하는데 사용되며, 그 값이 관련된 데이터가 검색될 때마다 다시 사용된다. 그러나, 해싱은 항상 한 쪽 방향으로만 연산된다. 따라서, 해시된 값을 분석함으로써 해시 함수를 추출해내는 역방향 공학은 필요가 없다. 사실, 이상적인 해시함수는 그러한 분석에 의해 추론할 수 없어야 한다. 또한, 우수한 해시 함수는 서로 다른 두 개의 입력에 대해, 동일한 해시 값을 생산해서는 안된다. 만약 그렇게 되면, 충돌이 생긴다. 충돌 위험성이 매우 적은 해시 함수라야 훌륭한 해시 함수로 평가된다.
다음에 나열한 것들은, 그 동안 사용되어 온 비교적 단순한 해시 함수들이다.
1) 나눗셈-나머지 방식 : 먼저 테이블 내에 들어갈 항목의 개수를 추정한다. 그 숫자는 원래의 값이나 키에서 몫과 나머지를 추출해 내기 위해 각각을 나누는 제수로 사용된다. 계산의 나머지가 해시 값이 된다 .
2) 접기 : 이 방식은 원래의 값을 여러 부분으로 나누어, 그 부분들을 함께 더하고 나서, 마지막 네 자리를 해시 값이나 키로 삼는 것이다.
3) 기수변환 : 값이나 키가 디지털이라면, 다른 순서의 숫자열을 만들도록 기수를 변경할 수 있다. 즉, 10진수의 키를 16진수의 키로 변경할 수 있는 것이다. 변경 후, 해시 값의 길이를 일정하게 유지하기 위해 상위 자리수의 일부는 버려질 수 있다.
4) 자리수 재배열 : 이것은 단순히 세 번째부터 여섯 번째 자리까지 등과 같이 원래 값이나 키의 일부를 취하여 그 순서를 역으로 한 다음, 그 것을 해시 값이나 키로 사용하는 것이다.
데이터베이스 저장이나 검색에 잘 적용되는 해시 함수는 오히려 암호화나 에러검출 목적으로는 잘 듣지 않을 수도 있다. 암호화에 사용되는 잘 알려진 해시 함수들이 몇 개 있다. 이러한 것들에는 전자서명을 요약 메시지라고 불리는 더 짧은 값으로 바꾸는 데 사용되는 요약 메시지 해시 함수 MD2, MD4, MD5 등과, 더 큰 요약 메시지 를 만드는 표준 알고리즘인 SHA 등이 포함된다.
DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어이다. 번역한 결과가 데이터 사전(Data-Dictionary)이라는 특별한 파일에 여러 개의 테이블로 저장된다. 데이터정의 언어의 기능 외부 스키마 명세 정의 데이터베이스의 논리적 데이터 구조아 물리적 데이터 구조의 정의 및 수정 논리적 데이터 구조와 물리적 데이터구조 간의 사상 정의 스키마에 사용되는 제약조건에 대한 명세 정의 데이터의 물리적 순서 규정 데이터 조작 언어(DML : Data Manipulation Language) = 서브 언어 사용자로 하여금 데이터를 처리할 수 있게 하는 도구로서 사용자(응용 프로그램)와 DBMS 간의 인터페이스를 제공한다. 응용 프로그램을 통하여 사용자가 DB의 데이터를 실직적으로 조작할 수 있도록 하기 위해 C, COBOL 등의 호스트 언어에 DB 기능을 추가시켜 만든 언어이다. 대표적인 데이터 조작어(DML)에는 질의어가 있으며, 질의어는 터미널에서 주로 이용하는 비절차적(Non Procedural)데이터 언어이다. 데이터 제어 언어(DCL : Data Control Language) 무결성, 보안 및 권한 제어, 회복 등을 하기 위한 언어이다. 데이터를 보호하고 데이터를 관리하는 목적으로 사용된다. 데이터 제어 언어의 기능 불법적인 사용자로부터 데이터를 보호하기 위한 데이터 보안(Security) 데이터의 정확성을 위한 무결성(Intergrity) 유지 시스템 장애에 대비한 데이터 회복과 병행수해 제어