KR20220078180A - 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법 - Google Patents

분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법 Download PDF

Info

Publication number
KR20220078180A
KR20220078180A KR1020200167430A KR20200167430A KR20220078180A KR 20220078180 A KR20220078180 A KR 20220078180A KR 1020200167430 A KR1020200167430 A KR 1020200167430A KR 20200167430 A KR20200167430 A KR 20200167430A KR 20220078180 A KR20220078180 A KR 20220078180A
Authority
KR
South Korea
Prior art keywords
search engine
node
engine node
search
query
Prior art date
Application number
KR1020200167430A
Other languages
English (en)
Other versions
KR102503958B1 (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 KR1020200167430A priority Critical patent/KR102503958B1/ko
Publication of KR20220078180A publication Critical patent/KR20220078180A/ko
Application granted granted Critical
Publication of KR102503958B1 publication Critical patent/KR102503958B1/ko

Links

Images

Classifications

    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases

Abstract

본 발명은 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법에 관한 것으로, 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 장치로서, 각 검색엔진 노드에는, 일정 주기마다 분산 네트워크 및 각 검색엔진 노드의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하고, 각 검색엔진 노드를 그래프화하여 각 검색엔진 노드들을 잇는 간선에 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 노드간 가중치 계산부와, 샤드/레플리카(Shard/Replica)의 배치 또는 재배치 시 호출되어, 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 컬렉션 분포정보 관리부와, 노드간 가중치 계산부로부터 생성된 그래프 인접리스트 정보데이터 및 컬렉션 분포정보 관리부로부터 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 데이터 저장부와, 사용자로부터 검색 쿼리의 요청 시 호출되어, 데이터 저장부에 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 최단거리 계산부를 포함하여 이루어짐으로써, 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 효과적으로 개선할 수 있다.

Description

분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법{APPARATUS FOR PLACING QUERY IN DISTRIBUTED NETWORKS ENVIRONMENT AND METHOD THEREOF}
본 발명은 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법에 관한 것으로, 보다 상세하게는 분산 네트워크 환경에서 구성된 검색엔진 노드에서 검색 속도를 향상시키기 위한 쿼리(Query)의 배치를 최적화할 수 있도록 한 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법에 관한 것이다.
최근 컴퓨터 저장 기술과 네트워크 기술의 발전으로 대용량의 정보를 저장하고 빠른 속도로 데이터 이동이 가능하게 되어 다량의 데이터를 다수의 시스템에 분산 저장하는 분산 네트워크 시스템의 구현이 가능해졌다.
그런데, 이러한 다수의 시스템에 분산된 다량의 데이터로부터 정보를 검색하기 위해서는 데이터 및 노드를 분산화시켜 빠른 속도로 검색 결과를 획득할 수 있는 검색 엔진을 이용한다.
일반적으로, 검색엔진은 그 검색 대상이 되는 문서들을 사전에 색인화(인덱싱, indexing)한 후, 외부에서 입력되는 입력 조건에 의해 해당 문서를 검색하여 사용자에게 제공하는 일련의 과정을 수행한다.
구체적으로, 검색엔진은 문서의 색인 과정을 통해 색인이 되어야 할 단어(이하 색인어)의 위치 정보, 색인어가 들어가 있는 문서 번호를 데이터 구조에 저장하고 이를 파일화하며, 검색 질의 요청이 왔을 때 질의에 대한 결과 정보를 문서 전체를 하나씩 검색하지 않고 색인 과정을 통해 생성된 색인 파일만 조회하여 사용자에게 검색 쿼리 및 키워드에 가장 적합한 결과물을 제공하는 일련의 과정을 수행함으로써 문서 검색 품질 및 속도를 향상시키는 역할을 수행할 수 있다.
최근 검색엔진 분야에서 MSA(Micro Service Architecture) 서비스 요구가 확대됨에 따라, 점차 여러 대의 서버에 검색엔진을 분산시키는 방향으로 진화하는 추세이다.
한편, 종래의 분산 네트워크 환경에서 검색엔진의 노드가 물리적인 서버로 분산되어 있을 경우 각 서버의 자원량이나 네트워크 속도가 검색 품질에 영향을 미치게 되고, 이 외에도 한 검색엔진의 노드에 부하가 몰리거나 서버 자원이 낭비될 수 있는 문제점이 있다.
국내 등록특허 제10-2089348호(2020.03.16. 공고)
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들에서 공유하는 데이터 저장부에 업데이트되는 정보를 기반으로 사용자로부터 쿼리(Query)를 요청받은 검색엔지 노드에서 가장 최적의 검색엔진 노드로 쿼리를 전달함으로써, 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 효과적으로 개선할 수 있도록 한 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법을 제공하는데 있다.
전술한 목적을 달성하기 위하여 본 발명의 제1 측면은, 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 장치로서, 각 검색엔진 노드에는, 일정 주기마다 분산 네트워크 및 각 검색엔진 노드의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하고, 각 검색엔진 노드를 그래프화하여 각 검색엔진 노드들을 잇는 간선에 상기 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 노드간 가중치 계산부; 샤드/레플리카(Shard/Replica)의 배치 또는 재배치 시 호출되어, 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 컬렉션 분포정보 관리부; 상기 노드간 가중치 계산부로부터 생성된 그래프 인접리스트 정보데이터 및 상기 컬렉션 분포정보 관리부로부터 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 데이터 저장부; 및 사용자로부터 검색 쿼리의 요청 시 호출되어, 상기 데이터 저장부에 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 최단거리 계산부를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치를 제공하는 것이다.
여기서, 상기 노드간 가중치 계산부는, 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정하고, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산함이 바람직하다.
바람직하게, 상기 노드간 가중치 계산부는, 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드의 리소스(Resource)를 확인하고, 상기 확인된 해당 각 검색엔진 노드의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 해당 각 검색엔진 노드의 리소스는, CPU 사용량 또는 유휴 메모리 크기 중 적어도 하나를 포함하여 이루어질 수 있다.
바람직하게, 상기 노드간 가중치 계산부는, 해당 각 검색엔진 노드에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 상기 노드간 가중치 계산부는, 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 상기 데이터 저장부는, 상기 노드간 가중치 계산부로부터 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)하고, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리할 수 있다.
바람직하게, 상기 데이터 저장부는, 상기 컬렉션 분포정보 관리부로부터 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드의 컬렉션 분포를 업데이트(Update)하고, 상기 업데이트된 각 검색엔진 노드의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리할 수 있다.
바람직하게, 상기 데이터 저장부는, 클러스터링에 참여한 각 검색엔진 노드가 상기 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리할 수 있다.
바람직하게, 각 검색엔진 노드는, 모듈(Module), 장치(Device), 단말(Terminal), 및 서버(Server) 중 적어도 하나로 이루어질 수 있다.
본 발명의 제2 측면은, 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 방법로서, (a) 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 일정 주기마다 분산 네트워크 및 각 검색엔진 노드의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하는 단계; (b) 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 각 검색엔진 노드를 그래프화하여 각 검색엔진 노드들을 잇는 간선에 상기 단계(a)에서 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 단계; (c) 각 검색엔진 노드에 구비된 컬렉션 분포정보 관리부를 통해 샤드/레플리카(Shard/Replica)의 배치 또는 재배치 시 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 단계; (d) 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(b)에서 생성된 그래프 인접리스트 정보데이터 및 상기 단계(c)에서 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 단계; 및 (e) 각 검색엔진 노드에 구비된 최단거리 계산부를 통해 사용자로부터 검색 쿼리의 요청 시 상기 단계(d)에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 단계를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법을 제공하는 것이다.
여기서, 상기 단계(a)에서, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정한 후, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산함이 바람직하다.
바람직하게, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드의 리소스(Resource)를 확인한 후, 상기 확인된 해당 각 검색엔진 노드의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 해당 각 검색엔진 노드의 리소스는, CPU 사용량 또는 유휴 메모리 크기 중 적어도 하나를 포함하여 이루어질 수 있다.
바람직하게, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 해당 각 검색엔진 노드에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 상기 단계(a)에서, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 각 검색엔진 노드 간 가중치의 계산 시 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산할 수 있다.
바람직하게, 상기 단계(d)에서, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(b)에서 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)한 후, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리할 수 있다.
바람직하게, 상기 단계(d)에서, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(c)에서 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드의 컬렉션 분포를 업데이트(Update)한 후, 상기 업데이트된 각 검색엔진 노드의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리할 수 있다.
바람직하게, 상기 단계(d) 이후에, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 클러스터링에 참여한 각 검색엔진 노드가 상기 단계(d)에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리하는 단계를 더 포함할 수 있다.
바람직하게, 각 검색엔진 노드는, 모듈(Module), 장치(Device), 단말(Terminal), 및 서버(Server) 중 적어도 하나로 이루어질 수 있다.
본 발명의 제3 측면은, 상술한 분산 네트워크 환경에서의 쿼리 배치 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명에 따른 분산 네트워크 환경에서의 쿼리 배치 방법은 컴퓨터로 판독할 수 있는 기록매체에 컴퓨터로 판독할 수 있는 코드로 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체에는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피 디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있다.
이상에서 설명한 바와 같은 본 발명의 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법에 따르면, 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들에서 공유하는 데이터 저장부에 업데이트되는 정보를 기반으로 사용자로부터 쿼리(Query)를 요청받은 검색엔지 노드에서 가장 최적의 검색엔진 노드로 쿼리를 전달함으로써, 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 효과적으로 개선할 수 있는 이점이 있다.
또한, 본 발명에 따르면, 검색 쿼리를 배치할 검색엔진 노드를 계산할 때 각 검색엔진 노드 간 네트워크 속도 및 서버 자원량 등의 정보를 반영함으로써, 검색 시 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 개선할 수 있는 이점이 있다.
도 1은 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치를 적용한 분산 네트워크 시스템을 나타낸 개념도이다.
도 2는 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치를 설명하기 위한 구체적인 블록 구성도이다.
도 3 및 도 4는 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법을 설명하기 위한 전체적인 흐름도이다.
도 5 내지 도 7은 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법에 대한 과정의 일 예를 설명하기 위한 도면들이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들(실행 엔진)에 의해 수행될 수도 있으며, 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.
그리고, 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명되는 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능들을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있으며, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하며, 또한 그 블록들 또는 단계들이 필요에 따라 해당하는 기능의 역순으로 수행되는 것도 가능하다.
본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1개의 유닛이 2개 이상의 하드웨어를 이용하여 실현되어도 되고, 2개 이상의 유닛이 1개의 하드웨어에 의해 실현되어도 된다. 본 명세서 있어서 단말, 장치 또는 디바이스가 수행하는 것으로 기술된 동작이나 기능 중 일부는 해당 단말, 장치 또는 디바이스와 연결된 서버에서 대신 수행될 수도 있다. 이와 마찬가지로, 서버가 수행하는 것으로 기술된 동작이나 기능 중 일부도 해당 서버와 연결된 단말, 장치 또는 디바이스에서 수행될 수도 있다. 이하 첨부된 도면을 참고하여 본 발명의 일 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치를 적용한 분산 네트워크 시스템을 나타낸 개념도이고, 도 2는 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치를 설명하기 위한 구체적인 블록 구성도이다.
도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치(100)는 분산 네트워크(Distributed Networks) 환경으로 연결된 다수의 검색엔진 노드들(Node-1 내지 Node-n) 내에 구비되어, 다수의 검색엔진 노드들(Node-1 내지 Node-n) 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 장치이다.
이러한 분산 네트워크 환경에서의 쿼리 배치 장치(100)를 통해 검색 쿼리를 배치할 검색엔진 노드를 계산할 때 각 검색엔진 노드 간 네트워크 속도 및 서버 자원량 등의 정보를 반영함으로써, 검색 시 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 개선할 수 있다.
또한, 분산 네트워크 환경에서의 쿼리 배치 장치(100)를 통해 검색엔진 노드를 그래프화하여 해당 검색엔진 노드들을 잇는 간선에 가중치를 부여하고, 컬렉션 배치 정보를 데이터 저장부(130)에 공유함과 아울러 검색에 필요하지 않은 검색엔진 노드는 쿼리 배치 계산 로직에서 배제함으로써, 검색 시 사용되는 시스템 자원을 효율적으로 사용하고 검색 속도를 개선할 수 있다.
이때, 상기 분산 네트워크 환경은 다수의 검색엔진 노드들(Node-1 내지 Node-n)이 네트워크 등으로 접속되고, 각 검색엔진 노드들(Node-1 내지 Node-n)이 소유하고 있는 자원을 공유하여, 효율이 좋은 처리를 할 수 있도록 구성된 분산 처리 시스템으로 구현될 수 있다.
한편, 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들(Node-1 내지 Node-n)은 예컨대, 모듈(Module), 장치(Device), 단말(Terminal), 및/또는 서버(Server) 중 적어도 하나로 이루어짐이 바람직하다.
즉, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치(100)는, 도 2에 도시된 바와 같이, 크게 노드간 가중치 계산부(110), 컬렉션 분포정보 관리부(120), 데이터 저장부(130), 및 최단거리 계산부(140) 등을 포함하여 이루어진다. 한편, 도 2에 도시된 구성요소들이 필수적인 것은 아니어서, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치(100)는 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 가질 수도 있다.
이하, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 장치(100)의 구성요소들에 대해 구체적으로 살펴보면 다음과 같다.
노드간 가중치 계산부(110)는 일정 주기마다 분산 네트워크 및 각 검색엔진 노드(Node-1 내지 Node-n)의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하고, 각 검색엔진 노드(Node-1 내지 Node-n)를 그래프화하여 각 검색엔진 노드들(Node-1 내지 Node-n)을 잇는 간선에 상기 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 기능을 수행한다.
또한, 노드간 가중치 계산부(110)는 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정하고, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 기능을 수행할 수 있다.
또한, 노드간 가중치 계산부(110)는 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드(Node-1 내지 Node-n)의 리소스(Resource)를 확인하고, 상기 확인된 해당 각 검색엔진 노드(Node-1 내지 Node-n)의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 기능을 수행할 수 있다.
이때, 해당 각 검색엔진 노드(Node-1 내지 Node-n)의 리소스는 예컨대, CPU 사용량 및/또는 유휴 메모리 크기 중 적어도 하나를 포함하여 이루어짐이 바람직하다.
또한, 노드간 가중치 계산부(110)는 해당 각 검색엔진 노드(Node-1 내지 Node-n)에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 기능을 수행할 수 있다.
또한, 노드간 가중치 계산부(110)는 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산하는 기능을 수행할 수 있다.
컬렉션 분포정보 관리부(120)는 샤드/레플리카(Shard/Replica)의 배치 및/또는 재배치 시 호출되어, 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 기능을 수행한다.
데이터 저장부(130)는 노드간 가중치 계산부(110)로부터 생성된 그래프 인접리스트 정보데이터 및 컬렉션 분포정보 관리부(120)로부터 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 기능을 수행한다.
또한, 데이터 저장부(130)는 노드간 가중치 계산부(110)로부터 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)하고, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리하는 기능을 수행할 수 있다.
또한, 데이터 저장부(130)는 컬렉션 분포정보 관리부(120)로부터 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드의 컬렉션 분포를 업데이트(Update)하고, 상기 업데이트된 각 검색엔진 노드의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리하는 기능을 수행할 수 있다.
또한, 데이터 저장부(130)는 클러스터링에 참여한 각 검색엔진 노드(Node-1 내지 Node-n)가 상기 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리하는 기능을 수행할 수 있다.
즉, 각 검색엔진 노드(Node-1 내지 Node-n)에서 데이터 저장부(130)에 저장된 정보를 업데이트하면 이를 참조하고 있는 모든 검색엔진 노드가 업데이트된 데이터를 가져간다.
그리고, 최단거리 계산부(140)는 사용자로부터 검색 쿼리의 요청 시 호출되어, 검색 쿼리를 요청받은 검색엔진 노드에서 해당 검색 쿼리를 보낼 가장 최단거리 검색엔진 노드를 계산하는 기능을 수행한다.
즉, 최단거리 계산부(140)는 데이터 저장부(130)에 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 기능을 수행한다.
한편, 본 발명의 일 실시예에서 적용된 각 검색엔진 노드(Node-1 내지 Node-n)가 단말(Terminal)로 적용될 경우, 무선 인터넷 또는 휴대 인터넷을 통하여 통신하는 스마트폰(Smart Phone), 스마트 패드(Smart Pad) 또는 스마트 노트(Smart Note) 중 적어도 어느 하나의 이동 단말로 이루어짐이 바람직하며, 이외에도 개인용 PC, 노트북 PC, 팜(Palm) PC, 모바일 게임기(Mobile play-station), 통신 기능이 있는 DMB(Digital Multimedia Broadcasting)폰, 태블릿 PC, 아이패드(iPad) 등 각 노드에 접속하기 위한 사용자 인터페이스를 갖는 모든 유무선 가전/통신 장치를 포괄적으로 의미할 수 있다.
다른 한편, 본 발명의 일 실시예에서 적용된 각 검색엔진 노드(Node-1 내지 Node-n)가 서버(Server)로 적용될 경우, 분산 네트워크를 통하여 원격지의 서버나 단말에 접속할 수 있는 서버 컴퓨터로 구현될 수 있다. 여기서, 서버 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(Desktop), 랩톱(Laptop) 등을 포함할 수 있다.
여기서, 상기 분산 네트워크는 통상의 통신망(Communication Network)을 이용하여 구현될 수 있는 바, 상기 통신망은 예컨대, 이더넷(Ethernet) 또는 이동 통신망 등으로 이루어질 수 있으며, 대용량, 장거리 음성 및 데이터 서비스가 가능한 대형 통신망의 고속 기간 망인 통신망일 수도 있으며, 인터넷(Internet) 또는 고속의 멀티미디어 서비스를 제공하기 위한 와이파이(WiFi), 와이브로(Wibro), 와이맥스(Wimax) 등을 포함하는 차세대 무선망일 수도 있다.
상기 인터넷은 TCP/IP 프로토콜 및 그 상위계층에 존재하는 여러 서비스, 즉 HTTP(Hyper Text Transfer Protocol), Telnet, FTP(File Transfer Protocol), DNS(Domain Name System), SMTP(Simple Mail Transfer Protocol), SNMP(Simple Network Management Protocol), NFS(Network File Service), NIS(Network Information Service) 등을 제공하는 전 세계적인 개방형 컴퓨터 네트워크 구조를 의미하며, 각 검색엔진 노드(Node-1 내지 Node-n)에 접속될 수 있게 하는 환경을 제공한다. 한편, 상기 인터넷은 유선 또는 무선 인터넷일 수도 있고, 이외에도 유선 공중망, 무선 이동 통신망, 또는 휴대 인터넷 등과 통합된 코어망일 수도 있다.
만약, 상기 통신망이 이동 통신망일 경우 동기식 이동 통신망일 수도 있고, 비동기식 이동 통신망일 수도 있다. 상기 비동기식 이동 통신망의 실시 예로서, WCDMA(Wideband Code Division Multiple Access) 방식의 통신망을 들 수 있다. 이 경우 도면에 도시되진 않았지만, 상기 이동 통신망은 예컨대, RNC(Radio Network Controller) 등을 포함할 수 있다. 한편, 상기 WCDMA망을 일 예로 들었지만, 3G LTE망, 4G망, 5G망 등 차세대 통신망, 그 밖의 IP를 기반으로 한 IP 망일 수 있다. 이러한 상기 통신망은 각 검색엔진 노드(Node-1 내지 Node-n) 상호 간의 신호 및 데이터를 상호 전달하는 역할을 수행한다.
한편, 본 발명의 일 실시예에서 언급된 분산 네트워크는 통상의 블록체인 네트워크로 구현될 수도 있다. 상기 블록체인(Block Chain)은 지속적으로 증가하는 데이터를 특정 단위의 블록에 기록하고, P2P(Peer to Peer) 네트워크를 구성하는 각각의 노드들이 상기 블록을 체인 형태의 자료 구조로 관리하는 데이터 관리 기술 또는 상기 체인 형태의 자료 구조로 구성된 데이터 그 자체를 의미한다.
이때, 체인 형태의 자료 구조로 구성된 블록체인 데이터는, 중앙 시스템 없이 각각의 노드에서 분산 원장(Distributed Ledger) 형태로 운영된다.
그리고, 블록체인 네트워크를 구성하는 각각의 블록체인 노드는 자료 구조로 블록들을 관리한다. 여기서, 각 블록에는 이전 블록에 대한 해쉬값이 기록되며, 상기 해쉬값을 통해 이전 블록이 참조될 수 있다. 따라서, 블록이 쌓일수록 블록 내에 기록된 거래 데이터의 위변조는 어려워지고, 각 블록에 기록된 거래 데이터의 신뢰도는 향상되게 된다.
즉, 블록체인 데이터란 블록체인 네트워크를 구성하는 각각의 블록체인 노드가 유지하는 데이터로, 적어도 하나의 블록이 체인 형태의 자료 구조로 구성되는 데이터를 의미한다.
각 블록에 기록된 데이터가 트랜잭션 데이터인 경우, 상기 블록체인 데이터는 분산 원장으로 이용될 수 있다. 다만, 각 블록에 기록되는 데이터의 종류는 얼마든지 달라질 수 있다.
또한, 상기 블록체인 네트워크란 블록체인 알고리즘에 따라 동작하는 복수의 블록체인 노드로 구성된 P2P(Peer to Peer) 구조의 네트워크를 의미한다.
또한, 상기 블록체인 노드란, 상기 블록체인 네트워크를 구성하고 블록체인 알고리즘에 기초하여 블록체인 데이터를 유지하고 관리하는 주체를 의미한다. 상기 블록체인 노드는 단일 컴퓨팅 장치로 구현될 수 있으나, 가상 머신(Virtual Machine) 등으로 구현될 수도 있다. 가상 머신으로 구현되는 경우, 단일 컴퓨팅 장치에 복수의 블록체인 노드가 존재할 수 있다.
전술한 바와 같이, 상기 블록체인(Block Chain)은 공공 거래 장부이며 특정의 콘텐츠 파일에 대해 거래할 때 발생할 수 있는 해킹을 막는 기술이다. 이때, 상기 블록체인은 분산 데이터베이스(DB)의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가능하고, 데이터 기록 리스트의 거래 기록은 의무적으로 암호화되고 블록체인 소프트웨어를 실행하는 컴퓨터상에서 운영되고 있다.
상기 블록체인의 구조는, 대규모의 노드들 사이에서 각 노드에 분산 저장된 장부의 데이터를 항상 최신 버전으로 유지할 수 있도록 하는 합의 수렴 알고리즘을 이용하고, 이러한 구조는 노드가 익명으로 실행되거나, 연결이 좋지 않거나, 심지어 신뢰할 수 없는 운영자가 참여하는 것도 가능하게 한다.
이하에는 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법을 구체적으로 설명하기로 한다.
도 3 및 도 4는 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법을 설명하기 위한 전체적인 흐름도이고, 도 5 내지 도 7은 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법에 대한 과정의 일 예를 설명하기 위한 도면들이다.
도 1 내지 도 7을 참조하면, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법은, 먼저, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 일정 주기마다 분산 네트워크 및 각 검색엔진 노드(Node-1 내지 Node-n)의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산한다(S100).
이때, 상기 단계S100에서, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정한 후, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산함이 바람직하다.
또한, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드(Node-1 내지 Node-n)의 리소스(Resource)(예컨대, CPU 사용량 및/또는 유휴 메모리 크기 등)를 확인한 후, 상기 확인된 해당 각 검색엔진 노드(Node-1 내지 Node-n)의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수 있다.
또한, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 해당 각 검색엔진 노드(Node-1 내지 Node-n)에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산할 수도 있다.
또한, 상기 단계S100에서, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 각 검색엔진 노드 간 가중치의 계산 시 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산함이 바람직하다.
즉, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 각 검색엔진 노드(Node-1 내지 Node-n) 간 가중치의 계산은 상기 제1 내지 제3 우선순위에 따라 각 우선순위에 대응되는 기 설정된 가중치를 부여할 수 있다.
이후에, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 노드간 가중치 계산부(110)를 통해 각 검색엔진 노드(Node-1 내지 Node-n)를 그래프화하여 각 검색엔진 노드들(Node-1 내지 Node-n)을 잇는 간선에 상기 단계S100에서 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성한다(S200)(도 5 참조).
그런 다음, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 컬렉션 분포정보 관리부(120)를 통해 샤드/레플리카(Shard/Replica)의 배치 및/또는 재배치 시 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리한다(S300).
다음으로, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 데이터 저장부(130)를 통해 상기 단계S200에서 생성된 그래프 인접리스트 정보데이터 및 상기 단계S300에서 생성 및 관리된 컬렉션 분포 정보데이터를 저장한다(S400).
이때, 상기 단계S400에서, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 데이터 저장부(130)를 통해 상기 단계S200에서 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)한 후, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리함이 바람직하다.
또한, 상기 단계S400에서, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 데이터 저장부(130)를 통해 상기 단계S300에서 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드(Node-1 내지 Node-n)의 컬렉션 분포를 업데이트(Update)한 후, 상기 업데이트된 각 검색엔진 노드(Node-1 내지 Node-n)의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리함이 바람직하다.
마지막으로, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 최단거리 계산부(140)를 통해 사용자로부터 검색 쿼리의 요청 시 상기 단계S400에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후(도 6 참조), 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산한다(S500)(도 7 참조).
이때, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산은 각 검색엔진 노드 간 가중치로 결정할 수 있다.
예컨대, 도 7에 도시된 바와 같이, 샤드/레플리카(Shard/Replica)의 컬렉션 데이터(collection A)를 가져올 수 있는 방안은 두 가지 경우("Node-2 + Node-4 : 300", "Node-3 : 200")가 있고, 이 중 가중치가 더 높은 첫 번째 방법("Node-2 + Node-4 : 300")으로 해당 검색 쿼리를 보낸다.
추가적으로, 도면에 도시되진 않았지만, 상기 단계S400 이후에, 각 검색엔진 노드(Node-1 내지 Node-n)에 구비된 데이터 저장부(130)를 통해 클러스터링에 참여한 각 검색엔진 노드(Node-1 내지 Node-n)가 상기 단계S400에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리하는 단계를 더 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 분산 네트워크 환경에서의 쿼리 배치 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있다.
또한, 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
전술한 본 발명에 따른 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법에 대한 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
110 : 노드간 가중치 계산부,
120 : 컬렉션 분포정보 관리부,
130 : 데이터 저장부,
140 : 최단거리 계산부

