KR101224800B1 - 정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법 - Google Patents

정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법 Download PDF

Info

Publication number
KR101224800B1
KR101224800B1 KR1020060012550A KR20060012550A KR101224800B1 KR 101224800 B1 KR101224800 B1 KR 101224800B1 KR 1020060012550 A KR1020060012550 A KR 1020060012550A KR 20060012550 A KR20060012550 A KR 20060012550A KR 101224800 B1 KR101224800 B1 KR 101224800B1
Authority
KR
South Korea
Prior art keywords
database
information
data structure
crawler
programming interface
Prior art date
Application number
KR1020060012550A
Other languages
English (en)
Other versions
KR20060105438A (ko
Inventor
아르시시 씨 카파디아
하워드 엠. 크로우
죠나 에스 버크
로버트 디. 파크
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060105438A publication Critical patent/KR20060105438A/ko
Application granted granted Critical
Publication of KR101224800B1 publication Critical patent/KR101224800B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 시스템은 검색 엔진이 마이크로소프트 엑셀 문서 등의 다양한 데이터베이스와 애플리케이션 문서와 통신하기 위한 특정한 프로토콜을 알 필요없이, 다양한 데이터베이스 및 애플리케이션 문서에서 정보의 일부를 검색하는 것을 용이하게 한다. 크롤러가 데이터베이스에 접속하기 위해 사용해야 하는 가능성 있는 수많은 프로토콜이 있음에도 불구하고, 시스템은 데이터베이스 및 애플리케이션 문서의 정보의 일부를 액세스하는 방법을 통합하는 통합 애플리케이션 프로그래밍 인터페이스를 포함한다.
데이터베이스, API, 검색, 프로토콜

Description

정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법{CRAWLING DATABASE FOR INFOMATION}
도 1은 애플리케이션 문서 및 데이터베이스를 검색하기에 관한 다양한 문제를 보여주는 종래의 시스템을 예시한 블록도.
도 2는 정보의 일부를 찾기 위해 데이터베이스 및 애플리케이션 문서를 크롤링하는 예시적인 시스템을 예시한 블록도.
도 3은 데이터베이스 및 애플리케이션 문서에 저장된 정보의 일부에 대한 구조를 한데 정의한 항목 그룹을 서술하는 일반화된 카테고리를 예시한 클라우드(cloud) 다이어그램.
도 4a 내지 도 4g는 본 발명의 일 실시예에 따라, 데이터베이스 및 애플리케이션 문서의 정보를 크롤링하는 프로세스를 예시한 프로세스 다이어그램.
<도면의 주요 부분에 대한 부호의 설명>
102: 검색 엔진
104: 인터넷
106: 하이퍼텍스트 문서
108: 인트라넷
110: 데이터베이스
200: 크롤러
본 발명은 일반적으로 검색에 관한 것이며, 보다 구체적으로는 검색 엔진에 의한 키워드 매칭(matches)을 향상시키기 위해, 애플리케이션 문서 및 데이터베이스 등의 다양한 정보원을 크롤링하는 것에 관한 것이다.
인터넷(104)은 서로 통신하기 위해 프로토콜 중 TCP/IP 스위트(suite)를 사용하는 게이트웨이와 네트워크들의 전 세계적인 집합체이다. 인터넷(104)의 심장부에는 주요 노드들 또는 호스트 컴퓨터들 간의 고속 데이터 통신 링크들의 백본이 있고, 백본은 데이터와 메시지를 경로 설정하는 수천 개의 상업용, 정부용, 교육용 등의 컴퓨터 시스템으로 구성된다. 하나 이상의 인터넷(104) 노드는 단일 컴퓨터 또는 네트워크가 인터넷을 제어하지 않기 때문에, 총체적으로 인터넷(204)을 위험에 빠뜨리거나 인터넷(204)상에서의 통신을 정지시키지 않고 오프라인으로 진행될 수 있다. 인터넷(104)의 기원은 핵공격이 발생할 경우 통신을 용이하게 하기 위해 1969년 미국 국방부(Department of Defense)에 의해 구축된 ARPANET이라 불리는 분산형 네트워크(decentralized network)이었다. 현재, 인터넷(104)은 이메일 및 WWW(World Wide Web) 등의 광범위한 서비스를 사용자에게 제공한다.
수많은 세트의 서로 연결된 하이퍼텍스트 문서(106)가 전 세계의 모든 HTTP 서버에 존재한다. 웹 페이지라 불리는 WWW(World Wide Web)을 포함하는 이런 문서 는 HTML(hypertext markup language)로 기록되고, 파일이 액세스 되는 특정 기계 및 경로 이름을 명시하는 URLs(uniform resource locators)에 의해 식별되며, HTTP(hypertext transfer protocol)을 통해 서버에서 최종 사용자에게로 전송된다. 이런 웹 페이지는 사용자가 키워드로 검색할 수 있도록 이용가능한 웹 페이지의 리스트를 수집하고, 데이터베이스에 이런 리스트를 저장하는 검색 엔진(102)에 의해 검색될 수 있다. 검색 엔진의 더 오랜 예로서 Lycos 및 Excite가 있다. 검색 엔진의 보다 최근 예로서 Google 및 A9가 있다.
인터넷(104)상에서 웹 페이지를 검색하기는 쉬운데, 왜냐하면 웹 페이지의 다수가 공통 언어, 즉 HTML을 사용하여 기록되어 있고, 협정된 지정 URL에 의해 액세스될 수 있고, 공통 프로토콜, 즉 HTTP을 통해 전달될 수 있기 때문이다. 인트라넷(108) 상에서 검색하기는 인터넷(104)상에서는 인식되지 않는 문제들을 전형적으로 야기한다. 인트라넷(108)은 TCP/IP 등의 인터넷 프로토콜에 기초한 구내망(private network)이지만, 회사 또는 조직 내의 정보 관리를 위해 설계된 것이다. 이들을 사용하여 문서 배포, 소프트웨어 배포, 데이터베이스로의 액세스, 및 훈련(training) 등의 서비스를 시행한다. 인트라넷(108)이 이렇게 불리는 것은 이것이 WWW(World Wide Web)처럼 보이고 유사 기술에 기초하고 있기 때문이지만, 인트라넷은 엄밀히 조직 내에 속한 것이며 본래 인터넷에 연결되지는 않는다. 인트라넷(108) 내에서 이용가능하게 된 웹 페이지는 종래의 검색 엔진(102)에 의해 검색될 수 있다. 전형적으로, 인트라넷(108)에 연결된 문서(112) 등의 많은 문서는 하이퍼텍스트 등의 공통 언어를 사용하여 작성되지 않고, 마이크로소프트 워드 문서, 마이크로소프트 엑셀 등의 보다 특정한 포맷으로 작성되어 있다. 검색 엔진(102) 등의 종래의 검색 엔진은 하이퍼텍스트 등의 공통 언어로 작성되지 않은 문서(112) 내에서 정보의 일부(pieces)를 검색할 수 없다.
유사한 문제가 데이터베이스(110) 등의 데이터베이스를 검색할 때 발생한다. 데이터베이스에서, 데이터는 웹 페이지 등의 문서에 연관되지 않는다. 그러나 인트라넷(108)의 사용자에게 드러낼 필요가 있는 데이터베이스 내에 저장된 정보의 원하는 일부가 존재한다. 불행히도, 데이터베이스(110)는 검색하도록 잘 조직화된 구조를 가지지 않았다. 데이터베이스(110)를 검색하는 것에 관한 또 다른 문제점은 데이터베이스(110)를 검색하는데 사용될 수 있는 여러 프로토콜이 존재한다는 것이다. 예를 들어, 검색 엔진(102)은 데이터를 액세스하기 위해 질의 언어를 사용할 수 있다. 그러나, 전형적으로 데이터베이스(110) 등의 데이터베이스는 직접 액세스 되지 않지만, 대신에 검색 엔진(102)은 다양한 세트의 애플리케이션 프로그래밍 인터페이스(API:Application programming interfaces)를 거쳐야 한다. 검색 엔진(102)이 데이터를 추출할 웹 페이지와 통신하기 위한 단 하나의 프로토콜, 즉 HTTP를 알아야 하는 인터넷(104)과는 달리, 인트라넷(108)을 검색하는 데에는 데이터베이스(110) 등의 데이터베이스, 또는 애플리케이션 문서(112)로부터 정보의 일부를 추출하는데 적절할 수 있거나 않을 수 있는 다수의 프로토콜을 검색 엔진(102)이 알고 있을 것을 요구할 수 있다.
이런 문제 및 다른 문제가 인트라넷 검색의 관점에서 상기에 서술되어 있지만, 다른 데이터베이스 검색 및 문서 검색이 동일하지는 않지만, 유사한 문제를 종 종 인트라넷에 연관된 동질 환경에서 가질 것이다. 사용자의 인트라넷 질의에 효과적으로 응답하는 문제에 관한 해법없이는, 사용자는 정보의 저장된 일부를 재현할 수 있는 원하는 컴퓨팅 경험(experience)을 마련해 줄 검색 엔진(102)을 결국에는 더 이상 신뢰할 수 없게 되고, 검색 엔진에 대한 수요가 시장에서 감소할 것이다. 그러므로, 기존 시스템에 연관된 상기 문제 또는 다른 문제를 일으키지 않거나 감소시키면서, 인트라넷 질의에 응답하는 시스템, 방법, 및 컴퓨터-판독가능 매체를 필요로 한다.
본 발명에 따르면, 데이터베이스 및 애플리케이션 문서를 크롤링하는 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 시스템 형태는 정보를 찾기 위해 다양한 데이터베이스를 탐색하는 시스템을 포함한다. 시스템은 탐색될 데이터베이스 세트를 열거하기 위해 컴퓨터-판독가능 매체에 저장된 통합 데이터 구조, 및 반환해야할 정보를 제한하는 필터를 포함한다. 시스템은 또한 그 데이터베이스 세트와 통신하기 위한 프로토콜들을 어느 한 프로토콜로 변환하는, 또 다른 컴퓨터-판독가능 매체에 저장된, 통합 애플리케이션 프로그래밍 인터페이스를 포함한다. 시스템은 또한 데이터베이스 세트에 있는 각 데이터베이스에 특정한 프로토콜을 모른 채, 상기 어느 한 프로토콜을 사용하여 데이터베이스 세트의 정보 중 원하는 일부를 탐색하기 위해 통합 데이터 구조에 서술된 메소드를 호출하는 크롤러(crawler)를 포함한다.
본 발명의 다른 양상에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 다 양한 데이터베이스의 정보의 일부를 크롤링하는 프로세스를 향상시키기 위한 데이터 구조가 저장된 컴퓨터-판독가능 매체를 포함한다. 이 데이터 구조는 크롤러가 탐색하려는 데이터베이스를 나타내는 시스템 필드, 데이터베이스에 저장된 정보의 일부에 부여될(imparted) 의미를 나타내는 엔티티 필드, 데이터베이스에서 엔티티 필드의 인스턴스를 찾아내는 논리 중 호출가능한 일부를 나타내는 메소드, 소정 값으로 채워질 변수를 나타내는 매개변수 필드, 및 메소드의 호출을 통해 반환될 정보의 일부를 제한하는 주석(annotation)을 나타내는 필터 필드를 포함한다.
본 발명의 다른 양상에 따르면, 본 발명의 방법 형태는 정보 중 원하는 일부를 찾기 위해 데이터베이스 및 애플리케이션 문서를 탐색하는 컴퓨터-구현 방법을 포함한다. 본 방법은 하나 이상의 필터를 가진 파인더 메소드(finder method)를 호출함으로써 각 데이터베이스 아래의 각 엔티티를 탐색하기 위해 통합 데이터 구조를 액세스하여 정보 중 원하는 일부를 크롤링하는 단계를 포함한다. 각 필터는 반환될 정보의 일부를 제한한다. 본 방법은 또한 사용자가 하이퍼링크를 선택할 때 선택한 것을 수신하는 단계를 포함한다. 하이퍼링크는 소정의 식별자에 연관되어 그 식별자에 연관된 엔티티에 속하는 하나 이상의 데이터베이스 내의 정보의 일부를 획득한다.
이런 본 발명의 상기 양상 및 부수적인 이점 중 다수는 이후의 상세한 설명을 참조하여 첨부된 도면에 관련하여 취해질 때, 보다 이해하기 쉽게 되고 보다 쉽게 인식될 것이다.
인트라넷에 접속된 비즈니스 시스템을 검색하는 한 시스템이 도 2에 예시되어 있다. 이 시스템은 크롤러(200)가 비즈니스 시스템에 저장된 정보의 일부를 찾도록 하는 협력하는 소프트웨어 애플리케이션의 일부를 가진 네트워크화된 컴퓨팅 환경이며, 비즈니스 시스템은 데이터베이스(208 내지 212) 및 애플리케이션 문서(도시 생략)로 형성된다. 크롤러(200)는 정보 중 원하는 일부를 찾기 위해 인트라넷을 검색하는 자동화된 애플리케이션이다. 크롤러(200)는 데이터베이스(208 내지 212)의 키 필드와 내용-관련 정보를 검색 엔진(도시 생략)에 의한 매칭을 검사하는 방식으로 인덱스화한다.
도 2에 예시된 시스템은 검색 엔진이 마이크로소프트 엑셀 문서 등의 애플리케이션 문서 및 데이터베이스(208 내지 212)와 통신하기 위한 특정 프로토콜을 알 필요 없이, 데이터베이스(208 내지 212)에서 정보의 일부를 검색할 수 있도록 하는 설비를 제공한다. 크롤러(200)가 데이터베이스(208 내지 212)에 접속하기 위해 사용해야 하는 가능성 있는 여러 프로토콜이 있음에도 불구하고, 본 발명의 다양한 실시예에서는 데이터베이스(208 내지 212) 및 애플리케이션 문서의 정보의 일부를 액세스하는 방법을 통합하는 통합 애플리케이션 프로그래밍 인터페이스(204)를 포함한다. 통합 애플리케이션 프로그래밍 인터페이스(204)는 데이터베이스(208 내지 212) 및 애플리케이션 문서와 통신하기 위한 특정 프로토콜을 모른 채, 크롤러(200)가 데이터베이스(208 내지 212)와 통신하도록 하는 변환(translation)을 제공한다. 데이터베이스(208 내지 212) 등의 많은 데이터베이스는 데이터베이스에 질의하고, 데이터베이스를 갱신 및 관리하는데 사용되는 종래의 데이터베이스 2차 언 어인 구조화된 질의 언어를 이해한다. 그러나, 데이터베이스(208 내지 212)는 전형적으로 데이터베이스(208 내지 212)로부터의 정보 중 원하는 일부를 획득하기 위해 구조화된 질의 언어를 무색하게 할 수 있는 비즈니스 논리를 가진다. 그러므로, 각 데이터베이스(208 내지 212)는 특정 데이터베이스에 특정한 커스터마이징될 수 있는 프로토콜을 가져, 정보의 일부를 찾기 위해 그 특정 데이터베이스에 질의한다. 많은 소프트웨어 애플리케이션은 애플리케이션 문서를 크롤러(200)에게 보이지 않거나 액세스 될 수 없는 내장형 데이터베이스에 저장한다. 소프트웨어 애플리케이션의 이런 내장형 데이터베이스는 적절한 프로토콜을 따를 경우 액세스될 수 있다. 본 발명의 다양한 실시예에 의해서, 사용자는 키워드를 검색 엔진에 입력하게 되고, 크롤러(200)를 통해 데이터베이스(208 내지 212)의 정보 중 원하는 일부가 발견될 수 있고, 정보의 그 부분이 사용자에게 검색 결과로서 반환될 수 있는 방식으로 인덱스화될 수 있다.
통합 데이터 구조(202)와 함께 통합 애플리케이션 프로그래밍 인터페이스(204)에 의해, 크롤러(200)는 데이터베이스(208 내지 212) 및 애플리케이션 문서와 통신하기 위한 특정한 프로토콜을 모른 채, 데이터베이스(208 내지 212)와 통신하게 된다. 설사 데이터베이스(208 내지 212)의 프로토콜을 알고 있더라도, 데이터베이스(208 내지 212) 내의 정보 중 원하는 일부를 획득하기 위해 데이터베이스(208 내지 212)의 특정 애플리케이션 프로그래밍 인터페이스(208a 내지 212a) 또한 알고 있어야 한다. 통합 데이터 구조(202)와 함께 통합 애플리케이션 프로그래밍 인터페이스(204)로 인해 크롤러(200)는 정보 중 원하는 일부를 획득하기 위해 특정 프로토콜뿐 아니라 특정 애플리케이션 프로그래밍 인터페이스(208a 내지 212a)에 대해 알 필요가 없다.
당업자에 의해 인식될 수 있는 바와 같이, 데이터베이스(208 내지 212)에 저장된 정보의 일부는 매우 큰 용량일 수 있으며, 테라바이트에 이른다. 데이터베이스(208 내지 212)가 가공한 만한 속도로 다양한 정보의 일부를 처리할 수 있더라도, 다양한 정보의 일부는 매우 빨리 커질 수 있다. 크롤러(200)는 데이터베이스(208 내지 212)의 정보의 일부를 인덱스화하기 위해 얼마나 많이 탐색할 것인지에 관련해서 제한되는 것이 바람직하다. 관심 밖에 있는 레거시 데이터(legacy data) 또는 이력 데이터는 크롤러(200)의 탐색에서 제외되는 것이 바람직하다. 본 발명의 다양한 실시예에서는 필터 또는 주석을 통합 데이터 구조(202)에 포함하고, 이런 필터 또는 주석은 크롤러(200)의 탐색에 대해 다양한 제약사항을 제공한다. 크롤러(200)가 통합 애플리케이션 프로그래밍 인터페이스(204)를 호출할 때, 통합 애플리케이션 프로그래밍 인터페이스(204)는 제약사항을 반영하기 위해 통합 데이터 구조(202)를 참조하며, 이로써 데이터베이스(208 내지 212) 및 애플리케이션 문서의 정보의 일부를 탐색하게 된다. 필터 또는 주석을 제공하는 한 가지 적합한 기술은 데이터 구조를 서술하기 위해 특수하게 설계된 언어인 데이터 서술 언어를 사용하는 것이다.
데이터베이스(208)가 특정 비즈니스의 고객에 관련된 정보 중 일부를 획득하기 위해 호출될 수 있는 API(208A)를 가진다고 가정하라. API가 호출되면, 데이터베이스(208)는 이를 통해 검색될 수 있는 고객의 리스트를 반환한다. 본 발명의 다양한 실시예에서는 데이터베이스(208)의 탐색을 제한하기 위해, 최종 수정된 날짜 등의 제약사항으로 해당 API의 호출에 입력된 매개변수를 주해하거나 해당 API의 호출을 필터링한다. 크롤러(200)는 정보의 일부를 찾기 위해 통합 데이터 구조(202)에 저장된, 최종 수정된 날짜 보다 더 새로운 제약사항을 사용할 수 있다. API(208A)는 통합 데이터 구조(202)에 의해 제공된 제약사항(최종 수정된 날짜)에 대응하는 정보의 일부를 반환한다. 통합 데이터 구조(202)에 의해 저장된 그 무엇보다도 제약사항은 이런 예에서 API(208A)에 의미를 제공한다. 바꿔 말하면, 최종 수정된 날짜보다 새로운, 반환된 정보의 일부는 고객 정보가 될 것으로 공지된다. 필터 또는 주석의 사용에 의해, 크롤러(200)는 보다 효과적으로 탐색하게 된다.
크롤러(200)가 데이터베이스(208)를 탐색한 이후, 정보의 일부가 필드 명과 필드 값에 의해 되돌아 온다. 각 필드는 소정의 의미를 지닌다. 데이터베이스(208)가 관계형 데이터베이스로서 구현되는 경우, 필드는 특정 행을 식별하는 고유한 식별화 필드일 수 있다. 본 발명의 다양한 실시예에서는 카테고리 결과를 사용자에게 제시하기 위해서, 이런 고유한 식별화 필드로부터 하이퍼링크를 생성할 수 있어, 정보의 일부에 연관된 값으로 연결이 이루어질 수 있다. 사용자가 하이퍼링크를 선택할 때, 해당 특정 하이퍼링크에 연결된 모든 정보가 브라우저 등의 적절한 애플리케이션을 통해 사용자에게 디스플레이된다. 바람직하게는, 이런 기술은 데이터베이스(208 내지 212)에게 크롤러(200)가 탐색했던 모든 것을 반환하도록 요구함에 의한, 데이터베이스(208 내지 212)의 오버로딩을 피하는데 사용된다. 식별자로서 키 필드의 사용뿐 아니라, 통합 데이터 구조(202)의 필터 또는 주석은 한번 에 모든 정보를 반환하는 것을 금지하여, 데이터베이스(208 내지 212)에 의해 형성된 컴퓨팅 시스템을 파괴하지 않도록 한다. 본 발명의 다양한 실시예에서는 통합 데이터 구조(202)의 필터 또는 주석, 및 식별자로서의 키 필드를 검색 요청을 여러 개로 세분화하는데 사용한다. 사용자가 특정 식별자에 연결된 하이퍼링크를 선택하여, 이 식별자가 차례로 데이터베이스(208)의 행을 고유하게 식별하는 필드에 연결되면, 사용자가 관심 있어 하는 것으로 나타난 정보의 일부 중 한 부분이 반환된다.
데이터베이스(208 내지 212)는 검색, 정렬, 재조합, 및 다른 기능을 위한 한 세트의 연산과 함께 필드를 각각 포함하는 레코드로 구성되어 있다. 레코드의 필드는 키의 일부분이 되도록 지정된 정보의 일부를 고유하게 식별하는 구조이다. 이런 키는 데이터베이스(208 내지 212)의 정보의 일부를 검색하는 성능을 지원한다. 본 발명의 다양한 실시예는 이런 키 필드에 연관된 이름 또는 서술을 제공한다. 사용자가 이런 키 필드 중 하나를 선택할 때, 원하는 정보의 일부를 포함하는 적절한 레코드가 사용자에게 반환된다.
통합 데이터 구조(202)는 크롤러(200)가 탐색할 수 있는 데이터베이스(208 내지 212)를 나타내는 시스템의 디렉토리를 서술한다. 바꿔 말하면, 통합 데이터 구조(202)는 크롤러(200)가 탐색하도록 허용하기 위해서 조직 내의 데이터베이스(208 내지 212) 등의 비즈니스 시스템 라인을 열거한다. 통합 데이터 구조(202)의 필터 또는 주석은 크롤러(200)의 탐색에 의해 발견된 데이터베이스(208 내지 212)의 정보의 일부에 의미를 제공한다. 통합 애플리케이션 프로그래밍 인터페이스 (204)를 통해, 크롤러(200)는 데이터베이스(208 내지 212) 중 임의의 것과 통신할 수 있다. 크롤러(200)는 단지 통합 애플리케이션 프로그래밍 인터페이스(204)와 통신할 필요만 있다. 통합 애플리케이션 프로그래밍 인터페이스(204)는 데이터베이스(208 내지 212)와 통신하기 위해 사용하는 어댑터들 중에서 특정 어댑터를 알고 있다. 어댑터들 중에서 선택된 어댑터는 차례로 API(208a 내지 212a) 중에서 데이터베이스(208 내지 212)의 정보 중 일부를 액세스하는 특정 API를 알고 있다.
어댑터(206)는 전형적으로 데이터베이스(208 내지 212)의 소프트웨어 제조업자에 의해 제공된다. 그러나, 제3의 소프트웨어 제조업자가 또한 어댑터(206)를 제공할 수 있다. 전형적으로, 어댑터(206)는 의미론적 변환(또는 의미의 부여)을 제공하지 않으나, 통합 데이터 구조(202)와 함께 통합 애플리케이션 프로그래밍 인터페이스(204)는 크롤러(200)가 전형적으로 데이터베이스(208 내지 212)에 저장된 정보의 일부에 대한 의미론을 이해할 것을 기대하지 않기 때문에 의미론적 변환을 제공한다고 당업자는 인식할 것이다. 탐색 동안에, 크롤러(200)는 정보의 일부가 의미하는 바를 이해함 없이, 정보의 일부 또는 테이블 또는 필드를 찾는다. 통합 애플리케이션 프로그래밍 인터페이스(204) 및 통합 데이터 구조(202)에 의해 제공된 의미론적 변환, 예컨대 "최종 수정된 날짜" 등에 의해 크롤러(200)는 보다 지능적으로 검색할 수 있게 된다.
도 3은 통합 데이터 구조(202)를 보다 양호하게 정의하는 클라우드 다이어그램(300)을 예시한다. 시스템(300)은 클라우드 간의 관계를 예시하고, 각각의 클라우드는 보다 특정한 항목 그룹을 서술하는 일반화된 카테고리이다. 도 3을 참조하라. 클라우드는 클라우드 멤버를 특징짓는 속성 세트 및/또는 서비스 세트(프로그램의 다른 일부분에 이용할 수 있는 액션)을 정의하기 위해 프로그램에 사용되는 서술적인 도구이다. 본질적으로, 각각의 클라우드는 이것이 포함하는 엔티티의 유형과, 그러한 엔티티가 거동하는 방식을 정의한다. 각각의 클라우드는 객체-지향 프로그램 또는 관계형 데이터베이스 테이블 등의 적합한 프로그래밍 기술을 사용하여 구현될 수 있다.
시스템 클라우드(302)는 해당 비즈니스에 연결된 정보의 일부를 포함하는 비즈니스 라인을 나타내는 속성 및 서비스를 정의한다. 예를 들어, 데이터베이스(208 내지 212)는 시스템 클래스(302)에 의해 표현될 수 있는 각각의 시스템이다. 시스템(302)의 인스턴스는 SAP 시스템(302A)을 포함하고, SAP에 연결된 속성 및 서비스를 정의한다. SAP 시스템(302A)으로부터 시작되어 시스템 클라우드(302)에서 화살-형태의 도형으로 끝나는 에지는 SAP 시스템(302A)의 인스턴스 생성과 시스템 클라우드(302) 간의 대응이 존재함을 나타낸다.
엔티티 클라우드(304)는 데이터베이스(208 내지 212) 또는 SAP 시스템(302A) 등의 시스템 내의 정보의 일부에 대해 부과된 구조와 연결된 속성 및 서비스를 정의한다. 예를 들어, SAP 시스템(302A)이 관계형 데이터베이스를 사용하여 구현된다고 가정하자. 엔티티 클라우드(304)의 적절한 인스턴스 생성을 사용하여, 크롤러(200)는 관계형 데이터 테이블을 찾진 못하지만, SAP 시스템(302A)의 고객의 행을 찾게 된다. 엔티티 클라우드(304)로부터 시작되어 시스템 클라우드(302)에서 화살-형태의 도형으로 끝나는 에지는 시스템 클라우드(302)와의 일-대-다(1-to- many)(바꿔 말하면, 한 시스템과 그 시스템 내의 다수의 엔티티) 관계를 지시한다.
고객 인스턴스(304A)는 상품 또는 서비스를 구매하는 고객의 표현과 연관된 속성 및 서비스를 정의한다. 고객 인스턴스(304A)는 SAP 시스템(302A)의 정보의 일부에 대해 의미와 구조를 부과하는데 사용되어 그것들에 포함된 정보의 정해진 일부가 고객에 속하는 정보라는 것을 지시할 수 있다. 엔티티 클라우드(304)에 의해 표현되는 각각의 엔티티는 SAP 시스템(302A) 등의 시스템 클라우드(302)에 의해 표현되는 시스템에 존재하는 정보의 일부에 대해 구조를 서술한 것이다. 고객 엔티티(304a)로부터 시작되어 엔티티 클라우드(302)에서 화살-형태의 도형으로 끝나는 에지는 고객 엔티티(304A)의 인스턴스 생성과 엔티티 클라우드(302) 간의 대응이 존재함을 나타낸다.
각각의 엔티티 클라우드(304)는 메소드 클라우드(306)로 표현되는 특징을 가진다. 메소드 클라우드(306)는 엔티티가 가질 수 있는 거동을 표현하는 속성 및 서비스를 정의한다. 메소드 클라우드(306)로부터 시작되어 엔티티 클라우드(304)에서 화살-형태 도형으로 끝나는 에지는 엔티티 클라우드(304)와의 일-대-다(바꿔 말하면, 한 엔티티와 그 엔티티 내의 다수의 메소드) 관계를 나타낸다.
파인더 메소드(306A)는 시스템 내에서 엔티티를 찾는 능력을 제공한다. 예를 들어, 파인더 메소드(306A)는 SAP 시스템(302A) 등의 시스템에서 엔티티로서 고객을 찾는데 사용될 수 있다. 바람직하게는, 크롤러(200)가 엔티티의 모든 인스턴스를 찾기 위해 엔티티의 특정 파인더 메소드를 시스템에 사용할 수 있다. 파인더 메소드(306a)로부터 시작되어 메소드 클라우드(306)에서 화살-형태의 도형으로 끝 나는 에지는 파인더 메소드(306A)의 인스턴스 생성과 메소드 클라우드(306) 간의 대응이 존재함을 나타낸다.
각 메소드는 하나 이상의 매개변수를 가진다. 이런 매개변수는 메소드용 매개변수를 나타내는 속성 및 서비스를 정의하는 매개변수 클라우드(308)에 의해 표현된다. 매개변수 클라우드(308)로부터 시작되어 메소드 클라우드(304)에서 화살-형태의 도형으로 끝나는 에지는 메소드 클라우드(306)와의 일-대-다(바꿔 말하면, 한 메소드와 그 메소드 내의 다수의 매개변수) 관계를 나타낸다.
매개변수의 한 가지 유형은 필터 클라우드(308A)에 의해 표현되는 필터이다. 필터 클라우드(308A)는 파인더 메소드(306A) 등의 메소드의 호출을 통해 크롤러(200)에 의해 탐색되고 반환된 정보의 일부를 제한하거나 주해하는 속성 및 서비스를 정의한다. 필터 클라우드(308a)로부터 시작되어 매개변수 클라우드(308)에서 화살-형태의 도형으로 끝나는 에지는 매개변수 클라우드(308)와의 일-대-다(바꿔 말하면, 한 매개변수와 그 매개변수 내의 다수의 필터) 관계를 나타낸다.
한 가지 바람직한 필터는 "~이래로 수정된(modified-since)" 필터(308B)에 의해 표현되고, 이 필터는 특정 시점 이후에 수정된 날짜를 가지는 정보의 일부를 제한하는 것에 연결된 속성 및 서비스를 정의한다. ~이래로 수정된 필터(308B)로부터 시작되어 필터 클라우드(308A)에서 화살-형태의 도형으로 끝나는 에지는 ~이래로 수정된 필터(308B)의 인스턴스 생성과 필터 클라우드(308A) 간의 대응이 존재함을 나타낸다. 필터 클라우드(308A)는 SAP 시스템(302A) 등의 시스템으로부터 정보 중 원하는 일부를 필터링하거나 주해하기 위해 인스턴스화될 수 있다.
바람직하게는, 파인더 메소드(306A) 등의 메소드 이름과 그 서명, 즉 매개변수 클라우드(308)의 인스턴스와 필터(308A)의 인스턴스(즉, ~이래로 수정된 필터(308B)) 등은 원문대로 서술되어 통합 데이터 구조(202)에 저장되어 있다. 메소드 클라우드(306)는 매개변수 클라우드(308)에 의해 표현되는 매개변수의 집합이다. 메소드 클라우드(306)에 의해 표현되는 메소드의 집합은 엔티티 클라우드(304)에 의해 표현되는 엔티티의 특징 또는 거동이다. 시스템 클라우드(302)의 인스턴스, 엔티티 클라우드(304)의 인스턴스, 및 메소드 클라우드(306)의 인스턴스는 다함께 데이터베이스(208 내지 212)의 API(308A 내지 212A) 등의 시스템에 저장된 논리의 일부를 가리키고, 이 API는 정보 중 원하는 일부를 획득하기 위해 호출될 수 있다.
사용자가 검색 표현식 "98229"를 브라우저의 검색 입력 영역에 입력한다고 가정하자. 검색 문자열은 주문 번호, 고객 번호, 집 코드(zip code) 등의 여러 가지를 의미할 수 있다. 검색 엔진과 크롤러(202) 중 어떤 것도 검색 표현식이 의미하는 바를 알지 못할 것이다. 엔티티 클래스(304)는 반환 데이터가 이해될 수 있도록 통합 데이터 구조(202)에 의미론을 제공한다. 예를 들어, 크롤러(200)는 검색 표현식 "98229"가 발견될 수 있는 경우, SAP 시스템(302A)의 엔티티의 카테고리를 반환할 수 있다. 이런 카테고리는 주문 번호, 고객 번호, 집 코드 등을 포함한다. 검색 표현식은 SAP 시스템(302A) 또는 데이터베이스(208 내지 212) 등의 다른 시스템에 저장된 임의 필드에서 보일 수 있다. 시스템 외부의 정보 중 일부를 획득하기 위해, 사용자는 특정 엔티티를 표현하는 하이퍼링크를 선택하여 나타낼 필요가 있다. 이런 선택으로부터, 크롤러(200)는 SAP 시스템(302A)으로부터 정보 중 원하는 일부를 추출하기 위해서 호출할 특정 메소드 또는 파인더 메소드를 알고 있을 것이다.
본 발명의 다양한 실시예는 데이터베이스(208 내지 212) 등의 특정 시스템에 특정한 프로토콜과 직접 상호작용(interact)하는 새로운 프로토콜 핸들러를 기록할 필요성을 없애 준다. 대신에, 통합 애플리케이션 프로그래밍 인터페이스(204) 및 통합 데이터 구조(202)를 사용하여, 크롤러(200)는 데이터베이스(208 내지 212)에 의해 요구된 프로토콜의 특정 상세를 모른 채, 통합 프로그래밍 인터페이스(204)와 직접 상호작용할 필요가 있다. 데이터베이스(208 내지 212)에 연결된 특정한 프로토콜은 어떤 의미에서 본 발명의 다양한 실시예에 의해 단일 통합 프로토콜로 변환된다. 보다 구체적으로, 변환은 크롤러(200)에 의해 특정 엔티티용 파인더 메소드가 호출되는 것이다. 정보를 찾기 위해, 크롤러(200)는 사용자에게 흥미로운 특정 엔티티의 요구된 파인더 메소드만을 찾을 필요가 있다. 데이터베이스(208 내지 212)로부터 정보 중 원하는 일부를 추출하기 위해 크롤러(200)는 다른 복잡한 프로토콜을 알 필요가 없다.
통합 데이터 구조(202)는 원문대로 시스템 클라우드(302)에 의해 정의된 다양한 시스템, 엔티티 클라우드(304)에 의해 정의된 다양한 엔티티, 메소드 클라우드(306)에 의해 정의된 다양한 메소드(파인더 메소드(306A) 등), 매개변수 클라우드(308)에 의해 정의된 다양한 매개변수, 및 필터 클라우드(308A) 등에 의해 정의된 다양한 필터(~이래로 수정된 필터(308B) 등)를 포함한다. 데이터베이스(208 내지 212) 등의 시스템에 대한 지식을 가진 조직 내의 정보 기술자는 통합 데이터 구 조(202)를 파퓰레이트하는 것이 바람직하다. 통합 데이터 구조(202)의 구현 시, 본 발명의 다양한 실시예를 사용하여 코드를 기록할 필요는 없다. 사용자 인터페이스가 통합 데이터 구조(202)를 파퓰레이트하기 위해 조직 내의 정보 기술자에게 제공되는 것이 바람직하다.
하나 이상의 파인더 메소드(306A)가 존재할 수 있다. 바람직하게는, 하나의 파인더 메소드에 의해 데이터베이스(208 내지 212) 등의 시스템 내에서 정보의 일부를 포함하는 특정한 행을 찾아내는 것이 가능하다. 다른 적합한 파인더는 정보 중 원하는 일부를 포함하는 다수의 행을 찾아내는 것이다. 메소드 클라우드(306)에 의해 표현되는 몇몇 메소드는 매개변수 클래스(308)에 의해 나타난 복잡한 매개변수를 가질 수 있다. 메소드의 호출을 간략화하기 위해, 본 발명의 다양한 실시예에서는 다양한 메소드용 디폴트 매개변수를 서술하여 통합 데이터 구조(202)에 및 저장한다. 이런 디폴트 매개변수는 크롤러(200)가 매개변수의 세세한 항목을 명시할 필요 없이, 메소드의 호출시 자동으로 삽입될 것이다.
도 4a 내지 도 4g는 데이터베이스 및 애플리케이션 문서에서 정보의 일부를 크롤링하는 프로세스(400)를 예시하고, 명료하게 하기 위해, 프로세스(400)에 대한 하기의 기술은 클라우드 다이어그램(300)(도 3) 및 크롤러(200)(도 2)에 관련되어 예시된 다양한 구성요소를 참조한다. 시작 단계에서, 프로세스(400)는 일련의 프로세스 단계(402)로 진행하고, 이는 연속 터미널("터미널 A")과 출구 터미널("터미널 B") 간에 형성된다. 일련의 프로세스 단계(402)는 통합 데이터 구조(202)가 파퓰레이트되는 프로세스를 기술한다.
터미널 A(도 4b)로부터, 프로세스(400)는 정보 기술자가 하나 이상의 시스템을 원문대로 명시하는 블록(408)으로 진행한다. 프로세스(400)는 정보 기술자가 시스템의 하나 이상의 엔티티를 원문대로 명시하는 블록(410)으로 진행한다. 그런 다음 정보 기술자는 엔티티와 연결된 하나 이상의 메소드(즉, 파인더 메소드)를 원문대로 명시한다. 블록(412)을 참조. 그런 다음 프로세스(400)는 정보 기술자가 메소드와 연관된 하나 이상의 매개변수를 원문대로 명시하는 블록(414)으로 진행한다. 다음에, 블록(416)에서, 정보 기술자는 메소드와 연결된 하나 이상의 필터를 원문대로 명시한다. 정보 기술자는 또한 하나 이상의 디폴트 매개변수를 원문대로 명시한다. 블록(418)을 참조. 그런 다음 메소드는 출구 터미널 B로 계속 진행한다.
출구 터미널 B로부터, 프로세스(400)는 일련의 프로세스 단계(404)로 진행하며, 이는 연속 터미널("터미널 C")과 출구 터미널("터미널 D") 간에 형성된다. 일련의 프로세스 단계(404)는 데이터베이스 및 애플리케이션 문서에 대해 실행되는 크롤링 프로세스를 기술한다.
터미널 C(도 4c)로부터, 프로세스(400)는 크롤러가 통합 API를 사용하여 통합 데이터 구조를 거쳐서 크롤링할 시스템을 선택하는 블록(420)으로 진행한다. 그 다음에, 블록(422)에서, 크롤러가 통합 API를 사용하여 (통합 데이터 구조 내에서) 크롤링할 시스템의 엔티티를 찾는다. 시스템의 일례로 데이터베이스(208)가 있다. 엔티티의 다른 일례로 고객 엔티티(304A)가 있다. 크롤러는 통합 API를 사용하여 엔티티의 파인더 메소드를 찾는다. 블록(424)을 참조. 프로세스(400)는 크롤러가 통합 API를 사용하여 파인더 메소드에 연관된 하나 이상의 매개변수를 찾는 블록(426)으로 진행한다. 크롤러는 통합 API를 사용하여 하나 이상의 디폴트 매개변수를 찾는다. 블록(428)을 참조. 그런 다음 프로세스(400)는 크롤러가 통합 API를 사용하여 그 크롤러가 만료되는 것을 제한하기 위해 하나 이상의 필터를 찾는 블록(430)으로 진행한다. 다음에, 프로세스(400)는 또 다른 연속 터미널("터미널 C1")로 계속 진행한다.
터미널 C1(도 4d)으로부터, 크롤러는 통합 API가 하나 이상의 필터에 의해 제한된 하나 이상의 디폴트 매개변수를 갖는 메소드를 호출하게 한다. 다음에, 블록(434)에서, 통합 API는 메소드 및 매개변수를 데이터베이스(208) 등의 특정 시스템용 어댑터가 이해할 수 있는 매개변수를 가진 또 다른 메소드로 변역한다. 어댑터는 이 메소드 호출을 API(208A) 등의 다른 시스템 API가 이해할 수 있는 프로토콜로 변역한다. 블록(436)을 참조. 그런 다음 프로세스(400)는 어댑터가 메소드 호출을 정보 중 원하는 일부를 찾아낼 수 있는 시스템의 특정 API가 이해할 수 있는 프로토콜로 변역하는 블록(438)으로 계속 진행한다. 그런 다음 프로세스(400)는 또 다른 연속 터미널("터미널 C2")로 계속 진행한다.
터미널 C2(도 4e)로부터, 프로세스(400)는 크롤러가 선택된 메소드를 사용하여 그 크롤링을 달성하였는지 판정하는 테스트가 수행되는 판정 블록(442)으로 진행한다. 판정 블록(442)에서의 테스트에 대한 대답이 아니오(NO) 일 경우, 프로세스(400)는 판정 블록(442)에서 테스트를 다시 실행하기 위해 되돌아 간다. 그렇지 않고, 대답이 예(YES)일 경우, 프로세스(400)는 메소드가 정보 중 원하는 일부를 포함하는 행을 고유하게 식별하는 키 필드(및 키 필드의 서술)를 인덱스화하는 블록(444)으로 계속 진행한다. 크롤링할 시스템 내에 엔티티가 더 존재하는지 판정하는 또 다른 테스트가 판정 블록(446)에서 수행된다. 판정 블록(446)에서의 테스트에 대한 대답이 예(YES)일 경우, 프로세스(400)는 또 다른 연속 터미널("터미너 C3")로 진행한다. 터미널 C3(도 4c)로부터, 프로세스(400)는 상기 식별된 프로세싱 단계가 반복되는 블록(422)으로 되돌아 간다. 그렇지 않고, 판정 블록(446)에서의 테스트에 대한 대답이 아니오(NO)이면, 프로세스(400)는 또 다른 연속 터미널("터미널 C4")로 진행한다.
터미널 C4(도 4f)로부터, 프로세스(400)는 크롤링할 시스템이 더 존재하는가 판정하는 테스트가 수행되는 판정 블록(448)으로 진행한다. 이 테스트에 대한 대답이 예(YES)일 경우, 메소드는 또 다른 연속 터미널("터미널 C5")로 계속 진행한다. 터미널 C5(도 4c)로부터, 프로세스는 상기 식별된 프로세싱 단계가 반복되는 블록(420)으로 되돌아 간다. 그렇지 않고, 판정 블록(448)에서의 테스트에 대한 대답이 아니오(NO) 이면, 프로세스(400)는 출구 터미널 D로 진행한다.
출구 터미널 D로부터, 프로세스(400)는 일련의 프로세싱 단계(406)로 진행하며, 이는 연속 터미널("터미널 E")과 출구 터미널("터미널 F") 간에 형성된다. 일련의 프로세싱 단계(406)는 크롤러에 의해 발견된 정보의 일부의 여러 ID를 선택적으로 디스플레이한다. 터미널 E(도 4f)로부터, 사용자는 브라우저를 통해 검색 표현식을 입력한다. 블록(450)을 참조. 다음에, 단계(452)에서, 프로세스(400)는 검색 표현식의 내용을 포함하는 시스템의 엔티티를 수집한다. 그런 다음 프로세스 (400)는 또 다른 연속 터미널("터미널 E1")로 계속 진행한다.
터미널 E1(도 4g)로부터, 프로세스(400)는 프로세스가 검색 표현식의 내용을 포함하는 엔티티의 서술을 사용자에게 제시하는 블록(454)으로 진행한다. 다음에, 블록(456)에서, 사용자는 특정 엔티티를 선택한다. 통합 API는 인덱스를 사용하여 특정 시스템의 특정 엔티티의 검색 표현식의 내용에 연관된 정보 중 실제 일부를 가져온다(pull). 그런 다음 프로세스(400)는 그 프로세스가 브라우저상에서 정보의 일부를 사용자에게 제시하는 블록(460)으로 진행한다. 그런 다음 프로세스(400)는 실행할 검색이 더 존재하는가 판정하는 또 다른 테스트가 수행되는 판정 블록(462)으로 계속 진행한다. 판정 블록(462)에서의 테스트에 대한 대답이 예(YES)일 경우, 프로세스(400)는 터미널 E로 계속 진행하고, 상기 프로세싱 단계가 반복되는 도 4f로 되돌아 간다. 그렇지 않고, 판정 블록(462)에서의 테스트에 대한 대답이 아니오(NO)이면, 프로세스(400)는 출구 터미널 F로 계속 진행하고, 실행을 종료한다.
본 발명의 바람직한 실시예가 예시 및 기술되어 있지만, 본 발명의 정신과 범위 내에서 다양한 변경이 본원에 행해질 수 있음을 인식할 필요가 있다.
본 시스템은 검색 엔진이 마이크로소프트 엑셀 문서 등의 다양한 데이터베이스와 애플리케이션 문서와 통신하기 위한 특정한 프로토콜을 알 필요없이, 다양한 데이터베이스 및 애플리케이션 문서에서 정보의 일부를 검색하는 것을 용이하게 하는 효과가 있다.

Claims (20)

  1. 정보를 찾기 위해 다양한 데이터베이스를 탐색하기 위한 시스템으로서,
    적어도 하나의 메모리 저장 장치; 및
    상기 적어도 하나의 메모리 저장 장치에 연결된 적어도 하나의 처리 장치를 포함하고,
    상기 적어도 하나의 메모리 저장 장치는,
    탐색할 데이터베이스 세트 및 필터를 열거하도록 구성된 통합 데이터 구조,
    상기 데이터베이스 세트와 통신하도록 구성된 프로토콜들의 시맨틱(semantics)을 상기 필터를 사용하여 상기 정보의 일부에 의미를 부여하는 하나의 프로토콜에 대한 시맨틱(semantics)으로 변환하는 통합 애플리케이션 프로그래밍 인터페이스, 및
    상기 데이터베이스 세트의 각각의 데이터베이스에 특정한, 대응하는 애플리케이션 프로그래밍 인터페이스 및 대응하는 프로토콜을 모른 채 상기 데이터베이스 세트의 상기 정보의 일부를 탐색하기 위해, 상기 통합 애플리케이션 프로그래밍 인터페이스의 상기 하나의 프로토콜을 사용하여 상기 통합 데이터 구조에서 서술된 메소드를 호출하는 크롤러(crawler)
    를 포함하고,
    상기 필터는 상기 크롤러의 상기 탐색을 제한하는데 사용되는 주석을 포함하고,
    상기 통합 애플리케이션 프로그래밍 인터페이스는 상기 크롤러의 제약사항(constraint)을 획득하기 위해 상기 통합 데이터 구조를 참조하도록 구성되고,
    상기 크롤러의 상기 제약사항을 획득하기 위해 상기 통합 데이터 구조를 참조하도록 구성되는 상기 통합 애플리케이션 프로그래밍 인터페이스는, 상기 데이터베이스 세트에서 상기 정보의 일부를 탐색하기 위한 상기 제약사항을 반영하고, 상기 데이터베이스 세트를 크롤링하는 것과 연관된 상기 메소드를 상기 크롤러가 호출하도록 하는 변환(translation)을 제공하기 위해, 상기 통합 데이터 구조를 참조하도록 구성된 통합 애플리케이션 프로그래밍 인터페이스를 포함하고,
    상기 통합 애플리케이션 프로그래밍 인터페이스에 의한 상기 참조는 상기 통합 데이터 구조를 서술하기 위해 설계된 데이터 서술 언어(data description language)의 사용을 포함하는,
    다양한 데이터베이스를 탐색하기 위한 시스템.
  2. 제1항에 있어서,
    상기 통합 데이터 구조는, 시스템에서 상기 정보의 일부에 대해 부과된 구조와 연결된 속성 및 서비스를 정의하는 적어도 하나의 엔티티를 포함하고, 각각의 시스템은 상기 데이터베이스 세트 중의 하나의 데이터베이스를 포함하며, 각각의 엔티티는 상기 데이터베이스 세트 중 적어도 하나의 데이터베이스의 정보의 일부에 대한 구조를 부과하는, 다양한 데이터베이스를 탐색하기 위한 시스템.
  3. 제2항에 있어서,
    상기 통합 데이터 구조는, 상기 적어도 하나의 엔티티 하에 상기 적어도 하나의 엔티티가 가지는 거동(behavior)을 표현하는 속성 및 서비스를 정의하는 적어도 하나의 메소드를 포함하고, 상기 적어도 하나의 메소드의 각각은 상기 크롤러에게 상기 적어도 하나의 데이터베이스에서 상기 정보의 일부를 호출 및 탐색하기 위한 설비(facility)를 제공하도록 구성된 상기 통합 데이터 구조에 의해 서술되는, 다양한 데이터베이스를 탐색하기 위한 시스템.
  4. 제3항에 있어서,
    상기 통합 데이터 구조는, 상기 적어도 하나의 메소드의 매개변수(parameter)를 표현하는 속성 및 서비스를 정의하는 적어도 하나의 매개변수를 포함하고, 상기 적어도 하나의 매개변수는 반환될 상기 정보의 일부를 제한하는 상기 필터에 의해 주해되는(annotated), 다양한 데이터베이스를 탐색하기 위한 시스템.
  5. 제4항에 있어서,
    상기 필터는 특정 날짜 이래로 수정이 행해졌던 상기 정보의 일부를 필터링하는 날짜 수정 필터를 포함하는, 다양한 데이터베이스를 탐색하기 위한 시스템.
  6. 정보의 일부를 찾기 위해 데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법으로서,
    각각의 데이터베이스에 특정한 애플리케이션 프로그래밍 인터페이스 및 프로토콜을 모른 채 적어도 하나의 필터를 가진 파인더 메소드(finder method)를 호출함으로써 각각의 데이터베이스의 각각의 엔티티를 탐색하기 위해 통합 데이터 구조에 액세스함으로써, 상기 정보의 일부를 찾기 위해 크롤러와 통신하는 연산 장치를 이용하여 크롤링하는 단계; 및
    식별자에 연관된 엔티티에 관련된 적어도 하나의 데이터베이스 내의 상기 정보의 일부를 획득하기 위해 상기 식별자에 연관된 하이퍼링크를 사용자가 선택할 때 사용자 선택을 수신하는 단계
    를 포함하고,
    상기 데이터베이스는 적어도 하나의 레코드를 포함하고, 상기 적어도 하나의 레코드는 적어도 하나의 필드를 포함하고, 상기 적어도 하나의 필드는 키의 일부인 정보를 식별함 -,
    상기 적어도 하나의 필터는, 상기 크롤러를 제한하도록 구성되며,
    상기 크롤러를 제한하는 것은
    통합 애플리케이션 프로그래밍 인터페이스가 상기 데이터베이스의 세트와 통신하도록 구성된 프로토콜들의 시맨틱을 상기 적어도 하나의 필터를 사용하여 상기 정보의 일부에 의미를 부여하는 하나의 프로토콜에 대한 시맨틱으로 변환하는 단계와,
    상기 적어도 하나의 데이터베이스에서 상기 정보의 일부를 탐색하기 위한 제약사항을 반영하고, 상기 적어도 하나의 데이터베이스를 크롤링하는 것과 연관된 상기 파인더 메소드를 상기 크롤러가 호출하도록 하는 변환을 제공하기 위해, 상기 통합 데이터 구조를 참조함으로써 상기 통합 애플리케이션 프로그래밍 인터페이스가 상기 크롤러의 상기 제약사항을 획득하기 위해 상기 통합 데이터 구조를 참조하는 단계를 포함하는 - 상기 통합 데이터 구조를 참조하는 것은 상기 통합 데이터 구조를 서술하기 위해 설계된 데이터 서술 언어를 사용하는 것을 포함함 -,
    데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법.
  7. 제6항에 있어서,
    상기 크롤링하는 단계 전에, 크롤링될 상기 적어도 하나의 데이터베이스, 각각의 데이터베이스의 상기 정보의 일부에 대해 부과된 구조와 연결된 속성 및 서비스를 정의하도록 구성된 상기 엔티티, 각각의 메소드의 매개변수를 표현하는 속성 및 서비스를 정의하는 상기 메소드 및 상기 매개변수와 연관된 상기 필터를 열거하기 위해, 상기 통합 데이터 구조를 파퓰레이트(populate)하는 단계
    를 더 포함하는, 데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법.
  8. 제7항에 있어서,
    각각의 데이터베이스의 키 필드를 인덱스화하는 단계
    를 더 포함하는, 데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법.
  9. 제8항에 있어서,
    상기 통합 애플리케이션 프로그래밍 인터페이스에 의한 상기 메소드의 호출을 각각의 데이터베이스에 특정한 애플리케이션 프로그래밍 인터페이스의 호출로 변환하는 단계
    를 더 포함하는, 데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법.
  10. 제9항에 있어서,
    상기 메소드의 호출에 연관된 상기 필터에 따라서 상기 적어도 하나의 데이터베이스에서 발견된 정보의 일부를 필터링하는 단계
    를 더 포함하는, 데이터베이스 및 애플리케이션 문서를 탐색하기 위한 컴퓨터-구현 방법.
  11. 원하는 정보의 일부를 찾기 위해 데이터베이스 및 애플리케이션 문서를 탐색하도록 구성된 컴퓨터-구현 방법을 구현하기 위한 명령어들이 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터-구현 방법은,
    각각의 데이터베이스에 특정한 애플리케이션 프로그래밍 인터페이스 및 프로토콜을 모른 채 적어도 하나의 필터를 가진 파인더 메소드를 호출함으로써 각각의 데이터베이스의 각각의 엔티티를 탐색하기 위해 통합 데이터 구조에 액세스함으로써, 상기 정보의 일부를 찾기 위해 크롤러를 이용하여 크롤링하는 단계; 및
    식별자에 연관된 엔티티에 관련된 적어도 하나의 데이터베이스 내의 상기 정보의 일부를 획득하기 위해 상기 식별자에 연관된 하이퍼링크를 사용자가 선택할 때 사용자 선택을 수신하는 단계
    를 포함하고,
    상기 데이터베이스는 적어도 하나의 레코드를 포함하고, 상기 적어도 하나의 레코드는 적어도 하나의 필드를 포함하고, 상기 적어도 하나의 필드는 키의 일부인 정보를 식별함 -,
    상기 각각의 필터는, 상기 크롤러를 제한하도록 구성되며,
    상기 크롤러를 제한하는 것은
    통합 애플리케이션 프로그래밍 인터페이스가 상기 데이터베이스와 통신하도록 구성된 프로토콜들의 시맨틱을 상기 적어도 하나의 필터를 사용하여 상기 정보의 일부에 의미를 부여하는 하나의 프로토콜에 대한 시맨틱으로 변환하는 단계와,
    상기 적어도 하나의 데이터베이스에서 상기 정보의 일부를 탐색하기 위해 사용되는 제약사항을 반영하고, 상기 적어도 하나의 데이터베이스를 크롤링하는 것과 연관된 상기 파인더 메소드를 상기 크롤러가 호출하도록 하는 변환을 제공하기 위해, 상기 통합 데이터 구조를 참조함으로써 상기 통합 애플리케이션 프로그래밍 인터페이스가 상기 크롤러의 상기 제약사항을 획득하기 위해 상기 통합 데이터 구조를 참조하는 단계를 포함하는 - 상기 통합 데이터 구조를 참조하는 것은 상기 통합 데이터 구조를 서술하기 위해 설계된 데이터 서술 언어를 사용하는 것을 포함함 -,
    컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 컴퓨터-구현 방법은, 상기 크롤링하는 단계 전에, 크롤링될 상기 적어도 하나의 데이터베이스, 각각의 데이터베이스의 상기 정보의 일부의 대해 부과된 구조와 연결된 속성 및 서비스를 정의하는 상기 엔티티, 각각의 엔티티가 가지는 거동을 표현하는 속성 및 서비스를 정의하는 상기 메소드, 각각의 메소드의 매개변수를 표현하는 속성 및 서비스를 정의하는 매개변수 및 상기 매개변수와 연관된 상기 필터를 열거하기 위해, 상기 통합 데이터 구조를 파퓰레이트하는 단계를 더 포함하는,
    컴퓨터 판독 가능 저장 매체.
  13. 제12항에 있어서,
    상기 컴퓨터-구현 방법은, 각각의 데이터베이스의 키 필드를 인덱스화하는 단계를 더 포함하는,
    컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서,
    상기 컴퓨터-구현 방법은, 상기 통합 애플리케이션 프로그래밍 인터페이스에 의한 상기 메소드의 호출을 각각의 데이터베이스에 특정한 애플리케이션 프로그래밍 인터페이스의 호출로 변환하는 단계를 더 포함하는,
    컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서,
    상기 컴퓨터-구현 방법은, 상기 메소드의 호출에 연관된 상기 필터에 따라서 상기 데이터베이스에서 발견된 상기 정보의 일부를 필터링하는 단계를 더 포함하는,
    컴퓨터 판독 가능 저장 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020060012550A 2005-03-29 2006-02-09 정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법 KR101224800B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/096,429 US7801880B2 (en) 2005-03-29 2005-03-29 Crawling databases for information
US11/096,429 2005-03-29

Publications (2)

Publication Number Publication Date
KR20060105438A KR20060105438A (ko) 2006-10-11
KR101224800B1 true KR101224800B1 (ko) 2013-01-21

Family

ID=36581869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060012550A KR101224800B1 (ko) 2005-03-29 2006-02-09 정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US7801880B2 (ko)
EP (1) EP1708104A1 (ko)
JP (1) JP5048956B2 (ko)
KR (1) KR101224800B1 (ko)
CN (1) CN1841377A (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100848264B1 (ko) * 2006-11-23 2008-07-25 연세대학교 산학협력단 강교량의 데이터베이스 구축방법
JP4868245B2 (ja) * 2007-08-17 2012-02-01 ヤフー株式会社 検索システム、検索装置、および検索方法
EP2463785A1 (en) * 2010-12-13 2012-06-13 Fujitsu Limited Database and search-engine query system
US8620897B2 (en) * 2011-03-11 2013-12-31 Microsoft Corporation Indexing and searching features including using reusable index fields
JP5578137B2 (ja) * 2011-05-25 2014-08-27 富士通株式会社 検索プログラム、装置及び方法
US9558248B2 (en) * 2013-01-16 2017-01-31 Google Inc. Unified searchable storage for resource-constrained and other devices
RU2568276C2 (ru) * 2014-01-24 2015-11-20 Закрытое акционерное общество "РИВВ" Способ извлечения полезного контента из установочных файлов мобильных приложений для дальнейшей машинной обработки данных, в частности поиска
US10467062B1 (en) 2019-03-11 2019-11-05 Coupang, Corp. Systems and methods for managing application programming interface information
US11366862B2 (en) * 2019-11-08 2022-06-21 Gap Intelligence, Inc. Automated web page accessing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049637A (ja) * 2000-08-04 2002-02-15 Hitachi Ltd データベース管理方法及び装置並びに記録媒体

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370004B1 (en) * 1999-11-15 2008-05-06 The Chase Manhattan Bank Personalized interactive network architecture
US6876997B1 (en) * 2000-05-22 2005-04-05 Overture Services, Inc. Method and apparatus for indentifying related searches in a database search system
US7630959B2 (en) * 2000-09-06 2009-12-08 Imagitas, Inc. System and method for processing database queries
US20020042789A1 (en) * 2000-10-04 2002-04-11 Zbigniew Michalewicz Internet search engine with interactive search criteria construction
US6636854B2 (en) * 2000-12-07 2003-10-21 International Business Machines Corporation Method and system for augmenting web-indexed search engine results with peer-to-peer search results
US7299219B2 (en) * 2001-05-08 2007-11-20 The Johns Hopkins University High refresh-rate retrieval of freshly published content using distributed crawling
US20040230572A1 (en) * 2001-06-22 2004-11-18 Nosa Omoigui System and method for semantic knowledge retrieval, management, capture, sharing, discovery, delivery and presentation
US6763362B2 (en) * 2001-11-30 2004-07-13 Micron Technology, Inc. Method and system for updating a search engine
US20040117376A1 (en) * 2002-07-12 2004-06-17 Optimalhome, Inc. Method for distributed acquisition of data from computer-based network data sources
JP2005071050A (ja) * 2003-08-22 2005-03-17 Nippon Hoso Kyokai <Nhk> 情報提示システム、情報提示装置、及び情報提示プログラム。
US8224872B2 (en) * 2004-06-25 2012-07-17 International Business Machines Corporation Automated data model extension through data crawler approach

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049637A (ja) * 2000-08-04 2002-02-15 Hitachi Ltd データベース管理方法及び装置並びに記録媒体

Also Published As

Publication number Publication date
EP1708104A1 (en) 2006-10-04
JP2006277732A (ja) 2006-10-12
CN1841377A (zh) 2006-10-04
JP5048956B2 (ja) 2012-10-17
KR20060105438A (ko) 2006-10-11
US20060224592A1 (en) 2006-10-05
US7801880B2 (en) 2010-09-21

Similar Documents

Publication Publication Date Title
KR101224800B1 (ko) 정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법
US6654734B1 (en) System and method for query processing and optimization for XML repositories
CA2462300C (en) Providing a consistent hierarchical abstraction of relational data
US6199081B1 (en) Automatic tagging of documents and exclusion by content
US6757678B2 (en) Generalized method and system of merging and pruning of data trees
US5768578A (en) User interface for information retrieval system
US7747610B2 (en) Database system and methodology for processing path based queries
US6094649A (en) Keyword searches of structured databases
US6636886B1 (en) Publish-subscribe architecture using information objects in a computer network
US7693812B2 (en) Querying data and an associated ontology in a database management system
US7664767B2 (en) System and method for geographically organizing and classifying businesses on the world-wide web
US20040148278A1 (en) System and method for providing content warehouse
JP2000090076A (ja) ドキュメント管理方法およびドキュメント管理システム
AU2004237062A1 (en) Retaining hierarchical information in mapping between XML documents and relational data
Amann et al. Integrating ontologies and thesauri for RDF schema creation and metadata querying
Wittenburg et al. An adaptive document management system for shared multimedia data
Arocena WebOQL: Exploiting document structure in web queries
May et al. Information extraction from the Web
Martin et al. Using metadata to query passive data sources
Enhong et al. Semi-structured data extraction and schema knowledge mining
Bahreini et al. SDISSASA: A multiagent-Based web mining via semantic access to Web resources in Enterprise Architecture
KR100582388B1 (ko) 멀티서버로 된 인트라넷에서 정보검색을 위한 자료저장 방법
Leune et al. Memo
Martin et al. A metadata repository API
AU2007229359B2 (en) Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee