80 likes | 152 Views
제 4 장 요약화일 4.1 소개 텍스트 자료 검색 예 전자 사무실, 도서관, 법률, DNA 유전자탐색, 영상 탐색 … 매우 크고, 거의 수정되지 않는 특성 문헌 전체의 검색 -> 도치 -> 요약화일 요약화일: 부정확한 여과장치( filter) 개념에 기반 빠른 테스트, 허위 적중(드롭) 텍스트 화일에 순차적으로 저장된 문헌들의 “ 요약( signature) ” ( 해쉬-코드된 비트 패턴)을 저장. 장점 전체 스캐닝보다 빠르다, 공간 오버헤드가 작다 삽입이 용이하다: 추가-전용-연산 적합한 경우
E N D
제 4 장 요약화일 4.1 소개 • 텍스트 자료 검색 예 • 전자 사무실, 도서관, 법률, DNA 유전자탐색, 영상 탐색… • 매우 크고, 거의 수정되지 않는 특성 • 문헌 전체의 검색 -> 도치 -> 요약화일 • 요약화일: 부정확한 여과장치(filter) 개념에 기반 • 빠른 테스트, 허위 적중(드롭) • 텍스트 화일에 순차적으로 저장된 문헌들의 “요약(signature)” (해쉬-코드된 비트 패턴)을 저장
장점 • 전체 스캐닝보다 빠르다, 공간 오버헤드가 작다 • 삽입이 용이하다: 추가-전용-연산 • 적합한 경우 • 중간크기의 DB: 응답시간이 DB 항목수 N에 선형비례하므로 • 매우 큰 DB는 곤란: 허위 드롭 문제 (1로 채워진 요약) • 광디스크, 병렬기계, 분산된 문헌 DB
4.2 기본 개념 • 중첩기호법 사용 • 문헌을 “논리적 블록”으로 나눈다 • 각 단어별로 “단어 요약”을 만든다 (그림 4.1) • 총 F비트, 그 중 m비트는 1 (해쉬 함수), 나머지는 0 • 단어 요약 -OR연산-> 블록 요약 -연결-> 문헌 요약 • 순차요약화일 (SSF: Sequential Signature File) (그림 4.2) • 요약행렬의 각 열을 순차적으로 저장 • 속도 개선 방안 (큰 DB의 경우) • 압축: 행렬이 희소(sparse)한 경우 • 수직분할: 비트별로 다른 화일에 저장 -> 삽입 비용 개선 • 수평분할: 요약들을 그룹핑 (AND/OR) -> 탐색 개선 • 예) 실행길이 부호화(run length encoding) (그림 4.5)
4.3 압축 • 희소 구조 요약 생성 후 저장 전 압축 (그림 4.4) 4.3.1 비트-블럭 압축 • 좀 더 빠른 탐색, 블럭당 단어수(1의 개수)의 증가시 유리 • 부분1: 1의 존재여부, 부분2: 1의 개수, 부분3: 1의 위치 01011 | 10 0 0 | 00 11 10 00 (저장형태)
또다른 예) • 희소 벡터 0000 1110 0000 0010 1000 • 저장 형태 01011 | 110 0 0 | 000110 10 00 * 1의 개수가 많아져도 블럭을 분할할 필요가 없다 4.3.2 가변 비트-블럭 압축 • 비트-블럭 크기 bopt를 변경 가능 (그림 4.8) • 블럭 내 단어수 W(1의 개수와 비례)가 클수록, • bopt가 더 크고, 비트-블럭의 개수가 더 적다 • 부분1이 짧다 • 부분2가 짧다 • 부분3의 각 오프셋의 개수는 적고 오프셋의 크기는 크다
4.4 수직분할 • 주기억장치에 문헌요약의 꼭 필요한 부분만을 가져오기 위한 것 4.4.1 비트-슬라이스된 요약화일(BSSF) (그림4.11) • 각 비트 위치마다 하나의 서로 다른 화일 F를 이용 • 단어의 탐색: 단어와 비트 화일의 AND => m개의 화일 접근 • 결과: N(총 논리 블럭 개수)비트 중 몇 개가 “1”인 비트벡터 • 새 논리블럭의 삽입: 화일당 한번의 디스크 접근과 한번의 기록 4.4.3 프레임-슬라이스된 요약화일 (그림 4.12) • 각 단어의 요약 비트 중 “1”들이 인접하도록 강제 해쉬 • 두 개의 해쉬 함수 사용: 프레임 선택 & m비트 “1” 세팅 • 프레임 중심으로 저장: 각 프레임을 연속되는 디스크 블럭으로 • 한 단어 질의에 한 프레임만 검색: 단 한 번의 랜덤 액세스
4.5 수직 분할과 압축 • 매우 희소한 요약행렬을 생성하고, 비트-슬라이스 형태로 저장 4.5.1 압축된 비트 슬라이스 • 비트 슬라이스 방식(SSF보다는 빠른)의 개선 여지 • 탐색 시 m개의 화일 검색, 삽입 시 너무 많은 디스크 액세스 • 개선안: m1로 하고 (매우 희소), 압축하여 저장 (그림 4.14) • S개(비트 슬라이스 수)슬롯의 해쉬 테이블 사용 (그림 4.15) • 논리 블럭 단위로 문헌을 분할하지 않아도 된다 • 비트 화일에 포인터(1의 위치 대신)를 저장함으로써 따로 포인터 화일을 두지 않을 수 있다 • 압축된 비트화일(=포스팅 화일) • Bp바이트 크기의 포스팅 버켓들로 구성 (포인터 포함) • 역화일과의 차이: 실제 단어는 어디에도 저장되지 않는다
4.6 수평분할 • 비트 슬라이스에서의 순차적 검색을 회피 • 비트별 해쉬 대신 문헌 요약별 해쉬, 혹은 B트리 등 사용 4.6.1 자료 독립적인 경우 (Gustafson의 방법) • 레코드=문헌, 속성=문헌을 묘사하는 키워드 • 키워드 해쉬 함수 h(w)가 모든 키워드를 0~15로 해쉬 • 레코드 요약은 6개의 비트가 1인 총 16비트 • comb(16, 6) = 8,008 가지 • 레코드 해쉬 함수: C(p1, 1) + C(p2, 2) + … + C(P6, 6) • p: 1의 위치 • 한 단어 질의 : C(15,5)=3,003개의 슬롯 접촉 • 두 단어 질의: C(14,4)=1,001개의 슬롯 접촉 • 예: 0100111000100010