Claims (21)

  1. 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 장치로서,
    각 검색엔진 노드에는,
    일정 주기마다 분산 네트워크 및 각 검색엔진 노드의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하고, 각 검색엔진 노드를 그래프화하여 각 검색엔진 노드들을 잇는 간선에 상기 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 노드간 가중치 계산부;
    샤드/레플리카(Shard/Replica)의 배치 또는 재배치 시 호출되어, 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 컬렉션 분포정보 관리부;
    상기 노드간 가중치 계산부로부터 생성된 그래프 인접리스트 정보데이터 및 상기 컬렉션 분포정보 관리부로부터 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 데이터 저장부; 및
    사용자로부터 검색 쿼리의 요청 시 호출되어, 상기 데이터 저장부에 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 최단거리 계산부를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  2. 제1 항에 있어서,
    상기 노드간 가중치 계산부는, 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정하고, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  3. 제2 항에 있어서,
    상기 노드간 가중치 계산부는, 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드의 리소스(Resource)를 확인하고, 상기 확인된 해당 각 검색엔진 노드의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  4. 제3 항에 있어서,
    해당 각 검색엔진 노드의 리소스는, CPU 사용량 또는 유휴 메모리 크기 중 적어도 하나를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  5. 제3 항에 있어서,
    상기 노드간 가중치 계산부는, 해당 각 검색엔진 노드에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  6. 제1 항에 있어서,
    상기 노드간 가중치 계산부는, 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  7. 제1 항에 있어서,
    상기 데이터 저장부는, 상기 노드간 가중치 계산부로부터 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)하고, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  8. 제1 항에 있어서,
    상기 데이터 저장부는, 상기 컬렉션 분포정보 관리부로부터 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드의 컬렉션 분포를 업데이트(Update)하고, 상기 업데이트된 각 검색엔진 노드의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  9. 제1 항에 있어서,
    상기 데이터 저장부는, 클러스터링에 참여한 각 검색엔진 노드가 상기 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  10. 제1 항에 있어서,
    각 검색엔진 노드는, 모듈(Module), 장치(Device), 단말(Terminal), 및 서버(Server) 중 적어도 하나로 이루어지는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  11. 분산 네트워크 환경으로 연결된 다수의 검색엔진 노드들 중 어느 하나의 검색엔진 노드에서 사용자로부터 검색 쿼리(Query)를 요청받을 경우, 해당 검색 쿼리를 요청받은 검색엔진 노드에서 가장 최적의 검색엔진 노드로 해당 검색 쿼리를 전달하기 위한 방법로서,
    (a) 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 일정 주기마다 분산 네트워크 및 각 검색엔진 노드의 상황을 반영하여 각 검색엔진 노드 간 가중치를 계산하는 단계;
    (b) 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 각 검색엔진 노드를 그래프화하여 각 검색엔진 노드들을 잇는 간선에 상기 단계(a)에서 계산된 각 검색엔진 노드 간 가중치를 바탕으로 그래프 인접리스트 정보데이터를 생성하는 단계;
    (c) 각 검색엔진 노드에 구비된 컬렉션 분포정보 관리부를 통해 샤드/레플리카(Shard/Replica)의 배치 또는 재배치 시 컬렉션(Collection) 데이터가 분산되어 있는 샤드/레플리카(Shard/Replica)의 컬렉션 분포 정보데이터를 생성 및 관리하는 단계;
    (d) 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(b)에서 생성된 그래프 인접리스트 정보데이터 및 상기 단계(c)에서 생성 및 관리된 컬렉션 분포 정보데이터를 저장하는 단계; 및
    (e) 각 검색엔진 노드에 구비된 최단거리 계산부를 통해 사용자로부터 검색 쿼리의 요청 시 상기 단계(d)에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 기반으로 해당 검색 쿼리의 요청이 들어온 샤드/레플리카(Shard/Replica)의 컬렉션 데이터가 없는 검색엔진 노드가 포함된 그래프 인접리스트 정보를 제외한 후, 남은 그래프 인접리스트 정보들을 바탕으로 해당 검색 쿼리를 요청받은 검색엔진 노드에서 분산되어 있는 검색으로 요청한 컬렉션을 처리할 수 있는 샤드/레플리카(shard/Replica) 중 가장 최단거리를 계산하는 단계를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  12. 제11 항에 있어서,
    상기 단계(a)에서, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 일정 주기마다 각 검색엔진 노드 간 네트워크 속도를 측정한 후, 상기 측정된 각 검색엔진 노드 간 네트워크 속도를 제1 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  13. 제12 항에 있어서,
    각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 상기 측정된 각 검색엔진 노드 간 네트워크 속도가 기 설정된 기준 오차범위 내에 존재할 경우, 해당 각 검색엔진 노드의 리소스(Resource)를 확인한 후, 상기 확인된 해당 각 검색엔진 노드의 리소스를 제2 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  14. 제13 항에 있어서,
    해당 각 검색엔진 노드의 리소스는, CPU 사용량 또는 유휴 메모리 크기 중 적어도 하나를 포함하여 이루어진 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  15. 제13 항에 있어서,
    각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 해당 각 검색엔진 노드에 검색 부하가 걸려있는지 확인을 위한 스레드(Thread) 사용량을 제3 우선순위로 반영하여 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 장치.
  16. 제11 항에 있어서,
    상기 단계(a)에서, 각 검색엔진 노드에 구비된 노드간 가중치 계산부를 통해 각 검색엔진 노드 간 가중치의 계산 시 검색 트래픽의 수가 기 설정된 기준치보다 적은 시점에 각 검색엔진 노드 간 가중치를 계산하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  17. 제11 항에 있어서,
    상기 단계(d)에서, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(b)에서 생성된 그래프 인접리스트 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드 간 가중치를 업데이트(Update)한 후, 상기 업데이트 된 각 검색엔진 노드 간 가중치를 바탕으로 각 검색엔진 노드별로 그래프 인접리스트 정보를 데이터베이스(DB)화하여 저장 및 관리하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  18. 제11 항에 있어서,
    상기 단계(d)에서, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 상기 단계(c)에서 생성 및 관리된 컬렉션 분포 정보데이터를 기 설정된 일정 주기마다 제공받아 이를 기반으로 각 검색엔진 노드의 컬렉션 분포를 업데이트(Update)한 후, 상기 업데이트된 각 검색엔진 노드의 컬렉션 분포를 바탕으로 각 검색엔진 노드별로 컬렉션 분포 정보를 데이터베이스(DB)화하여 저장 및 관리하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  19. 제11 항에 있어서,
    상기 단계(d) 이후에, 각 검색엔진 노드에 구비된 데이터 저장부를 통해 클러스터링에 참여한 각 검색엔진 노드가 상기 단계(d)에서 저장된 그래프 인접리스트 정보데이터 및 컬렉션 분포 정보데이터를 공유할 수 있도록 관리하는 단계를 더 포함하는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  20. 제11 항에 있어서,
    각 검색엔진 노드는, 모듈(Module), 장치(Device), 단말(Terminal), 및 서버(Server) 중 적어도 하나로 이루어지는 것을 특징으로 하는 분산 네트워크 환경에서의 쿼리 배치 방법.
  21. 제11 항 내지 제20 항 중 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020200167430A 2020-12-03 2020-12-03 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법 KR102503958B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200167430A KR102503958B1 (ko) 2020-12-03 2020-12-03 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200167430A KR102503958B1 (ko) 2020-12-03 2020-12-03 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20220078180A true KR20220078180A (ko) 2022-06-10
