KR102592785B1 - 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램 - Google Patents

개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR102592785B1
KR102592785B1 KR1020210071229A KR20210071229A KR102592785B1 KR 102592785 B1 KR102592785 B1 KR 102592785B1 KR 1020210071229 A KR1020210071229 A KR 1020210071229A KR 20210071229 A KR20210071229 A KR 20210071229A KR 102592785 B1 KR102592785 B1 KR 102592785B1
Authority
KR
South Korea
Prior art keywords
search
individual data
volume
document
computer device
Prior art date
Application number
KR1020210071229A
Other languages
English (en)
Other versions
KR20220162963A (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 네이버 주식회사
Priority to KR1020210071229A priority Critical patent/KR102592785B1/ko
Priority to JP2022088502A priority patent/JP7377915B2/ja
Publication of KR20220162963A publication Critical patent/KR20220162963A/ko
Application granted granted Critical
Publication of KR102592785B1 publication Critical patent/KR102592785B1/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/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램이 개시된다. 개별 데이터 검색 방법은, 사용자와 관련된 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 압축하여 저장하는 단계; 및 검색 요청에 대응되는 복수 개의 볼륨을 병렬로 풀 스캔(full scan) 검색하는 단계를 포함할 수 있다.

Description

개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램{METHOD, COMPUTER DEVICE, AND COMPUTER PROGRAM TO PROVIDE INDIVIDUAL DATA RETRIEVAL SERVICE}
아래의 설명은 개별 데이터 검색 서비스를 제공하는 기술에 관한 것이다.
텍스트 문서 데이터에 대한 검색은 매우 기본적이고 중요한 연산으로서 정보 검색 분야에서 널리 사용되고 있다.
검색 엔진은 광의로는 인터넷 상에서 정보를 수집하고 찾아주는 시스템을 의미하고, 주로 인터넷 상의 웹 페이지들을 크롤링(crawling)하여 특정 검색어(query)를 입력받으면 해당 검색어와 관련된 웹 페이지들을 결과값으로 보여주는 시스템을 지칭한다.
예컨대, 한국등록특허 제10-1021022호(등록일 2011년 03월 02일)에는 클라이언트에 대해 맞춤형 검색 엔진을 제공하는 기술이 개시되어 있다.
일반적으로 검색에는 텀(term)으로 인덱싱하는 역색인(inverted index) 자료구조가 사용된다. 기존 자료구조가 하나의 구분자(primary key)가 여러 필드를 지정하고 있다면 역색인에서는 하나의 값(term)으로 해당 값이 포함된 문서 번호를 지정하는 것이다.
한편, 최근에는 개인 메일, 개인 파일, 메신저 대화방 등 개별 데이터 내에서 검색을 수행하는 서비스가 제공되고 있다.
역색인은 검색 응답속도를 위해 최적화된 자료구조라 할 수 있으나, 개별 데이터 검색 서비스에서는 전체 문서 중 검색 대상이 극히 일부이기 때문에 역색인 자료 구조가 비용과 자원을 고려할 때 적합하지 않다.
개별 데이터 검색 서비스에 특화된 엔진으로 역색인 없는 검색 엔진을 제공할 수 있다.
개별 데이터 검색 서비스의 기본 요구사항이 되는 부분일치 검색을 위해 풀 스캔(full scan) 방식을 적용함과 아울러 개별 데이터 검색 서비스의 응답 속도를 만족할 수 있는 검색 엔진을 제공할 수 있다.
컴퓨터 장치에서 실행되는 개별 데이터 검색 방법에 있어서, 상기 컴퓨터 장치는 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 개별 데이터 검색 방법은, 상기 적어도 하나의 프로세서에 의해, 사용자와 관련된 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 압축하여 저장하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 검색 요청에 대응되는 복수 개의 볼륨을 병렬로 풀 스캔(full scan) 검색하는 단계를 포함하는 개별 데이터 검색 방법을 제공한다.
일 측면에 따르면, 상기 저장하는 단계는, 상기 검색 대상 문서를 일정 크기의 블록 단위로 모아서 압축함으로써 압축 볼륨을 생성하는 단계를 포함할 수 있다.
다른 측면에 따르면, 상기 저장하는 단계는, 신규 문서가 유입되는 경우 상기 신규 문서를 상기 검색 대상 문서로 이루어진 증분 볼륨(increment volume)에 덧붙이는(append) 단계; 및 상기 증분 볼륨을 일정 크기의 블록 단위로 압축하여 압축 볼륨을 생성하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 저장하는 단계는, 상기 압축 볼륨이 생성된 이후 기존 문서가 삭제되는 경우 상기 기존 문서에 대한 삭제 정보를 마킹하는 단계를 더 포함하고, 상기 마킹된 문서는 검색 결과에서 제외될 수 있다.
또 다른 측면에 따르면, 상기 검색하는 단계는, 역색인(inverted index) 자료구조를 사용하지 않고 상기 블록 단위의 압축 볼륨에 대한 풀 스캔 방식을 통해 질의와 부분일치하는 문서를 검색할 수 있다.
또 다른 측면에 따르면, 상기 검색하는 단계는, 상기 복수 개의 볼륨을 병렬로 디코딩하는 단계; 및 상기 디코딩된 볼륨을 대상으로 병렬로 문자열 파인드(find)를 수행하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 저장하는 단계는, 서버 이중화를 위해 복수 개의 호스트에 상기 개별 데이터에 대한 복제 볼륨(replica volume)을 저장하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 검색하는 단계는, 상기 검색 요청에 포함된 질의와 상기 복수 개의 볼륨 내 문서를 유니코드로 정규화하는 단계; 및 정규화된 문자열을 이용하여 컬레이션(collation) 검색을 수행하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 저장하는 단계는, 상기 검색 대상 문서를 유니코드로 정규화하는 단계를 포함하고, 상기 검색하는 단계는, 상기 검색 요청에 포함된 질의를 유니코드로 정규화하는 단계; 및 정규화된 문자열을 이용하여 컬레이션 검색을 수행하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 저장하는 단계는, 변환 문자 위치를 나타내는 오프셋과 해당 위치의 원본 문자를 포함하는 변환 테이블을 생성하는 단계를 더 포함할 수 있다.
상기 검색 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독가능한 기록 매체에 저장되는 컴퓨터 프로그램을 제공한다.
컴퓨터 장치에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 사용자와 관련된 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 압축하여 저장하는 문서 저장부; 및 검색 요청에 대응되는 복수 개의 볼륨을 병렬로 풀 스캔 검색하는 병렬 검색부를 포함하는 컴퓨터 장치를 제공한다.
본 발명의 실시예들에 따르면, 개별 데이터 검색 서비스에 특화된 엔진으로서 역색인 자료 구조를 사용하지 않고 개별 데이터 검색 서비스의 응답 속도를 만족할 수 있는 검색 엔진을 제공할 수 있다.
본 발명의 실시예들에 따르면, 검색 대상이 되는 문서를 블록 단위의 압축 볼륨으로 생성하고 압축 볼륨을 병렬로 풀 스캔 검색함으로써 검색 효율이 높고 직관적인 검색 서비스를 제공할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다.
도 3은 본 발명의 일실시예에 따른 컴퓨터 장치의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 컴퓨터 장치가 수행할 수 있는 방법의 예를 도시한 순서도이다.
도 5는 본 발명의 일실시예에 있어서 입출력 시간을 줄이는 방법을 설명하기 위한 예시 도면이다.
도 6 내지 도 7은 본 발명의 일실시예에 있어서 색인을 대체하는 볼륨 생성 과정을 설명하기 위한 예시 도면이다.
도 8은 본 발명의 일실시예에 있어서 CPU 시간을 줄이는 방법을 설명하기 위한 예시 도면이다.
도 9는 본 발명의 일실시예에 있어서 풀 스캔 방식을 이용한 개별 데이터 검색 서비스 구조를 도시한 것이다.
도 10은 본 발명의 일실시예에 있어서 검색 서버 이중화를 설명하기 위한 예시 도면이다.
도 11은 본 발명의 일실시예에 있어서 컬레이션(collation) 검색에 필요한 정규화 과정을 설명하기 위한 예시 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 개별 데이터 검색 서비스를 제공하는 기술에 관한 것이다.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 개별 데이터 검색 서비스에 특화된 엔진으로 역색인(inverted index) 없는 검색 엔진을 제공할 수 있고, 이를 통해 검색 효율성, 서비스 직관성, 비용 절감 등의 측면에 있어서 상당한 장점들을 달성할 수 있다.
본 명세서에서 개별 데이터는 검색 대상이 되는 문서를 의미하는 것으로, 특히 메일 서비스에서 생성된 개인 메일 문서, 드라이브 서비스에서 생성된 개인 파일, 메시징 서비스에서 생성된 개인 대화 메시지 등과 같이 사용자 개인 문서를 포괄하여 의미할 수 있다.
본 발명의 실시예들에 따른 개별 데이터 검색 장치는 적어도 하나의 컴퓨터 장치에 의해 구현될 수 있으며, 본 발명의 실시예들에 따른 개별 데이터 검색 방법은 개별 데이터 검색 장치에 포함되는 적어도 하나의 컴퓨터 장치를 통해 수행될 수 있다. 이때, 컴퓨터 장치에는 본 발명의 일실시예에 따른 컴퓨터 프로그램이 설치 및 구동될 수 있고, 컴퓨터 장치는 구동된 컴퓨터 프로그램의 제어에 따라 본 발명의 실시예들에 따른 개별 데이터 검색 방법을 수행할 수 있다. 상술한 컴퓨터 프로그램은 컴퓨터 장치와 결합되어 개별 데이터 검색 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다. 또한, 도 1의 네트워크 환경은 본 실시예들에 적용 가능한 환경들 중 하나의 예를 설명하는 것일 뿐, 본 실시예들에 적용 가능한 환경이 도 1의 네트워크 환경으로 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 내비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 장치들 중 하나를 의미할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들 간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 서비스(일례로, 검색 서비스, 컨텐츠 제공 서비스, 소셜 네트워크 서비스, 지도 서비스, 번역 서비스, 금융 서비스, 등)를 제공하는 시스템일 수 있다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다. 앞서 설명한 복수의 전자 기기들(110, 120, 130, 140) 각각이나 서버들(150, 160) 각각은 도 2를 통해 도시된 컴퓨터 장치(200)에 의해 구현될 수 있다.
이러한 컴퓨터 장치(200)는 도 2에 도시된 바와 같이, 메모리(210), 프로세서(220), 통신 인터페이스(230) 그리고 입출력 인터페이스(240)를 포함할 수 있다. 메모리(210)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 비소멸성 대용량 기록장치는 메모리(210)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(200)에 포함될 수도 있다. 또한, 메모리(210)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(210)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(210)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 인터페이스(230)를 통해 메모리(210)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크(170)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(200)의 메모리(210)에 로딩될 수 있다.
프로세서(220)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(210) 또는 통신 인터페이스(230)에 의해 프로세서(220)로 제공될 수 있다. 예를 들어 프로세서(220)는 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 인터페이스(230)는 네트워크(170)를 통해 컴퓨터 장치(200)가 다른 장치(일례로, 앞서 설명한 저장 장치들)와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(200)의 프로세서(220)가 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(230)의 제어에 따라 네트워크(170)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(170)를 거쳐 컴퓨터 장치(200)의 통신 인터페이스(230)를 통해 컴퓨터 장치(200)로 수신될 수 있다. 통신 인터페이스(230)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(220)나 메모리(210)로 전달될 수 있고, 파일 등은 컴퓨터 장치(200)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.
입출력 인터페이스(240)는 입출력 장치(250)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(240)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(250)는 컴퓨터 장치(200)와 하나의 장치로 구성될 수도 있다.
또한, 다른 실시예들에서 컴퓨터 장치(200)는 도 2의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(200)는 상술한 입출력 장치(250) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
이하에서는 개별 데이터 검색 서비스를 제공하는 방법 및 컴퓨터 장치의 구체적인 실시예를 설명하기로 한다.
도 3은 본 발명의 일실시예에 따른 컴퓨터 장치의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이고, 도 4는 본 발명의 일실시예에 따른 컴퓨터 장치가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
본 실시예에 따른 컴퓨터 장치(200)는 클라이언트를 대상으로 클라이언트 상에 설치된 전용 어플리케이션이나 컴퓨터 장치(200)와 관련된 웹/모바일 사이트 접속을 통해 개별 데이터 검색 서비스를 제공할 수 있다. 컴퓨터 장치(200)에는 컴퓨터로 구현된 개별 데이터 검색 장치가 구성될 수 있다.
개별 데이터 검색 서비스는 문서 유입량이 많은 반면에 검색 요청이 상대적으로 적다. 또한, 개별 데이터 검색 서비스는 기본 요구사항으로 질의와 부분일치하는 문서를 찾는 부분일치 검색을 요구한다. 개별 데이터 검색 서비스의 경우 검색 시 실제로 검색할 문서는 전체 문서 중 극히 일부에 불과하다.
개별 데이터 검색 서비스는 문서 유입량이 많기 때문에 검색에서 일반적으로 사용되는 역색인 자료구조를 사용할 경우 과다한 역색인 비용이 발생하고 검색 서버 자원이 낭비되는 등의 문제가 있다.
또한, 역색인 자료구조로 부분일치 검색을 제공하기 위해서는 문서의 바이그램(bigram) 분석을 수행해야 하고 바이그램 분석 시 텀(term) 개수나 볼륨(volume) 크기 등이 커져 서비스에 어려움이 있다.
본 실시예에서는 개별 데이터 검색 서비스의 상기한 특징들을 고려하여 개별 데이터 검색 서비스에 특화된 엔진으로서 역색인 자료구조를 사용하지 않고도 개별 데이터 검색 서비스의 응답속도를 만족할 수 있는 검색 엔진을 제공한다.
컴퓨터 장치(200)의 프로세서(220)는 도 4에 따른 개별 데이터 검색 방법을 수행하기 위한 구성요소로서 도 3에 도시된 바와 같이, 문서 저장부(310), 및 병렬 검색부(320)를 포함할 수 있다. 실시예에 따라 프로세서(220)의 구성요소들은 선택적으로 프로세서(220)에 포함되거나 제외될 수도 있다. 또한, 실시예에 따라 프로세서(220)의 구성요소들은 프로세서(220)의 기능의 표현을 위해 분리 또는 병합될 수도 있다.
이러한 프로세서(220) 및 프로세서(220)의 구성요소들은 도 3의 개별 데이터 검색 방법이 포함하는 단계들(S410 내지 S420)을 수행하도록 컴퓨터 장치(200)를 제어할 수 있다. 예를 들어, 프로세서(220) 및 프로세서(220)의 구성요소들은 메모리(210)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
여기서, 프로세서(220)의 구성요소들은 컴퓨터 장치(200)에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서(220)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 컴퓨터 장치(200)가 검색 대상이 되는 문서를 저장하도록 상술한 명령에 따라 컴퓨터 장치(200)를 제어하는 프로세서(220)의 기능적 표현으로서 문서 저장부(310)가 이용될 수 있다.
프로세서(220)는 컴퓨터 장치(200)의 제어와 관련된 명령이 로딩된 메모리(210)로부터 필요한 명령을 읽어들일 수 있다. 이 경우, 상기 읽어들인 명령은 프로세서(220)가 이후 설명될 단계들(S410 내지 S420)을 실행하도록 제어하기 위한 명령을 포함할 수 있다.
이후 설명될 단계들(S410 내지 S420)은 도 4에 도시된 순서와 다른 순서로 수행될 수 있으며, 단계들(S410 내지 S420) 중 일부가 생략되거나 추가의 과정이 더 포함될 수 있다.
도 4를 참조하면, 단계(S410)에서 문서 저장부(310)는 개인 메일, 개인 파일, 개인 대화 메시지 등 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 저장함으로써 검색 볼륨을 생성할 수 있다. 본 발명의 일실시예에 따르면, 검색 볼륨은 파일 형태로 비휘발성 메모리(210)(예를 들어, 디스크와 같은 보조기억장치)에 저장되며, 병렬 검색부(320)에서 검색이 이루어질 때 다른 메모리(210)(예를 들어, RAM과 같은 휘발성 주기억장치)로 볼륨 파일을 읽어와서 처리할 수 있다. 이때 저장되는 파일을 압축하면 파일 읽기(read)에 소요되는 시간을 줄일 수 있어 검색 응답 시간을 줄일 수 있다.
문서 저장부(310)는 검색 대상이 되는 유입 문서들을 블록 단위의 볼륨으로 저장해 두는데, 이때 검색 응답 시간을 최소화하기 위해 볼륨을 블록 단위로 압축하여 압축 볼륨으로 저장한다. 다시 말해, 문서 저장부(310)는 검색 과정에서 볼륨을 읽어오는 시간을 줄이기 위해 볼륨 생성 단계에서 검색 대상 문서들을 압축 후 저장할 수 있다. 이때, 문서 저장부(310)는 검색 대상 문서들을 사전에 정해진 일정 크기의 블록 단위로 모아서 압축할 수 있다. 각 블록 크기는 압축율이 나오도록 충분히 크면서 병렬화가 가능한 수준의 경험치나 실험치로 결정될 수 있으며, 100KB에서 10MB 사이의 값 중, 예를 들어 1MB의 블록 단위로 압축 볼륨을 생성할 수 있다. 역색인 구조를 사용하지 않고 검색 볼륨을 생성함으로써 볼륨 생성 과정(즉, packing)이 가볍고 볼륨 생성 비용을 대폭 줄일 수 있다. 검색 대상 문서를 압축하는 경우 검색에 소요되는 입출력 시간(I/O time)이 감소함과 아울러 볼륨 크기와 서버 자원 수요가 감소할 수 있다.
단계(S420)에서 병렬 검색부(320)는 검색 요청이 수신되는 경우 검색 요청에 대응되는 압축 볼륨을 읽어와 읽어온 압축 볼륨에 대한 풀 스캔 검색을 병렬로 수행할 수 있다. 이때, 병렬 검색부(320)는 쿼리와 부분일치하는 문서를 찾는 문자열 파인드(find) 방식을 통해 풀 스캔 검색을 수행할 수 있다. 병렬 검색부(320)는 검색 요청이 수신되면 검색 요청에 대응되는 압축 볼륨을 읽어온 후 문자열 파인드를 수행할 수 있다. 문자열 파인드를 수행하기 위해서는 볼륨 내 전체 문서를 읽어야 하는데, 압축 볼륨을 읽어오는 과정은 병렬화가 불가능한 반면에 압축 볼륨 디코딩과 문자열 파인드 과정은 병렬화가 가능하다. 다시 말해, 병렬 검색부(320)는 검색 요청에 대응되는 모든 압축 볼륨에 대해 병렬로 디코딩을 수행한 후 문자열 파인드를 수행할 수 있다. 개별 데이터 검색 서비스에서는 전체 문서 중 검색 대상이 극히 일부이기 때문에 역색인 자료구조를 대신하여 풀 스캔 검색을 통해 충분히 빠른 응답 속도를 보장할 수 있다. 풀 스캔 검색 방식은 검색 볼륨에 원본 문서를 그대로 저장한 후 스캔할 수 있고, 볼륨 생성 비용을 대폭 절감할 수 있으며, 증분(increment) 구현이 간단해서 신규 문서 반영 또한 빠르다는 이점이 있다. 특히, 본 실시예에서는 풀 스캔 검색 시 블록 단위 병렬화를 통해 볼륨 디코딩 시간과 문자열 파인드 수행 시간을 포함하는 CPU 시간이 감소할 수 있다.
본 실시예들은 역색인 구조를 사용하지 않고 풀 스캔 방식을 이용한 개별 데이터 검색 서비스를 제공한다.
풀 스캔 검색은 검색 요청에 따른 볼륨을 읽어온 후 해당 볼륨 내 전체 문서를 읽어 질의와 부분일치하는 문서를 찾는 것으로, 이때 검색 응답 시간은 볼륨을 읽어오는 입출력 시간과 풀 스캔 검색을 수행하는 CPU 시간으로 이루어질 수 있다.
풀 스캔 방식을 이용한 개별 데이터 검색 서비스의 경우 검색 응답 시간을 최소화하기 위해 입출력 시간을 줄이는 방법과 CPU 시간을 줄이는 방법을 적용할 수 있다.
도 5는 본 발명의 일실시예에 있어서 입출력 시간을 줄이는 방법을 설명하기 위한 예시 도면이다.
도 5의 입출력 시간을 줄이는 방법은 도 4를 통해 설명한 문서 저장 단계(S410)에 해당된다.
프로세서(220)는 검색 대상 문서들을 일정 크기의 블록 단위로 압축할 수 있다. 도 5를 참조하면, 검색 대상 문서들로 이루어진 증분 볼륨(increment volume)(50)을 일정 크기의 블록 단위로 압축할 수 있다. 다시 말해, 프로세서(220)는 검색 대상 문서들을 나누어 압축함으로써 블록 단위의 압축 볼륨(60)을 생성할 수 있고, 이를 통해 검색 응답 시간 중 입출력 시간을 줄일 수 있다. 예를 들어, 도 5에 도시한 바와 같이 압축율을 400%로 적용한 경우 입출력 시간과 저장 공간을 1/4로 줄일 수 있다.
개별 데이터 검색 서비스를 위한 자료구조에는 검색 대상 문서들을 압축 전에 모아 놓은 볼륨을 나타내는 증분 볼륨(50)과 일정 크기의 블록 단위로 압축된 볼륨을 나타내는 압축 볼륨(60)이 존재한다. 증분 볼륨은 소량의 문서가 꾸준히 인입되는 환경에서 볼륨 파일의 읽기와 디코딩 수행을 최소화하기 위한 목적으로 이용될 수 있다. 후술하는 바와 같이, 일정 크기가 되면 압축하여 압축 볼륨으로 만들어 비교적 작은 크기로 유지하는 것이 바람직하다.
이때, 프로세서(220)는 신규 문서가 유입되는 경우 신규 문서를 서비스 가능한 자료구조로 변환한 후 증분 볼륨(50)에 덧붙여(append) 반영할 수 있다. 도 6에 도시한 바와 같이, 프로세서(220)는 검색 대상 문서들로 이루어진 증분 볼륨(50)이 일정 크기, 예를 들어, 1MB에 도달하는 시점에 1MB의 블록 단위로 압축하여 압축 볼륨(60)에 덧붙일 수 있다. 문서 평균 크기가 4KB이고 SSD 읽기 속도가 500MB/s일 때, 개별 볼륨의 최대 50만개 문서까지 1초 내로 검색 가능하다.
프로세서(220)는 볼륨 생성 과정을 수행함과 동시에 풀 스캔 검색을 수행할 수 있으며, 볼륨 생성 과정 도중에 서버가 셧다운(shutdown)되더라도 볼륨을 유지할 수 있다. 추가된 문서만큼 볼륨에 덧붙일 수 있고 볼륨 재생성이나 볼륨 교체 없이 증분이 가능하다.
도 7을 참조하면, 프로세서(220)는 신규 문서의 경우 신규 문서를 증분 볼륨(50)에 덧붙인 후 증분 볼륨(50)이 일정 크기에 도달할 때 증분 볼륨(50)을 압축하여 압축 볼륨(60)에 반영할 수 있다.
한편, 프로세서(220)는 압축 볼륨(60)이 생성된 이후 기존 문서가 삭제되는 경우 해당 문서에 대한 삭제 정보를 마킹할 수 있고, 이후 검색 결과 생성 시 마킹된 문서를 검색 결과에서 제외시키는 방식으로 처리할 수 있다. 이때, 삭제 정보 마킹을 위한 추가적인 자료구조를 사용할 수 있다. 실시예에 따라서는 주기적으로 또는 필요한 시기에 삭제 문서 등을 포함한 가비지(garbage)를 정리하여 압축 볼륨(60)을 재생성하는 것 또한 가능하다.
도 8은 본 발명의 일실시예에 있어서 CPU 시간을 줄이는 방법을 설명하기 위한 예시 도면이다.
도 8의 CPU 시간을 줄이는 방법은 도 4를 통해 설명한 병렬 검색 단계(S420)에 해당된다.
도 8을 참조하면, 프로세서(220)는 블록 단위로 압축된 볼륨, 즉 압축 볼륨(60)을 디코딩하는 과정과, 디코딩을 통해 압축 해제된 검색 대상 문서들(50)을 대상으로 풀 스캔을 통한 문자열 파인드를 수행하는 과정을 각각 병렬화할 수 있다. 프로세서(220)는 블록 단위로 병렬 디코딩과 병렬 문자열 파인드를 수행함으로써 검색 응답 시간 중 CPU 시간을 줄일 수 있다. 프로세서(220)는 블록 단위의 병렬 디코딩과 병렬 문자열 파인드를 통해 검색 요청에 대응되는 검색 결과(80)를 응답 결과로 제공할 수 있다.
도 9는 본 발명의 일실시예에 있어서 풀 스캔 방식을 이용한 개별 데이터 검색 서비스 구조를 도시한 것이다.
도 9를 참조하면, 본 발명에 따른 개별 데이터 검색 장치는 개별 데이터 검색 서비스를 위해 SAS(search application server)(910)와 검색 서버(search server)(920)를 포함할 수 있다. SAS(910)는 검색 요청에 대응되는 검색 결과를 제공하는 역할을 하며, 검색 서버(920)는 검색을 위한 압축 볼륨(60)을 저장하는 역할을 한다. 검색 서버(920)는 역색인을 대신하여 볼륨 생성 과정(packing)을 수행할 수 있으며, 검색 서버(920) 하나 당 수만 개 이상의 볼륨을 저장할 수 있다.
본 발명에 따른 개별 데이터 검색 장치는 역색인을 사용하지 않기 때문에 색인 서버를 요구하지 않고, 블록 단위의 압축 볼륨(60)을 적용하여 검색 서버(920)의 수요 또한 감소할 수 있다.
본 발명에 따른 개별 데이터 검색 장치는 역색인을 대신하여 풀 스캔 방식을 이용함에 따라 자연스럽게 개별 데이터 검색 서비스에서 요구하는 부분일치 검색을 제공할 수 있다.
더 나아가, 본 발명에 따른 개별 데이터 검색 장치는 서버 이중화를 지원할 수 있다. 도 10을 참조하면, 사용자 별로 검색 서버(920)에서 랜덤하게 두 개의 호스트를 지정하여 지정된 호스트에 해당 사용자의 개별 데이터를 저장할 수 있다. 개별 데이터 검색 장치는 사용자 별로 매핑된 서버 위치를 저장해 놓은 데이터베이스(1030)를 포함할 수 있다. 다시 말해, 검색 서버(920) 여러 대에 개별 데이터에 대한 복제 볼륨(replica volume)을 저장할 수 있으며, 이를 검색요청 분산이 아닌 대기 복제(standby replication) 용도로 적용할 수 있다.
그리고, 본 발명에 따른 개별 데이터 검색 장치는 같은 의미의 문자를 서로 구분없이 검색하는 컬레이션(collation) 기능을 지원할 수 있다. 컬레이션 기능은 대소문자 구분 없이 검색되는 기능(case insensitive), 부호가 없는 알파벳과 부호가 있는 알파벳(예를 들어, 등)이 구분 없이 검색되는 기능, 일본어 가타카나와 히라가나가 구분 없이 검색되는 기능(KanaType insensitive) 등을 포함할 수 있다.
본 발명에 따른 개별 데이터 검색 장치는 검색을 위한 볼륨과 문서 요약(예를 들어, Snippet 등)을 위한 볼륨이 하나로 이루어져 있기 때문에 이를 정규화할 경우 검색은 가능한 반면 문서 요약이 불가능해지는 한계가 있을 수 있다.
본 발명에 따른 개별 데이터 검색 장치는 컬레이션을 제공하기 위해 검색 시 유니코드 정규화를 수행하는 방식과 볼륨 생성 시 유니코드 정규화를 수행하는 방식 중 하나를 적용할 수 있다.
일례로, 프로세서(220)는 검색 시 검색 요청에 포함된 질의와 볼륨 내 문서를 모두 유니코드로 정규화하고 정규화된 문자열을 일정 형태로 변환한(예를 들어, downcase) 후 검색함으로써 컬레이션을 통한 검색 결과를 제공할 수 있다. 이때, 프로세서(220)는 검색 수행 시간을 최소화하기 위해 정규화 과정 또한 병렬로 수행할 수 있다.
다른 예로, 프로세서(220)는 볼륨 생성 시 전처리 방식으로 문서를 유니코드로 정규화한 후 저장할 수 있다. 도 11을 참조하면, 프로세서(220)는 볼륨 생성 과정에서 볼륨 내 문서를 정규화함과 동시에, 정규화된 문서를 원복할 수 있는 변환 테이블(1140)을 함께 생성할 수 있다. 변환 테이블(1140)은 문자열 내 변환 문자 위치를 나타내는 오프셋과 해당 위치의 원본 문자로 이루어질 수 있다. 이후, 프로세서(220)는 검색 시 질의를 정규화하고 해당 질의에 대해 이미 정규화해 놓은 문서로 검색할 수 있다. 검색 과정에서는 질의만 정규화하고 검색 대상이 되는 문서는 이미 정규화되어 있기 때문에 검색 부하를 줄일 수 있다. 검색 결과에 따른 문서 요약 시에는 원본 문서가 필요하므로 변환 테이블(1140)을 이용하여 해당 문서를 원복할 수 있다. 문서 요약은 검색 결과에 따라 일부 문서에 대해서만 수행하므로 원복할 문서가 적어 검색 응답 시간에 큰 영향을 주지 않는다.
이처럼 본 발명의 실시예들에 따르면, 본 발명의 실시예들에 따르면, 개별 데이터 검색 서비스에 특화된 엔진으로서 역색인 자료 구조를 사용하지 않고 개별 데이터 검색 서비스의 응답 속도를 만족할 수 있는 검색 엔진을 제공할 수 있다. 그리고, 본 발명의 실시예들에 따르면, 검색 대상이 되는 문서를 블록 단위의 압축 볼륨으로 생성하고 압축 볼륨을 병렬로 풀 스캔 검색함으로써 검색 효율이 높고 직관적인 검색 서비스를 제공할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 컴퓨터 장치에서 실행되는 개별 데이터 검색 방법에 있어서,
    상기 컴퓨터 장치는 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 개별 데이터 검색 방법은,
    상기 적어도 하나의 프로세서에 의해, 사용자와 관련된 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 압축하여 저장하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 검색 요청에 대응되는 복수 개의 볼륨을 병렬로 풀 스캔(full scan) 검색하는 단계
    를 포함하는 개별 데이터 검색 방법.
  2. 제1항에 있어서,
    상기 저장하는 단계는,
    상기 검색 대상 문서를 일정 크기의 블록 단위로 모아서 압축함으로써 압축 볼륨을 생성하는 단계
    를 포함하는 개별 데이터 검색 방법.
  3. 제1항에 있어서,
    상기 저장하는 단계는,
    신규 문서가 유입되는 경우 상기 신규 문서를 상기 검색 대상 문서로 이루어진 증분 볼륨(increment volume)에 덧붙이는(append) 단계; 및
    상기 증분 볼륨을 일정 크기의 블록 단위로 압축하여 압축 볼륨을 생성하는 단계
    를 포함하는 개별 데이터 검색 방법.
  4. 제3항에 있어서,
    상기 저장하는 단계는,
    상기 압축 볼륨이 생성된 이후 기존 문서가 삭제되는 경우 상기 기존 문서에 대한 삭제 정보를 마킹하는 단계
    를 더 포함하고,
    상기 마킹된 문서는 검색 결과에서 제외되는 것
    을 특징으로 하는 개별 데이터 검색 방법.
  5. 제1항에 있어서,
    상기 검색하는 단계는,
    역색인(inverted index) 자료구조를 사용하지 않고 상기 블록 단위의 압축 볼륨에 대한 풀 스캔 방식을 통해 질의와 부분일치하는 문서를 검색하는 것
    을 특징으로 하는 개별 데이터 검색 방법.
  6. 제1항에 있어서,
    상기 검색하는 단계는,
    상기 복수 개의 볼륨을 병렬로 디코딩하는 단계; 및
    상기 디코딩된 볼륨을 대상으로 병렬로 문자열 파인드(find)를 수행하는 단계
    를 포함하는 개별 데이터 검색 방법.
  7. 제1항에 있어서,
    상기 저장하는 단계는,
    서버 이중화를 위해 복수 개의 호스트에 상기 개별 데이터에 대한 복제 볼륨(replica volume)을 저장하는 단계
    를 포함하는 개별 데이터 검색 방법.
  8. 제1항에 있어서,
    상기 검색하는 단계는,
    상기 검색 요청에 포함된 질의와 상기 복수 개의 볼륨 내 문서를 유니코드로 정규화하는 단계; 및
    정규화된 문자열을 이용하여 컬레이션(collation) 검색을 수행하는 단계
    를 포함하는 개별 데이터 검색 방법.
  9. 제1항에 있어서,
    상기 저장하는 단계는,
    상기 검색 대상 문서를 유니코드로 정규화하는 단계
    를 포함하고,
    상기 검색하는 단계는,
    상기 검색 요청에 포함된 질의를 유니코드로 정규화하는 단계; 및
    정규화된 문자열을 이용하여 컬레이션 검색을 수행하는 단계
    를 포함하는 개별 데이터 검색 방법.
  10. 제9항에 있어서,
    상기 저장하는 단계는,
    변환 문자 위치를 나타내는 오프셋과 해당 위치의 원본 문자를 포함하는 변환 테이블을 생성하는 단계
    를 더 포함하는 개별 데이터 검색 방법.
  11. 제1항 내지 제10항 중 어느 한 항의 개별 데이터 검색 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독가능한 기록 매체에 저장되는 컴퓨터 프로그램.
  12. 컴퓨터 장치에 있어서,
    메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    사용자와 관련된 개별 데이터에 해당되는 검색 대상 문서를 블록 단위의 볼륨으로 압축하여 저장하는 문서 저장부; 및
    검색 요청에 대응되는 복수 개의 볼륨을 병렬로 풀 스캔 검색하는 병렬 검색부
    를 포함하는 컴퓨터 장치.
  13. 제12항에 있어서,
    상기 문서 저장부는,
    상기 검색 대상 문서를 일정 크기의 블록 단위로 모아서 압축함으로써 압축 볼륨을 생성하는 것
    을 특징으로 하는 컴퓨터 장치.
  14. 제12항에 있어서,
    상기 문서 저장부는,
    신규 문서가 유입되는 경우 상기 신규 문서를 상기 검색 대상 문서로 이루어진 증분 볼륨에 덧붙이고,
    상기 증분 볼륨을 일정 크기의 블록 단위로 압축하여 압축 볼륨을 생성하는 것
    을 특징으로 하는 컴퓨터 장치.
  15. 제14항에 있어서,
    상기 문서 저장부는,
    상기 압축 볼륨이 생성된 이후 기존 문서가 삭제되는 경우 상기 기존 문서에 대한 삭제 정보를 마킹하고,
    상기 마킹된 문서는 검색 결과에서 제외되는 것
    을 특징으로 하는 컴퓨터 장치.
  16. 제12항에 있어서,
    상기 병렬 검색부는,
    역색인 자료구조를 사용하지 않고 상기 블록 단위의 압축 볼륨에 대한 풀 스캔 방식을 통해 질의와 부분일치하는 문서를 검색하는 것
    을 특징으로 하는 컴퓨터 장치.
  17. 제12항에 있어서,
    상기 병렬 검색부는,
    상기 복수 개의 볼륨을 병렬로 디코딩하고,
    상기 디코딩된 볼륨을 대상으로 병렬로 문자열 파인드를 수행하는 것
    을 특징으로 하는 컴퓨터 장치.
  18. 제12항에 있어서,
    상기 병렬 검색부는,
    상기 검색 요청에 포함된 질의와 상기 복수 개의 볼륨 내 문서를 유니코드로 정규화하고,
    정규화된 문자열을 이용하여 컬레이션 검색을 수행하는 것
    을 특징으로 하는 컴퓨터 장치.
  19. 제12항에 있어서,
    상기 문서 저장부는,
    상기 검색 대상 문서를 유니코드로 정규화하고,
    상기 병렬 검색부는,
    상기 검색 요청에 포함된 질의를 유니코드로 정규화하고,
    정규화된 문자열을 이용하여 컬레이션 검색을 수행하는 것
    을 특징으로 하는 컴퓨터 장치.
  20. 제19항에 있어서,
    상기 문서 저장부는,
    변환 문자 위치를 나타내는 오프셋과 해당 위치의 원본 문자를 포함하는 변환 테이블을 생성하는 것
    을 특징으로 하는 컴퓨터 장치.
KR1020210071229A 2021-06-02 2021-06-02 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램 KR102592785B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210071229A KR102592785B1 (ko) 2021-06-02 2021-06-02 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램
JP2022088502A JP7377915B2 (ja) 2021-06-02 2022-05-31 個別データ検索サービスを提供する方法、コンピュータ装置、およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210071229A KR102592785B1 (ko) 2021-06-02 2021-06-02 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20220162963A KR20220162963A (ko) 2022-12-09
KR102592785B1 true KR102592785B1 (ko) 2023-10-23

Family

ID=84438719

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210071229A KR102592785B1 (ko) 2021-06-02 2021-06-02 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

Country Status (2)

Country Link
JP (1) JP7377915B2 (ko)
KR (1) KR102592785B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196646A (ja) 2012-03-22 2013-09-30 Toshiba Corp メモリ制御装置、データ記憶装置及びメモリ制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3842319B2 (ja) * 1995-11-08 2006-11-08 富士通株式会社 情報検索システム
JPH1027183A (ja) * 1997-04-11 1998-01-27 Hitachi Ltd データ登録方法および装置
US10552044B2 (en) 2014-03-27 2020-02-04 Hitachi, Ltd. Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer
KR101727508B1 (ko) * 2015-07-28 2017-04-18 서울과학기술대학교 산학협력단 하둡 기반 하드웨어 압축 고속화 장치 및 방법
CN106528846B (zh) 2016-11-21 2019-09-17 广州华多网络科技有限公司 一种检索方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196646A (ja) 2012-03-22 2013-09-30 Toshiba Corp メモリ制御装置、データ記憶装置及びメモリ制御方法

Also Published As

Publication number Publication date
JP2022185581A (ja) 2022-12-14
KR20220162963A (ko) 2022-12-09
JP7377915B2 (ja) 2023-11-10

Similar Documents

Publication Publication Date Title
US11068444B2 (en) Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data
EP3238344B1 (en) Lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve
KR20130049111A (ko) 분산 처리를 이용한 포렌식 인덱스 방법 및 장치
US20210144405A1 (en) Lossless reduction of data by using a prime data sieve and performing multidimensional search and content-associative retrieval on data that has been losslessly reduced using a prime data sieve
US9922041B2 (en) Storing data files in a file system
EP3311494B1 (en) Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve
US11663177B2 (en) Systems and methods for extracting data in column-based not only structured query language (NoSQL) databases
CN115427945A (zh) 基于文件系统目录树或对象存储桶的定制元数据标签继承
EP3387647A1 (en) Reduction of audio data and data stored on a block processing storage system
US10754859B2 (en) Encoding edges in graph databases
EP2856359B1 (en) Systems and methods for storing data and eliminating redundancy
US20180349443A1 (en) Edge store compression in graph databases
KR102592785B1 (ko) 개별 데이터 검색 서비스를 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램
JPWO2010101189A1 (ja) 情報処理システムと方法
CN106776772B (zh) 一种数据检索的方法及装置
US11494093B2 (en) Method and apparatus for processing data of in-memory database
JP4304226B2 (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
Qu et al. Efficient file accessing techniques on hadoop distributed file systems
Cohen Naive Bayes and Map-Reduce
JP2013178711A (ja) 全文検索装置、プログラム及び記録媒体

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant