프로그래밍 기술/웹 검색 엔진 만들기

3. 3 DB 설계

언제나휴일 2017. 12. 6. 09:05
반응형

3. 3 DB 설계



 

 일반적으로 아키텍쳐링 단계에서 DB설계를 진행합니다. 여기에서도 시퀀스 다이어그램을 통해 DBMS에 관리해야 할 것들이 무엇인지를 분석하여 DB 설계합시다.

 

3.3.1 웹로봇에서 수집해야 할 대상

 

 웹 로봇에서는 관리자에 의해 Seed 사이트를 추가하면 이를 수집해야 할 대상으로 등록합니다. 그리고 웹 로봇은 주기적으로 수집해야 할 대상을 얻어와서 웹 페이지를 수집한 이후에 수집한 웹 페이지에 있는 링크를 다시 수집해야 할 대상으로 등록합니다. 여기에서는 Seed  사이트에서 특정 depth 내에 있는 웹 페이지를 수집할 수 있게 합시다.

 

 이와 같은 정보를 반영하여 CandidateTable을 만들기로 합시다. 테이블의 컬럼에는 사이트 주소와 Seed 사이트에서의 상대적 깊이가 있어야겠죠. 그리고 수집해야 할 대상들을 순차적으로 일련 번호를 부여하기로 할게요.

 

 [그림 3.16]처럼 Url Primary Key로 선정하였고 그림에는 나타나지 않았지만 SeqNo 속성으로 ID 사용을 true로 하고 Seed Step 1로 합시다.

 

 참고로 테이블 다이어그램은 Microsoft Visual Studio .NET에서 제공하는 기능입니다.

 

 

[그림 3.16] CandidateTable 다이어그램

[그림 3.16] CandidateTable 다이어그램

  

3.3.2 수집한 웹 페이지

 

 수집한 웹 페이지의 기본 정보를 저장하는 PostedUrlTable을 만들어 봅시다.

 

 테이블의 항목에는 웹 페이지 주소와 원래 요청한 페이지 주소, Seed 사이트에서의 상대적 깊이, 수집한 날짜, 수집한 내용, 제목을 추가합니다. 그리고 Primary Key로 웹 페이지 주소를 선정합시다.

 

 웹 페이지 주소와 원래 요청한 페이지 주소는 대부분 일치하지만 프레임 형태로 되어 있는 웹 페이지는 요청한 주소와 수집한 주소가 다를 수 있습니다.

 

 그리고 여러분께서 웹 로봇의 품질 수준을 높이길 원하시면 수집한 날짜가 오래되면 다시 수집 대상에 포함시키는 작업을 추가할 수 있습니다. 여기에서는 이 작업은 수행하지 않겠습니다.

 

[그림 3.17] PostedUrlTable 다이어그램

[그림 3.17] PostedUrlTable 다이어그램

 

 

3.3.3 수집한 웹 페이지에 있는 형태소

 

 수집한 웹 페이지의 내용은 형태소 분석기를 이용하여 포함하는 형태소를 분석합니다. 이들의 정보는 검색 요청이 오면 빠른 검색을 위해 사용하고 또한 랭커에 의해 순위화할 때도 사용합니다.

 

 먼저 수집한 웹 페이지에 존재하는 모든 형태소의 개수를 기억하는 MCountUrlTable을 만듭시다. 이 부분은 TF(페이지 내에 특정 형태소의 빈도수)값을 계산하기 위해 페이지 내의 형태소 개수를 기록해 놓는 것입니다.

 

 MCountUrlTable에는 웹 페이지 주소와 페이지 내의 형태소 개수를 기억하는 열을 추가합니다. 그리고 Url Primary Key로 설정하세요.

 

[그림 3.18] MCountUrlTable 다이어그램

[그림 3.18] MCountUrlTable 다이어그램 

 

 

 그리고 수집한 웹 페이지에 포함한 형태소를 기억하는 역 파일 테이블이 필요합니다. 이것을 통해 검색 요청이 오면 빠르게 특정 형태소를 포함하고 있는 웹 사이트를 찾는데 사용합니다.

 

 기본적으로 형태소 이름과 인덱스를 열로 하는 IndexInvFileTable에 이 정보를 저장합니다.

 

[그림 3.19] IndexInvFileTable 다이어그램

[그림 3.19] IndexInvFileTable 다이어그램

 

 그리고 새로운 형태소를 만나면 MTB_와 형태소의 일련 번호의 조합으로 테이블을 동적으로 추가합니다. 동적으로 생성한 테이블에는 웹 페이지 주소와 해당 형태소를 몇 번 참조하는지 개수를 저장합니다.

 

 이 정보도 형태소 분석기에서 분석한 내용을 역 파일 생성기에서 저장하며 랭커에 의해 TF값을 계산할 때 사용합니다. [그림 3.20]은 동적으로 생성하는 테이블의 프로토 타입입니다.

 

[그림 3.20] MTB_Prototype 다이어그램

[그림 3.20] MTB_Prototype 다이어그램

반응형