KR102503958B1 KR102503958B1 (ko) 2023-02-27

Family

ID=81986412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200167430A KR102503958B1 (ko) 2020-12-03 2020-12-03 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102503958B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290617A (zh) * 2023-08-18 2023-12-26 中国船舶集团有限公司第七〇九研究所 一种海上分布式多源异构时空数据查询方法及系统
CN117290617B (zh) * 2023-08-18 2024-05-10 中国船舶集团有限公司第七〇九研究所 一种海上分布式多源异构时空数据查询方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160069977A (ko) * 2014-12-09 2016-06-17 주식회사 엘지씨엔에스 쿼리 라우팅 방법, 이를 수행하는 쿼리 라우팅 서버 및 이를 저장하는 기록매체
US9400849B1 (en) * 2008-08-08 2016-07-26 Google Inc. Scalable system for determining short paths within web link network
KR20180128468A (ko) * 2016-04-29 2018-12-03 사이트릭스 시스템스, 인크. 서비스 체인을 로드 밸런싱하기 위한 시스템 및 방법
KR102089348B1 (ko) 2019-01-28 2020-03-16 주식회사 와이즈넛 분산 데이터 저장 장치 기반 검색 엔진 시스템 및 검색 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400849B1 (en) * 2008-08-08 2016-07-26 Google Inc. Scalable system for determining short paths within web link network
KR20160069977A (ko) * 2014-12-09 2016-06-17 주식회사 엘지씨엔에스 쿼리 라우팅 방법, 이를 수행하는 쿼리 라우팅 서버 및 이를 저장하는 기록매체
KR20180128468A (ko) * 2016-04-29 2018-12-03 사이트릭스 시스템스, 인크. 서비스 체인을 로드 밸런싱하기 위한 시스템 및 방법
KR102089348B1 (ko) 2019-01-28 2020-03-16 주식회사 와이즈넛 분산 데이터 저장 장치 기반 검색 엔진 시스템 및 검색 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290617A (zh) * 2023-08-18 2023-12-26 中国船舶集团有限公司第七〇九研究所 一种海上分布式多源异构时空数据查询方法及系统
CN117290617B (zh) * 2023-08-18 2024-05-10 中国船舶集团有限公司第七〇九研究所 一种海上分布式多源异构时空数据查询方法及系统

Also Published As

Publication number Publication date
KR102503958B1 (ko) 2023-02-27

Similar Documents

Publication Publication Date Title
CN109218348B (zh) 一种区块链中区块的确定方法及节点设备
Torabi et al. Data replica placement approaches in fog computing: a review
US20130311428A1 (en) Clustering for high availability and disaster recovery
CN103248645A (zh) Bt离线数据下载系统及方法
US11630803B2 (en) Persistent indexing and free space management for flat directory
US20120179778A1 (en) Applying networking protocols to image file management
CN101640623A (zh) 在对等网络中搜索资源的方法和设备
CN110737663A (zh) 一种数据存储方法、装置、设备及存储介质
Malensek et al. Expressive query support for multidimensional data in distributed hash tables
Carlini et al. Balanced graph partitioning with apache spark
JP7202558B1 (ja) ヒューマンサイバーフィジカル融合環境におけるデジタルオブジェクトアクセス方法及びシステム
Mansouri et al. Job scheduling and dynamic data replication in data grid environment
US20140156809A1 (en) Data downloading method, terminal, server, and system
KR101600717B1 (ko) P2p 방식의 가상머신 운영체제 이미지 다운로드 방법 및 장치
JP5818263B2 (ja) データの分散管理システム及び装置及び方法及びプログラム
Saravanan et al. An effective model for QoS assessment in data caching in MANET environments
Guo et al. Blockchain-assisted caching optimization and data storage methods in edge environment
EP3939236B1 (en) Node and cluster management on distributed self-governed ecosystem
KR102503958B1 (ko) 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법
CN107451229B (zh) 一种数据库查询方法和装置
Zarina et al. Job scheduling for dynamic data replication strategy in heterogeneous federation data grid systems
CN111881086B (zh) 大数据的存储方法、查询方法、电子装置及存储介质
KR20130077357A (ko) P2p기반 업데이트 클라이언트, 서버 장치, 시스템 및 방법
Elwaer et al. Optimizing data distribution in volunteer computing systems using resources of participants
US20140365681A1 (en) Data management method, data management system, and data management apparatus

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant