KR102587776B1 - 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법 - Google Patents

확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102587776B1
KR102587776B1 KR1020227020791A KR20227020791A KR102587776B1 KR 102587776 B1 KR102587776 B1 KR 102587776B1 KR 1020227020791 A KR1020227020791 A KR 1020227020791A KR 20227020791 A KR20227020791 A KR 20227020791A KR 102587776 B1 KR102587776 B1 KR 102587776B1
Authority
KR
South Korea
Prior art keywords
cluster
query
identifying
optimal
execution
Prior art date
Application number
KR1020227020791A
Other languages
English (en)
Other versions
KR20220088958A (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 KR1020237034099A priority Critical patent/KR20230147745A/ko
Publication of KR20220088958A publication Critical patent/KR20220088958A/ko
Application granted granted Critical
Publication of KR102587776B1 publication Critical patent/KR102587776B1/ko

Links

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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/2453Query optimisation
    • G06F16/24532Query optimisation of parallel 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/22Indexing; Data structures therefor; Storage structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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
    • 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/2453Query optimisation
    • 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/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

클러스터 작업 부하를 관리하기 위한 시스템 및 방법이 개시된다. 시스템은 하나 이상의 프로세서, 및 명령어를 포함하는 비-일시적 메모리를 포함한다. 명령어는 하나 이상의 프로세서에 의해 실행될 때, 방법 단계를 수행한다. 방법 단계는 사용자 디바이스로부터 쿼리를 수신하는 단계를 포함할 수 있다. 방법 단계는 또한, 쿼리로부터 테이블 특성을 파싱하는 단계, 파싱된 테이블 특성이 저장된 테이블과 연관된다고 결정하는 단계, 및 저장된 테이블을 포함하는 복수의 클러스터로부터 적어도 하나의 클러스터를 식별하는 단계를 포함할 수 있다. 방법 단계는 적어도 하나의 클러스터로부터 최적의 클러스터를 식별하는 단계, 및 최적의 클러스터에 실행을 위한 쿼리를 전송하는 단계를 더 포함할 수 있다.

Description

확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법
연관된 출원에 대한 상호 참조
본 출원은 2020년 12월 10일에 출원된 미국 가출원 제63/123,593호의 우선권의 이익을 주장한다. 위에-참조된 출원의 개시는 그 전체가 본원에 참조로 명시적으로 통합된다.
기술분야
본 개시는 일반적으로, 확장 가능한 컴퓨팅 클러스터(scalable computing clusters)에서 연결을 관리하기 위한 컴퓨터화된 시스템 및 방법에 관한 것이다. 특히, 본 개시의 실시예는 확장 가능하고 동일하지 않은 대량 병렬 처리 클러스터 환경에 대한 사용자 작업 부하(user workloads)를 관리하는 것에 관련된 독창적이고 비전통적인 시스템에 관한 것이다.
종종, 회사가 성장함에 따라, 데이터를 저장하고 이에 액세스하기 위한 그의 요구가 또한 성장한다. 결과적으로, 기업은 대량의 데이터를 저장하고, 데이터 센터 내의 다수의 클러스터에 연결된 단말기를 통해 수백 명의 사용자에 의해 동시에 액세스될 수 있는 데이터 센터에 종종 투자한다. 이 데이터 센터는 상당히 많은 동시 사용자 연결을 처리할 수 있는, 동일한 대량 병렬 처리(Massively Parallel Processing, MPP) 클러스터를 종종 이용한다. 하지만, 데이터를 실제로 사용하는 사용자가 얼마나 많은 지에 관계없이, 동일한 MPP의 각 클러스터가 정확히 동일한 데이터를 저장하여 낭비된 저장 공간, 비용이 많이 드는 유지 보수 및 데이터 센터 확장의 제한을 초래하기 때문에, 이 동일한 MPP는 확장 및 유지 보수에 비용이 매우 많이 들게 된다.
동일하지 않은 MPP는 모든 클러스터 상에 가장 빈번하게 사용되는 데이터를 저장하고, 특정 클러스터 상에 덜 빈번하게 사용되거나 비즈니스-기능 특정 데이터를 저장하고, 그를 통해 저장 요구를 감소시키고 확장 가능한 플랫폼을 생성함으로써 이 문제를 해결한다. 하지만, 일부 데이터를 특정 클러스터로 제한함으로써, 사용자는 그가 필요로 하는 데이터를 갖지 않는 클러스터에 연결될 수 있거나, 또는 클러스터가 그의 연결 용량에 도달하기 때문에 올바른 클러스터에 연결하지 못할 수 있다. 그러므로, 더 빠르고, 더 쉬우며, 사용하기 쉬운 연결 기술을 제공함으로써, 사용자 경험을 개선하는 방식으로 클러스터에 대한 사용자 연결을 관리하기 위한 요구가 있다. 이 단점 및 다른 단점이 존재한다.
본 개시의 일 양상은 클러스터 작업 부하를 관리하기 위한 시스템에 관련된다. 시스템은 하나 이상의 프로세서, 및 명령어를 포함하는 비-일시적 메모리를 포함한다. 명령어는 하나 이상의 프로세서에 의해 실행될 때, 방법 단계를 수행한다. 방법 단계는 사용자 디바이스로부터 쿼리(query)를 수신하는 단계를 포함할 수 있다. 방법 단계는 또한, 쿼리로부터 테이블 특성을 파싱하는 단계(parsing), 파싱된 테이블 특성이 저장된 테이블과 연관된다고 결정하는 단계, 및 저장된 테이블을 포함하는 복수의 클러스터로부터 적어도 하나의 클러스터를 식별하는 단계를 포함할 수 있다. 방법 단계는 적어도 하나의 클러스터로부터 최적의 클러스터를 식별하는 단계, 및 최적의 클러스터에 실행을 위한 쿼리를 전송하는 단계를 더 포함할 수 있다.
본 개시의 다른 양상은 클러스터 작업 부하를 관리하기 위한 방법에 관련된다. 방법은 사용자 디바이스로부터 쿼리를 수신하는 단계, 쿼리로부터 테이블 특성을 파싱하는 단계를 포함한다. 방법은 또한, 파싱된 이름 테이블 특성이 저장된 테이블과 연관되는지를 결정하는 단계, 저장된 테이블을 포함하는 복수의 클러스터로부터 적어도 하나의 클러스터를 식별하는 단계, 적어도 하나의 클러스터로부터 최적의 클러스터를 식별하는 단계, 및 최적의 클러스터로 실행을 위한 쿼리를 전송하는 단계를 포함할 수 있다.
본 개시의 또 다른 양상은 클러스터 작업 부하를 관리하기 위한 방법에 관련된다. 방법은 사용자 디바이스로부터 구조화된 쿼리를 수신하는 단계를 포함한다. 방법은 또한, 파싱 모듈에서, 구조화된 쿼리로부터 테이블 특성을 파싱하는 단계, 및 파싱된 테이블 특성이 저장된 테이블과 연관되는지를 결정하는 단계를 포함할 수 있다. 연관을 결정하는 것에 응답하여, 방법은 저장된 테이블을 포함하는 적어도 하나의 데이터세트를 식별하는 단계를 포함할 수 있다. 저장된 테이블을 포함하는 적어도 하나의 데이터세트를 식별하는 것에 응답하여, 방법은 적어도 하나의 데이터세트를 포함하는 적어도 하나의 클러스터를 식별하는 단계를 포함할 수 있다. 방법은 또한, 폴링 모듈(polling module)을 사용하여, 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계, 네트워크를 통해 사용자 디바이스와 최적의 클러스터 사이의 연결을 개방하는 단계(opening), 최적의 클러스터에 실행을 위한 구조화된 쿼리를 전송하는 단계, 및 네트워크를 통해 최적의 클러스터로부터의 응답을 사용자 디바이스로 송신하는 단계를 포함할 수 있다.
다른 시스템, 방법 및 컴퓨터-판독가능 매체가 또한, 본원에서 논의된다.
도 1은 개시된 실시예와 일치하는, 동일하지 않은 대량 병렬 처리 클러스터에서 사용자 연결을 관리하기 위한 컴퓨터화된 시스템을 포함하는 네트워크를 예시하는 개략적인 블록도이다.
도 2는 개시된 실시예와 일치하는, 동일하지 않은 대량 병렬 처리 클러스터로 전송된 쿼리를 관리하기 위한 방법을 예시하는 흐름도이다.
도 3a-3b는 개시된 실시예와 일치하는, 블룸 필터(bloom filter)의 동작을 예시하는 개략적인 블록도이다.
도 4는 개시된 실시예와 일치하는 클러스터 작업 부하를 관리하기 위한 시스템의 예시적인 사용을 예시한다.
다음의 상세한 설명은 첨부 도면을 참조한다. 어디서든 가능하다면, 동일하거나 유사한 부분을 지칭하기 위해 도면 및 다음의 설명에서 동일한 참조 부호가 사용된다. 수개의 예시적인 실시예가 본원에서 설명되지만, 수정, 조정(adaptations) 및 다른 구현이 가능하다. 예를 들어, 도면에 예시된 구성요소 및 단계에 대해, 대체, 추가 또는 수정이 이루어질 수 있으며, 본원에서 설명된 예시적인 방법은 단계를 대체하거나, 재정렬하거나, 제거하거나 또는 개시된 방법에 추가함으로써 수정될 수 있다. 따라서, 다음의 상세한 설명은 개시된 실시예 및 예시로 제한되지 않는다. 대신에, 본 발명의 적절한 범주는 첨부된 청구 범위에 의해 정의된다.
본 개시의 일부 실시예에서, 동일하지 않은 대량 병렬 처리 클러스터에서 사용자 연결을 관리하도록 구성된 시스템 및 방법에 관련된다.
도 1을 참조하면, 동일하지 않은 대량 병렬 처리 클러스터에서 사용자 연결을 관리하기 위한 컴퓨터화된 시스템을 포함하는 시스템을 예시하는 개략적인 블록도(100)가 도시된다. 도 1에 예시된 바와 같이, 시스템(100)은 다양한 시스템 및 디바이스를 포함할 수 있으며, 이의 각각은 네트워크(104)를 통해 서로 연결될 수 있다. 일부 실시예에서, 시스템(100)은 사용자 디바이스(102), 네트워크(104), 쿼리 모듈(200) 및 컴퓨트 엔티티(Compute entity, 300)를 포함한다.
일부 실시예에서, 사용자 디바이스(102)는 네트워크(104)를 통해, 쿼리 모듈(200) 및/또는 컴퓨트 엔티티(300)와 통신할 수 있다. 시스템(100)은 시스템(100)의 동작을 용이하게 하기 위해 추가적인 하드웨어 및/또는 소프트웨어 모듈을 포함할 수 있다는 것이 이해될 것이다.
사용자 디바이스(102)는 하나 이상의 프로세서, 메모리를 포함할 수 있고, 메모리 상에 저장된 명령어는 하나 이상의 프로세서로 하여금 명령어를 실행하게 할 수 있다. 사용자 디바이스(102)는 랩탑, 모바일 폰, 태블릿, 데스크탑 컴퓨터, 메인프레임 단말기(mainframe terminal), 가상 PC 또는 유사한 네트워크-가능 디바이스 중 적어도 하나를 포함할 수 있다. 일부 실시예에서, 사용자 디바이스(102)는 프로그램, 예를 들어 네트워킹 소프트웨어, SQL 쿼리 편집기, SQL 데이터베이스, 디지털 개인 어시스턴트(digital personal assistant)(예를 들어, 시리(Siri) 또는 구글 어시스턴트(Google assistant)) 또는 스프레드시트(spreadsheet), 프레젠테이션 및/또는 워드 프로세싱 소프트웨어를 포함하는 오피스 제품군을 포함할 수 있다. 단순함을 위해 단일 사용자 디바이스(102)만이 도시되었지만, 시스템(100)은 다양한 시스템, 디바이스 및/또는 모듈과 통신하도록 구성될 수 있는 추가적인 사용자 디바이스를 포함할 수 있음이 이해될 것이다. 사용자 디바이스(102)의 사용자는 컴퓨트 엔티티(300)를 관리하거나 또는 유지하는 데 책임이 있는 비즈니스 분석가, 네트워크 관리자, 데이터 과학자, 창고 관리자 또는 IT 전문가일 수 있다.
일부 실시예에서, 사용자 디바이스(102)는 네트워크(104)를 통해 쿼리를 쿼리 모듈(200) 및/또는 컴퓨트 엔티티(300)로 송신하도록 구성될 수 있다. 일부 실시예에서, 쿼리는 테이블 특성을 포함할 수 있다. 일부 실시예에서, 쿼리는 구조화된 쿼리, 예를 들어 SQL 쿼리일 수 있다. 일부 실시예에서, 쿼리는 자연어 쿼리, 예를 들어 음성 입력 또는 타이핑된 메시지일 수 있다. 일부 실시예에서, 사용자는 사용자 디바이스(102)에 대한 액세스를 얻기 위해 인증 정보를 입력하도록 프롬프트될(prompted) 수 있다. 일부 실시예에서, 인증 정보는 사용자의 비즈니스 기능, 부서, 사무실 위치 또는 다른 멤버십과 연관될 수 있다. 일부 실시예에서, 사용자 디바이스(102)는 네트워크(104)를 통해, 쿼리 모듈(200) 및/또는 컴퓨트 엔티티(300)로 인증 정보를 송신하도록 구성될 수 있다. 일부 실시예에서, 인증 정보는 사용자 이름, 비밀번호, 이중 인증 코드(two-factor authentication code), 지문, 얼굴 인식, 눈 스캔, 얼굴 스캔, 발성된 비밀번호, 데이터 연관된 RFID 태그 또는 다른 보안 인증 시스템 또는 방법 중 적어도 하나를 포함할 수 있다.
사용자 디바이스(102)는 쿼리 모듈(200) 및/또는 컴퓨트 엔티티(300)로부터 응답을 수신하도록 구성될 수 있다. 일부 실시예에서, 응답은: 데이터를 찾을 수 없음, 세션 타임아웃(session timeout), 테이블 특성을 찾을 수 없음, 또는 쿼리가 시스템에 의해 이해되지 않았다는 표시 중 적어도 하나를 나타내는 메시지일 수 있다. 일부 실시예에서, 응답은 쿼리에 의해 요청된 데이터, 및/또는 쿼리의 성공적인 실행을 나타내는 메시지일 수 있다. 사용자 디바이스(102)는 하나 이상의 메시지, 데이터 및/또는 쿼리를 전송하거나 및/또는 수신할 수 있다는 것이 이해될 것이다.
네트워크(104)는 하나 이상의 시스템 또는 디바이스로부터 데이터를 전송하거나 및/또는 수신하도록 구성된 하나 이상의 유선 또는 무선 네트워크일 수 있다. 일부 실시예에서, 네트워크(104)는 사용자 디바이스(102)로부터 데이터를 수신하고, 이를 컴퓨트 엔티티(300)에 전달하도록 구성될 수 있다. 일부 실시예에서, 네트워크(104)는 네트워크 하드웨어, 예를 들어 라우터, 서버, 모뎀, 스위치, LAN 카드, 무선 라우터 및/또는 케이블을 포함할 수 있다. 일부 실시예에서, 네트워크(104)는 네트워킹 소프트웨어, 예를 들어 방화벽, 네트워크 보안 애플리케이션, 운영체제 및/또는 네트워크 동작 및 관리 소프트웨어를 포함할 수 있다.
쿼리 모듈(200)은 파싱 모듈(202), 폴링 모듈(204) 및/또는 매핑 모듈(Mapping module, 206)을 포함할 수 있다. 일부 실시예에서, 쿼리 모듈(200)은 하나 이상의 프로세서, 메모리를 포함할 수 있고, 메모리 상에 저장된 명령어는 하나 이상의 프로세서로 하여금 명령어를 실행하게 할 수 있다. 일부 실시예에서, 파싱 모듈(202), 폴링 모듈(204) 및/또는 매핑 모듈(206)은 하나 이상의 프로세서, 메모리를 포함할 수 있고, 메모리 상에 저장된 명령어는 하나 이상의 프로세서로 하여금 명령어를 실행하게 할 수 있다. 쿼리 모듈(200)은: 파싱 모듈(202), 폴링 모듈(204) 또는 매핑 모듈(206) 중 적어도 하나를 포함할 수 있다는 것이 이해될 것이다. 일부 실시예에서, 쿼리 모듈(200)은 컴퓨트 엔티티(300)의 최적의 클러스터로부터 쿼리의 성공적인 실행 및/또는 쿼리의 출력과 연관된 데이터를 나타내는 메시지를 포함하는 응답을 수신하도록 구성될 수 있다. 일부 실시예에서, 쿼리 모듈(200)은 컴퓨트 엔티티(300)의 최적의 클러스터로부터 쿼리의 성공적이지 않은 실행 및/또는 쿼리의 출력과 연관된 부분 데이터를 나타내는 메시지를 수신할 수 있다. 일부 실시예에서 쿼리 모듈(200)은 컴퓨트 엔티티(300)로부터 쿼리의 성공적인 실행 및/또는 쿼리의 출력과 연관된 데이터를 나타내는 메시지를 포함하는 응답을 수신할 수 있다. 일부 실시예에서, 쿼리 모듈(200)은 컴퓨트 엔티티(300)로부터 쿼리의 성공적이지 않은 실행 및/또는 쿼리의 출력과 연관된 부분 데이터를 나타내는 메시지를 수신할 수 있다. 단순함을 위해 하나의 쿼리 모듈(200)만이 도시되었지만, 시스템(100)은 다양한 시스템, 디바이스 및/또는 모듈과 통신하도록 구성될 수 있는 추가적인 쿼리 모듈을 포함할 수 있음이 이해될 것이다.
파싱 모듈(202)은 테이블 특성을 식별하기 위해 쿼리(예를 들어, 사용자 디바이스(102)로부터 수신된 쿼리)를 파싱하도록 구성될 수 있다. 테이블 특성은 테이블 이름, 테이블 열 이름, 테이블 행 이름, 시트 이름, 테이블 참조, 테이블 열 참조, 테이블 행 참조, 시트 참조, 시트 메타데이터, 테이블 메타데이터, 데이터베이스 이름, 데이터베이스 참조 또는 데이터베이스 메타데이터 중 적어도 하나를 포함할 수 있다. 일부 실시예에서, 파싱 모듈(202)은 수신된 쿼리로부터 테이블 특성을 결정하거나 및/또는 추출하도록 구성된 파서를 포함할 수 있다. 예를 들어, SQL과 같은 구조화된 쿼리에서, 파서는 테이블 특성을 결정하기 위해 키워드(예를 들어, "SELECT", "FROM", "WHERE")를 사용할 수 있다. 일부 실시예에서, 파싱 모듈(202)은 테이블 특성을 결정하거나 및/또는 추출하기 위해 다양한 쿼리에 대한 자연어 처리, 이미지 처리 또는 감정 분석을 수행하도록 구성된 명령어를 포함할 수 있다. 일부 실시예에서, 쿼리는 오디오 녹음, 타이핑된 텍스트 또는 이미지를 포함할 수 있다.
일부 실시예에서, 폴링 모듈(204)은 클러스터 상태 데이터에 대한 컴퓨트 엔티티(300)의 컴퓨팅 클러스터(302-306)를 폴링하도록 구성될 수 있다. 일부 실시예에서, 클러스터 상태 데이터는: 각 클러스터와 연관된 네트워크 레이턴시(network latency), 각 클러스터와 연관된 개방된 연결의 수, 각 클러스터와 연관된 최근에 개방된 연결의 수, 각 클러스터와 연관된 최근에 폐쇄된 연결의 수, 각 클러스터 상에서 시간 초과된 연결의 수; 각 클러스터 상에서 실행되는 쿼리의 수, 각 클러스터와 연관된 실행을 위한 큐잉되는(queued) 쿼리의 수, 각 클러스터와 연관된 사용자 종료된 쿼리의 수, 각 클러스터와 연관된 시간 초과된 쿼리의 수; 각 클러스터 상에서 각 완료된 쿼리와 연관된 완료 시간, 각 클러스터 상에서 실행되는 각 쿼리와 연관된 경과된 시간, 각 클러스터에 대한 쿼리를 실행하기 위한 리드 시간(lead time), (예를 들어, 구성요소 또는 노드 결함의 예측을 돕기 위한) 각 클러스터와 연관된 전력 소비, (예를 들어, 쿼리 모듈(200)에 의한 효율적인 쿼리 큐잉 및/또는 쿼리 모듈(200) 없이 실행을 위해 전송되었을 특정 쿼리를 실행하지 않는 결과로서 전력 절감을 추정하기 위해) 각 클러스터 상에서 각 쿼리 실행과 연관된 전력 소비, 또는 각 클러스터와 연관된 다른 분석 중 적어도 하나를 포함할 수 있다.
일부 실시예에서, 폴링 모듈(204)은 어느 클러스터가 최소 수의 개방된 연결을 갖는지를 결정하도록 구성될 수 있다. 일부 실시예에서, 폴링 모듈(204)은 쿼리를 실행하기 위해 어느 클러스터가 최소 리드 시간을 갖는지를 결정하도록 구성될 수 있다. 실행까지의 리드 시간은: 쿼리 복잡성, 큐잉된 쿼리의 수, 완료된 쿼리에 대한 완료 시간 또는 각 쿼리에 대한 경과 시간 중 적어도 하나를 기초로 결정될 수 있다.
매핑 모듈(206)은 블룸 필터를 구현할 수 있다. 일부 실시예에서, 블룸 필터는 요소(예를 들어, 파싱된 테이블 특성)가 세트(예를 들어, 데이터세트와 연관된 모든 테이블 특성)의 구성원인지를 시험하는 데 사용되는 공간-효율적인 확률적 데이터 구조이다. 블룸 필터는: 감쇠된 블룸 필터(Attenuated Bloom filter), 계층화된 블룸 필터(Layered Bloom filter), 공간 블룸 필터(Spatial Bloom filter), 확장 가능한 블룸 필터(Scalable Bloom filter), 병렬 파티셔닝된 블룸 필터(Parallel Partitioned Bloom Filter), 블루미어 필터(Bloomier filter) 또는 카운팅 블룸 필터(Counting Bloom filter) 중 적어도 하나를 포함하거나 또는 그것으로 구성될 수 있다. 일부 실시예에서, 매핑 모듈(206)은 블룸 필터를 이용하여 파싱된 테이블 특성이 적어도 하나의 데이터세트에 존재하는지를 결정하도록 구성될 수 있다. 일부 실시예에서, 파싱된 테이블 특성을 포함하는 적어도 하나의 데이터세트가 저장된 클러스터를 결정할 시, 폴링 모듈(202)은 클러스터의 세트로부터, 파싱된 테이블 특성을 포함하는 적어도 하나의 데이터세트가 저장된 최적의 클러스터를 결정하도록 구성될 수 있다. 일부 실시예에서, 파싱된 테이블 특성이 적어도 하나의 데이터세트에 존재하지 않는다고 결정할 시, 쿼리 모듈(200)은 사용자 디바이스(102)에, 파싱된 테이블 특성이 어떠한 데이터세트에서도 발견되지 않았음을 나타내는 메시지를 전송하도록 구성될 수 있으며, 쿼리에 대한 하나 이상의 수정을 제안할 수 있다.
일부 실시예에서, 매핑 모듈(206)은 하나의 데이터세트 또는 복수의 데이터세트와 연관될 수 있다. 일부 실시예에서, 매핑 모듈(206)은 하나의 클러스터 또는 복수의 클러스터와 연관될 수 있다. 일부 실시예에서, 매핑 모듈(206)은 하나의 컴퓨트 엔티티 또는 복수의 컴퓨트 엔티티와 연관될 수 있다. 블룸 필터는 본질적으로 확률적이며, 긍정 오류(false positives)를 반환할 수 있다. 긍정 오류 비율이 실질적으로 낮게 유지되도록, 비트 벡터에 대한 적절한 치수를 선택함으로써 긍정 오류 비율이 감소될 수 있다. 예를 들어, 일부 실시예에서, 최적의 비트 벡터 길이를 추정하는 것은 식 를 이용할 수 있으며, 여기서 m은 최적의 비트 벡터 길이이고, n은 삽입된 요소의 수이며, ε는 긍정 오류 확률이다. 일부 실시예에서, 적절한 수의 해싱 함수가 긍정 오류 비율이 실질적으로 낮게 유지되도록 비트 벡터에 대해 결정될 수 있다. 예를 들어, 일부 실시예에서, 해시 함수의 최적의 수를 추정하는 것은 식 을 이용할 수 있으며, 여기서 k는 해시 함수의 수이고 ε는 긍정 오류 확률이다. 일부 실시예에서, 긍정 오류 확률(예를 들어, ε)은 일부 실시예에서 백분율로 표현될 때, 1%, 0.1%, 0.05%, 0.001%, 0.0005%, 또는 1%와 0.0005%(이 수들을 포함함)의 범위 사이의 수일 수 있다.
컴퓨트 엔티티(300)는 제1 커스텀 데이터세트(308a) 및 제1 공통 데이터세트(310a)를 포함하는 제1 클러스터(302)를 포함할 수 있다. 제1 클러스터(302)는 랩탑, 모바일 폰, 태블릿, 데스크탑 컴퓨터, 서버, 메인프레임, 가상 PC, 또는 유사한 네트워크-가능 디바이스 중 적어도 하나를 포함할 수 있다. 일부 실시예에서, 제1 클러스터(302)는 프로그램, 예를 들어 네트워킹 소프트웨어, SQL 쿼리 편집기, SQL 데이터베이스, 디지털 개인 어시스턴트(예를 들어, 시리 또는 구글 어시스턴트) 또는 스프레드시트, 프레젠테이션 및/또는 워드 프로세싱 소프트웨어를 포함하는 오피스 제품군을 포함할 수 있다. 제1 커스텀 데이터 세트(308a)는 다른 비즈니스 기능에 의해 일반적으로 요구되지 않는 비즈니스 기능-관련된 데이터, 예를 들어, 마케팅 부서에 의해 컴파일링된 FY2022에 추가된 새로운 공급업체의 개인 식별 정보 - 이는 비즈니스의 물류 부서에 의해 요구되지 않을 수 있음 - 를 포함할 수 있다. 제1 공통 데이터 세트(310a)는 다수의 비즈니스 기능에 의해 빈번하게 액세스되거나 또는 요구될 수 있는 일반적인 비즈니스 데이터를 포함할 수 있고, 예를 들어 FY2022에 추가된 새로운 공급업체의 수는 물류 부서가 새로운 화물 경로를 결정하거나 또는 창고에서의 재고 공간을 계획하는 데 유용할 수 있다. 일부 실시예에서, 컴퓨트 엔티티(300)는 복수의 클러스터, 예를 들어 제2 커스텀 데이터세트(308b) 및 제2 공통 데이터세트(310b)를 포함하는 제2 클러스터(304) 및 제3 커스텀 데이터세트(308c) 및 제3 공통 데이터세트(310c)를 포함하는 제3 클러스터(306)를 포함할 수 있다. 일부 실시예에서, 각 공통 데이터세트(308a-308c) 및 각 커스텀 데이터세트(310a-310b)는 적어도 하나의 테이블 특성을 포함하는 하나 이상의 테이블을 포함한다. 일부 실시예에서, 각 클러스터(302-306)는 하나 이상의 프로세서, 메모리를 포함할 수 있고, 메모리에 저장된 명령어는 하나 이상의 프로세서로 하여금 명령어를 실행하게 할 수 있다. 일부 실시예에서, 클러스터(302-306) 상에 저장된 데이터세트는 규칙적인 간격으로, 예를 들어 매일 오전 12시 또는 매주 일요일 오전 3시에 트랜잭션 데이터베이스로부터 업데이트될 수 있다. 일부 실시예에서, 클러스터 상에 저장된 데이터세트는 폴링 모듈(202)이 최소 수의 연결, 최소 수의 실행 쿼리 또는 최소 수의 큐잉되는 쿼리 중 적어도 하나를 결정할 때 업데이트될 수 있다. 일부 실시예에서, 폴링 모듈(202)은 데이터세트가 성공적으로 업데이트될 때 통지를 수신하도록 구성될 수 있고, 쿼리 모듈(200)은 매핑 모듈(206)의 비트 벡터에 대한 업데이트 절차를 개시하는 통지를 수신할 수 있다. 일부 실시예에서, 각 클러스터 상에 저장된 데이터세트는 사용자 디바이스(102)의 사용자에 의해 편집 가능하지 않을 수 있다(예를 들어, 편집 불가능할 수 있다). 단순함을 위해 하나의 컴퓨트 엔티티(300)만이 도시되었지만, 시스템(100)은 시스템(100)의 다양한 시스템, 디바이스 및/또는 모듈과 통신하도록 구성될 수 있는 추가적인 컴퓨트 엔티티를 포함할 수 있다는 것이 이해될 것이다.
도 2는 쿼리를 라우팅하기 위한 예시적인 방법(400)을 예시하는 흐름도이다.
블록(402)에서, 쿼리 모듈(예를 들어, 쿼리 모듈(200))은 사용자 디바이스(예를 들어, 사용자 디바이스(102))로부터 쿼리를 수신할 수 있다. 일부 실시예에서, 쿼리는 테이블 특성을 포함할 수 있다. 일부 실시예에서, 쿼리는 하나 이상의 테이블 특성을 포함할 수 있다. 쿼리는 구조화된 쿼리, 예를 들어, SQL 쿼리일 수 있다. 일부 실시예에서, 쿼리는 자연어 쿼리, 예를 들어 음성 입력 또는 타이핑된 메시지일 수 있다. 예를 들어, 자연어 쿼리는 사용자가 개인용 디지털 단말기(personal digital assistant)에 쿼리 또는 명령을 타이핑하거나, 또는 음성 제어된 어시스턴트에게 말하는 것일 수 있다. 예를 들어, 사용자는 "지난 달 봉제된 동물에 대한 판매 데이터가 필요합니다", "우리 애틀랜타 창고에서의 제품에 대한 과거 가격을 알려주세요", 또는 "'통관 항목' 테이블에서 SKU 12345 및 85462와 연관된 정보를 전송해주세요"라고 말하거나 또는 타이핑할 수 있다. 일부 실시예에서, 자연어 쿼리는 구조화된 쿼리로 번역될 수 있고, 네트워크(예를 들어, 네트워크(104))를 통한 실행을 위해 전송될 수 있다. 일부 실시예에서, 번역된 쿼리는 최적의 클러스터로 라우팅하기 위해 쿼리 모듈로 전송될 수 있다.
블록(404)에서, 쿼리 모듈은 파싱 모듈(예를 들어, 파싱 모듈(202))에서 쿼리로부터 테이블 특성을 파싱할 수 있다. 예를 들어, SQL과 같은 구조화된 쿼리에서, 파서는 테이블 특성을 결정하기 위해 키워드(예를 들어, "SELECT", "FROM", "WHERE")를 사용할 수 있다. 예를 들어, 이 예시적인 SQL 문(statement) "SELECT newSKUs, newVendors FROM FY2022db.schema.BusinessDevelopment WHERE Promos= 'Yes'"에서, 파싱 모듈(202)은 쿼리가 SQL 점 표기법 구조를 포함하고 있다고 결정하도록 구성될 수 있고, "FROM" 키워드와 "WHERE" 키워드 사이의 일부 또는 모든 영숫자 문자가 테이블 특성에 대응한다는 것을 결정할 수 있다. 이 예시에서, 파싱 모듈(202)은 "FY2022db"를 데이터베이스 이름으로, "schema"를 스키마 이름으로, "BusinessDevelopment"를 테이블 이름으로 결정한다. 일부 실시예에서, 파싱 모듈(202)은 하나보다 많은 테이블 특성을 결정하도록 구성될 수 있다. 다른 예시에서 및 위의 예시적인 SQL 문을 사용하여, 파싱 모듈(202)은 점 표기법과 유사한 구조가 존재하지 않는 하나보다 많은 테이블 특성을 결정하기 위해 비-영숫자 문자를 사용하도록 구성될 수 있다. 파싱 모듈(202)은 예를 들어, "SELECT" 및 "FROM" 키워드 사이의 일부 또는 모든 영숫자 문자가 테이블 특성에 대응한다고 결정하도록 구성될 수 있지만, 파싱 모듈(202)은 비-영숫자 문자 ","를 식별하고, 하나보다 많은 테이블 특성이 존재한다고 결정하도록 구성될 수 있으며, 제1 테이블 특성은 "SELECT" 키워드와 "," 사이의 일부 또는 모든 영숫자 문자이고 제2 테이블 특성은 ","과 "FROM" 키워드 사이의 일부 또는 모든 영숫자 문자이다. 이 예시에서, 파싱 모듈(202)은 "newSKUs"를 열 이름으로 결정하고 "newVendors"를 다른 열 이름으로 결정하도록 구성될 수 있다. 또 다른 예시에서 및 위의 예시적인 SQL 문을 사용하여, 파싱 모듈(202)은 "WHERE" 키워드와 ";" 사이의, 그러나 테이블 특성이 될 문자열(예를 들어, 'Yes')로 식별되지 않는 일부 또는 모든 영숫자 문자를 결정함으로써, 조건과 같은 테이블 특성을 결정하도록 구성될 수 있다. 이 예시에서, 파싱 모듈(202)은 "Promos"를 열 이름으로 결정하도록 구성될 수 있다.
일부 실시예에서, 파싱 모듈(202)은 예를 들어, 하나 이상의 "Big-O" 표기법을 사용하여 쿼리의 시간 복잡도를 계산하도록 구성될 수 있다. 파싱 모듈(202)은 사용하는 쿼리의 시간 복잡도가 실행 시간 임계치, 예를 들어 20분을 넘는다고 결정하도록 구성될 수 있다. 일부 실시예에서, 쿼리의 시간-복잡도가 실행 시간 임계치를 초과한다고 결정할 때, 파싱 모듈(202)은 쿼리와 연관된 사용자 디바이스(102)에, 쿼리가 실행 시간 임계치보다 실행하는데 더 오래 걸릴 수 있다는 표시, 쿼리의 시간 복잡도를 감소시키기 위해 쿼리에 대한 하나 이상의 수정의 제안, 또는 쿼리가 실행을 위해 전송되지 않을 것이라는 통지 중 적어도 하나를 포함하는 메시지를 전송하도록 구성될 수 있다. 일부 실시예에서, 쿼리의 시간-복잡도가 실행 시간 임계치 미만인 것으로 결정할 때, 파싱 모듈(202)은 쿼리와 연관된 사용자 디바이스(102)에, 추정된 쿼리 실행 시간의 표시, 또는 쿼리가 실행을 위해 전송될 것이라는 통지 중 적어도 하나를 포함하는 메시지를 전송하도록 구성될 수 있다.
블록(406)에서, 쿼리 모듈은 파싱된 테이블 특성이 저장된, 저장된 테이블과 연관되는지를 결정하도록 구성될 수 있다. 예를 들어, 쿼리 모듈의 매핑 모듈(예를 들어, 매핑 모듈(206))에서, 파싱된 테이블 특성은 해시(예를 들어, 해시 값)를 생성하기 위해 실질적으로 독립적인 암호화 또는 비-암호화 해싱 함수를 사용하여 해싱될 수 있다. 예시에서, 결과적인 해시 값은 블룸 필터의 비트 벡터에서의 어레이 위치에 대응할 수 있다. 매핑 모듈은 비트 벡터에서의 어레이 위치와 연관된 비트 상태를 결정하도록 구성될 수 있다. 비트 상태가 "참", "1" 또는 "영이 아님"으로 결정되는 경우, 매핑 모듈은 테이블 특성이 적어도 하나의 데이터세트에 존재하는 것으로 결정하도록 구성될 수 있다. 비트 상태가 "거짓", "0" 또는 "영"으로 결정되는 경우, 매핑 모듈은 테이블 특성이 적어도 하나의 데이터세트에 존재하지 않는 것으로 결정하도록 구성될 수 있다.
도 3a를 참조하면, 그리고 예시로서, 비트 벡터의 각 어레이 위치의 각 비트 상태(예를 들어, 초기 비트 벡터 상태(207a))는 "거짓" 또는 "0" 또는 "영"일 수 있다. 도 3b로 넘어가면 그리고 예시로서, 쿼리 모듈은 파싱 모듈(예를 들어, 파싱 모듈(202))에서 파싱된 테이블 이름(예를 들어, 파싱된 테이블 이름(203)) "BusinessDevelopment"를 결정하도록 구성될 수 있다. 매핑 모듈은 해시 함수(예를 들어, 해시 함수 A(208a), 해시 함수 B(208b))로의 입력으로서 파싱된 테이블 이름을 수신하여 파싱된 테이블 이름을 해시하고 해시 값(예를 들어, 해시 함수 A의 출력, 해시 함수 B의 출력)을 생성하도록 구성될 수 있다. 생성된 해시 값은 각각 3 및 5일 수 있다. 매핑 모듈은 그 후, 비트 벡터에서의 제3 및 제5 어레이 위치에 액세스하고 비트 상태를 "참", "1" 또는 "영이 아님"으로 "반전"하고, 그를 통해 새로운 비트 벡터 상태(새로운 비트 벡터 상태(207b))를 생성하도록 구성될 수 있다. 일부 실시예에서, 매핑 모듈은 파싱된 테이블 이름 "BusinessDevelopment"가 이미 존재하는지를 결정하도록 구성될 수 있다. 예시로서, 매핑 모듈은 비트 벡터에서의 제3 및 제5 어레이 위치에 액세스하여, 그 어레이 위치에서의 비트 상태가 "참", "1" 또는 "영이 아님"인지를 결정하도록 구성될 수 있다. 그 어레이 위치에서의 비트 상태가 "참", "1" 또는 "영이 아님"임을 결정할 때, 매핑 모듈(206)은 테이블 이름 "BusinessDevelopment"을 갖는 테이블이 적어도 하나의 데이터세트에 존재한다고 결정하도록 구성될 수 있다. 이 어레이 위치에서의 비트 상태가 "거짓", "0" 또는 "영"임을 결정할 때, 매핑 모듈(206)은 테이블 이름 "BusinessDevelopment"을 갖는 테이블이 적어도 하나의 데이터세트에 존재하지 않는다고 결정하도록 구성될 수 있다.
도 2로 다시 돌아가서, 그리고 일부 실시예에서, 블록(406)의 방법은 해싱된 값을 생성하기 위해, 해싱 함수를 사용하여 파싱된 테이블 특성을 해싱하는 단계를 포함할 수 있다. 일부 실시예에서, 블록(406)의 방법은 생성된 해시 값에 대응하는 비트 벡터에서의 어레이 위치를 식별하는 단계를 포함할 수 있다. 일부 실시예에서, 블록(406)의 방법은 비트 벡터에서의 식별된 어레이 위치가 영이 아닌 값을 포함한다고 결정하는 단계를 포함할 수 있다.
블록(406)에서, 쿼리 모듈이 파싱된 테이블 특성이 저장된 테이블과 연관된다고 결정하는 경우, 방법(400)은 블록(408)으로 진행한다. 블록(408)에서, 쿼리 모듈은 저장된 테이블을 포함하는 복수의 클러스터 중에서 적어도 하나의 클러스터를 식별할 수 있다. 일부 실시예에서, 테이블 특성이 적어도 하나의 데이터세트에 존재한다고 결정할 때, 매핑 모듈은 적어도 하나의 데이터세트가 저장된 모든 클러스터를 결정할 수 있다. 일부 실시예에서, 쿼리 모듈은 저장된 테이블을 포함하는 복수의 클러스터 중에서 적어도 하나의 클러스터를 식별하기 위해 인증 정보를 사용하도록 구성될 수 있다. 예를 들어, 사용자가 엔지니어링 부서의 구성원인 경우, 쿼리 모듈은 다른 부서의 비즈니스 기능-관련된 데이터를 저장하는 클러스터를 식별하지 않을 수 있다. 다른 예시에서, 사용자가 (인증 정보에 의해 나타난 바와 같이) 엔지니어링 부서의 구성원이고 다른 부서의 비즈니스 기능-관련된 데이터에 액세스하려고 시도하는 경우, 쿼리 모듈은 사용자의 사용자 디바이스에 데이터 또는 테이블에 대한 액세스가 거부되었음을 나타내는 메시지를 전송하고, 실행을 위한 쿼리를 송신하지 않도록 구성될 수 있다. 다른 예시에서, 사용자가 회사의 비즈니스 기능-관련된 데이터 또는 비즈니스 데이터에 액세스하도록 인가되지 않고 그렇게 하려고 시도하는 경우, 쿼리 모듈은 사용자의 사용자 디바이스에 데이터 또는 테이블에 대한 액세스가 거부되었음을 나타내는 메시지를 전송하고 실행을 위한 쿼리를 송신하지 않도록 구성될 수 있다.
블록(410)에서, 폴링 모듈은 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별할 수 있다. 예시에서, 폴링 모듈(204)은 최소 실행 리드 시간을 갖는 클러스터가 되도록 최적의 클러스터를 결정할 수 있다. 다른 예시에서, 폴링 모듈(204)은 최소 수의 연결을 갖는 클러스터가 되도록 최적의 클러스터를 결정할 수 있다. 또 다른 예시에서, 폴링 모듈(204)은 최소 네트워크 레이턴시를 갖는 클러스터가 되도록 최적의 클러스터를 결정할 수 있다. 일부 실시예에서, 폴링 모듈(204)은 규칙적인 시간 간격, 예를 들어 매일, 매시간, 또는 매 30분마다 클러스터를 폴링하도록 구성될 수 있다. 일부 실시예에서, 폴링 모듈은 특정 시간 기간 동안, 예를 들어, 오전 8시와 오후 5시 사이, 또는 오후 7시에서 오전 4시 사이의 규칙적인 시간 간격으로 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은 쿼리가 수신될 때마다 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은 컴퓨트 엔티티에 저장된 데이터세트가 업데이트되었다는 결정에 응답하여 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은, 매핑 모듈이 파싱 모듈에 의해 파싱된 테이블 특성이 적어도 하나의 데이터세트에 존재한다고 결정할 때마다 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은 쿼리를 클러스터로 라우팅하기 전에 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은 모든 클러스터, 클러스터의 서브세트 또는 개별적인 클러스터를 폴링할 수 있다. 일부 실시예에서, 폴링 모듈은 모든 클러스터, 클러스터의 서브세트 또는 개별적인 클러스터 중 적어도 하나를 동기식으로 또는 비동기식으로 폴링할 수 있다. 일부 실시예에서, 블록(410)에서의 방법은 적어도 하나의 클러스터 중의 각 클러스터에 대한 개방된 연결의 수를 결정하기 위해 각 클러스터를 폴링하는 단계를 포함할 수 있다. 일부 실시예에서, 블록(410)에서의 방법은 최소 수의 개방된 연결을 갖는 클러스터를 식별하는 단계를 포함할 수 있다. 일부 실시예에서, 블록(410)에서의 방법은 각 클러스터에 대한 쿼리에 대한 추정된 실행 리드 시간을 결정하기 위해 적어도 하나의 클러스터 중의 각 클러스터를 폴링하는 단계를 포함할 수 있다. 일부 실시예에서, 블록(410)에서의 방법은 최소 추정된 리드 시간을 갖는 클러스터를 식별하는 단계를 포함할 수 있다.
블록(412)에서, 방법은 실행을 위한 쿼리를 최적의 클러스터로 라우팅하는 단계를 포함할 수 있다. 최적의 클러스터를 결정할 시, 쿼리 모듈은 네트워크를 통해 최적의 클러스터와의 연결을 개방할 수 있다. 대안적으로, 쿼리 모듈은 사용자 디바이스 또는 최적의 클러스터 중 적어도 하나와의 네트워크를 통한 연결을 개시하기 위해 사용자 디바이스 또는 최적의 클러스터 중 적어도 하나에 명령어를 전송할 수 있다. 일부 실시예에서, 쿼리 모듈은 네트워크를 통해 최적의 클러스터에 실행을 위한 쿼리를 전송할 수 있다. 일부 실시예에서, 쿼리 모듈은 네트워크를 통해 최적의 클러스터에 실행을 위한 쿼리를 전송하기 위한 명령어를 사용자 디바이스에 전송할 수 있다. 일부 실시예에서, 각 클러스터는 쿼리 모듈로부터 수신된 하나 이상의 쿼리를 실행하도록 구성될 수 있다. 일부 실시예에서, 각 클러스터는 쿼리의 성공적인 실행 시 쿼리 모듈 또는 사용자 디바이스에 응답을 전송하도록 구성될 수 있다. 일부 실시예에서, 각 클러스터는 쿼리의 성공적이지 않은 실행 시 쿼리 모듈 또는 사용자 디바이스에 메시지를 전송하도록 구성될 수 있다.
하지만, 블록(406)에서 쿼리 모듈이 파싱된 테이블 특성이 저장된 테이블과 연관되지 않는다고 결정하는 경우, 방법(400)은 블록(414)으로 진행한다. 블록(414)에서, 파스 테이블 특성이 복수의 클러스터 상에 저장된 테이블과 연관되지 않는다는 결정은 사용자 디바이스에 메시지를 전송한다. 일부 실시예에서, 메시지는 데이터를 찾을 수 없음, 세션 타임아웃, 테이블 특성을 찾을 수 없음, 또는 쿼리가 시스템에 의해 이해되지 않았다는 표시 중 적어도 하나를 나타내는 오류 메시지일 수 있다.
일부 실시예에서, 방법은 최적의 클러스터로부터의 응답을 네트워크를 통해 사용자 디바이스로 송신하는 단계를 포함할 수 있다. 일부 실시예에서, 폴링 모듈은 복수의 클러스터 각각에 대한 이용 정보를 수집 및 분석하도록 구성될 수 있다. 일부 실시예에서, 최적의 클러스터 상에서 사용자 디바이스와 연관된 연결을 개방한다. 일부 실시예에서, 저장된 테이블은 편집-불가능하다.
도 4는 개시된 실시예와 일치하는, 클러스터 작업 부하를 관리하기 위한 시스템(100)의 예시적인 사용을 예시한다. 사용자는 인가 정보로 사용자 디바이스(102)에 로그인할 수 있다. 그 후, 사용자는 SQL 쿼리 편집기와 같은 프로그램을 열고, 소프트웨어에 쿼리를 타이핑할 수 있다. 예를 들어, 쿼리는 "SELECT columnName FROM tableName"일 수 있다. 그 후, 사용자는 실행을 위한 쿼리를 전송할 수 있다.
쿼리 모듈(200)의 파싱 모듈(202)은 쿼리를 수신할 수 있다. 또한, 파싱 모듈(202)은 쿼리를 파싱하고 파싱된 쿼리의 어느 요소가 테이블 특성인지를 결정할 수 있다. 이 예시에서, 파싱 모듈(202)은 쿼리를 파싱하고, "tableName"이 테이블 특성임을 결정한다. 그 후, 파싱 모듈(202)은 어느 데이터세트(들)가 매칭하는 테이블 특성을 갖는 테이블을 포함하는지를 결정하기 위해, 매핑 모듈(206)에 파싱된 테이블 특성을 전송할 수 있다. 그 후, 매핑 모듈(206)은 폴링 모듈(204)로 결정된 데이터세트(들)를 전송할 수 있다. 그 후, 폴링 모듈(204)은 각 클러스터에 대한 폴링된 클러스터 상태 데이터, 결정된 데이터세트 및/또는 사용자의 인증 정보를 기초로 최적의 클러스터를 결정할 수 있다. 폴링 모듈(204)은 매핑 모듈(206)에 결정된 최적의 클러스터를 전송할 수 있다. 그 후, 매핑 모듈(206)은 최적의 클러스터에 실행을 위한 쿼리를 전송할 수 있다. 이 예시에서, 매핑 모듈(206)은 클러스터 C(306)를 최적의 클러스터로 결정하고 실행을 위한 그 쿼리를 클러스터로 라우팅한다.
클러스터 C(306)는 매핑 모듈(206)로부터 수신된 쿼리의 성공적인 실행 시, 사용자 디바이스(102)에 응답을 전송할 수 있다. 응답은 수신된 쿼리의 출력과 연관된 데이터 및/또는 실행된 쿼리와 연관된 정보를 포함할 수 있다.
그 후, 사용자는 사용자 디바이스(102) 상에서 수신된 데이터를 보거나 다운로드하거나 또는 편집하기 위해 스프레드시트 소프트웨어와 같은 하나 이상의 프로그램을 사용할 수 있다.
본 개시가 그의 특정 실시예를 참조하여 도시되고 설명되었지만, 본 개시는 수정 없이 다른 환경에서 실시될 수 있다는 것이 이해될 것이다. 전술한 설명은 예시의 목적으로 제시되었다. 이는 완전한 것은(exhaustive) 아니며, 개시된 정확한 형태 또는 실시예로 제한되지 않는다. 통상의 기술자에게는 개시된 실시예의 실시 및 명세서의 고려로부터 수정 및 조정(adaptations)이 명백할 것이다. 일부 실시예에서, 개시된 실시예의 양상이 메모리에 저장되는 것으로 설명되었지만, 통상의 기술자는 이들 양상이 2차 저장 디바이스 예를 들어, 하드 디스크 또는 CD ROM, 또는 다른 형태의 RAM 또는 ROM, USB 매체, DVD, 블루-레이(Blu-ray) 또는 다른 광학 드라이브 매체와 같은 다른 타입의 컴퓨터 판독가능 매체 상에 또한 저장될 수 있음을 인식할 것이다.
기록된 설명 및 개시된 방법을 기초로 하는 컴퓨터 프로그램은 숙련된 개발자의 기술 내에 있다. 다양한 프로그램 또는 프로그램 모듈은 통상의 기술자에게 알려진 기법 중 어느 것을 사용하여 생성될 수 있거나, 또는 기존의 소프트웨어와 관련하여 설계될 수 있다. 예를 들어, 프로그램 섹션 또는 프로그램 모듈은 .Net Framework, .Net Compact Framework(및 Visual Basic, C 등과 같은 관련된 언어), Java, C++, Objective-C, HTML, HTML/AJAX 조합, Java 애플릿이 포함된 XML 또는 HTML로, 또는 이를 통해 설계될 수 있다.
또한, 예시적인 실시예가 여기서 설명되면서, (예를 들어, 다양한 실시예에 걸친 양상의) 동등한 요소, 수정, 생략, 조합, 조정 및/또는 변경을 갖는 임의의 및 모든 실시예의 범주는 본 개시를 기초로 통상의 기술자에 의해 인식될 것이다. 청구범위의 제한사항은 청구범위에 사용된 언어에 기초하여 광범위하게 해석되어야 하며, 본 출원의 절차(prosecution) 동안 또는 본 명세서에 설명된 예시로 제한되지 않는다. 예시는 비-배타적 인 것으로 해석되어야 한다. 또한, 개시된 방법의 단계는 단계를 재정렬하거나 및/또는 단계를 삽입하거나 삭제하는 것을 포함하여 임의의 방식으로 수정될 수 있다. 그러므로, 본 명세서 및 예시는 단지 예시적인 것으로 간주되며, 진정한 범주 및 사상은 다음의 청구범위 및 그의 등가물의 전체 범주에 의해 나타나는 것으로 의도된다.

Claims (20)

  1. 클러스터 작업 부하(cluster workloads)를 관리하기 위한 방법으로서, 상기 방법은:
    사용자 디바이스로부터 쿼리(query)를 수신하는 단계;
    파싱 모듈(parsing module)에서, 상기 쿼리로부터 테이블 특성을 파싱하는 단계;
    상기 파싱된 테이블 특성이 저장된 테이블과 연관된다고 결정하는 단계;
    상기 저장된 테이블을 포함하는 복수의 클러스터 중에서 적어도 하나의 클러스터를 식별하는 단계;
    폴링 모듈(polling module)을 사용하여:
    클러스터 상태 데이터를 위하여 상기 적어도 하나의 클러스터의 각 클러스터를 폴링하고 - 상기 클러스터 상태 데이터는 각 클러스터와 연관된 전력 소비 또는 각 클러스터 상의 각 쿼리 실행과 연관된 전력 소비를 포함함 -,
    상기 적어도 하나의 클러스터의 각 클러스터에 대하여, 실행 리드 시간(lead time), 연결의 수, 및 네트워크 레이턴시(network latency)를 결정함으로써,
    상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계 - 상기 최적의 클러스터는 상기 클러스터 상태 데이터를 기초로 하고, 최소 실행 시간, 최소 수의 연결, 또는 최소 네트워크 레이턴시 중 적어도 하나를 갖는 클러스터를 포함함 -; 및
    상기 최적의 클러스터에 실행을 위한 상기 쿼리를 전송하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 쿼리는 구조화된 쿼리를 포함하는, 방법.
  3. 제1항에 있어서, 상기 방법은:
    네트워크를 통해, 상기 최적의 클러스터로부터의 응답을 상기 사용자 디바이스로 송신하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 상기 폴링 모듈은 상기 복수의 클러스터 각각에 대한 이용 정보를 수집 및 분석하도록 구성되는, 방법.
  5. 제1항에 있어서, 상기 파싱된 테이블 특성이 복수의 클러스터 상에 저장된 테이블과 연관된다고 결정하는 단계는:
    해싱 함수(hashing function)를 사용하여, 해시된 값을 생성하기 위해 상기 파싱된 테이블 특성을 해싱하는 단계;
    상기 생성된 해시 값에 대응하는 비트 벡터에서 어레이 위치를 식별하는 단계; 및
    상기 비트 벡터에서의 상기 식별된 어레이 위치가 영이 아닌 값을 포함한다고 결정하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 방법은:
    상기 최적의 클러스터 상에서 상기 사용자 디바이스와 연관된 연결을 개방하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계는:
    상기 적어도 하나의 클러스터 중의 각 클러스터에 대한 개방된 연결의 수를 결정하기 위해 각 클러스터를 폴링하는 단계; 및
    최소 수의 개방된 연결을 갖는 클러스터를 식별하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계는:
    각 클러스터에 대한 상기 쿼리에 대한 추정된 실행 리드 시간을 결정하기 위해 상기 적어도 하나의 클러스터 중의 각 클러스터를 폴링하는 단계; 및
    최소 추정된 리드 시간을 갖는 클러스터를 식별하는 단계를 포함하는, 방법.
  9. 제1항에 있어서, 상기 저장된 테이블은 편집-불가능한, 방법.
  10. 시스템으로서,
    명령어를 포함하는 비-일시적 메모리;
    하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는 상기 하나 이상의 프로세서로 하여금:
    사용자 디바이스로부터 쿼리를 수신하는 것;
    파싱 모듈에서, 상기 쿼리로부터 테이블 특성을 파싱하는 것;
    파싱된 이름 테이블 특성이 저장된 테이블과 연관되는지를 결정하는 것;
    연관을 결정하는 것에 응답하여, 상기 저장된 테이블을 포함하는 복수의 클러스터 중에서 적어도 하나의 클러스터를 식별하는 것;
    폴링 모듈을 사용하여:
    클러스터 상태 데이터를 위하여 상기 적어도 하나의 클러스터의 각 클러스터를 폴링하고 - 상기 클러스터 상태 데이터는 각 클러스터와 연관된 전력 소비 또는 각 클러스터 상의 각 쿼리 실행과 연관된 전력 소비를 포함함 -,
    상기 적어도 하나의 클러스터의 각 클러스터에 대하여, 실행 리드 시간, 연결의 수, 및 네트워크 레이턴시를 결정함으로써,
    상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 것 - 상기 최적의 클러스터는 상기 클러스터 상태 데이터를 기초로 하고, 최소 실행 시간, 최소 수의 연결, 또는 최소 네트워크 레이턴시 중 적어도 하나를 갖는 클러스터를 포함함 -; 및
    상기 식별된 최적의 클러스터에 실행을 위한 상기 쿼리를 전송하는 것을 하게 하는 상기 명령어를 실행하도록 구성되는, 시스템.
  11. 제10항에 있어서, 상기 쿼리는 구조화된 쿼리 또는 자연어 쿼리를 포함하는, 시스템.
  12. 제10항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서로 하여금:
    네트워크를 통해, 상기 최적의 클러스터로부터의 응답을 상기 사용자 디바이스로 송신하는 것을 더 하게 하는, 시스템.
  13. 제10항에 있어서, 상기 폴링 모듈은 상기 복수의 클러스터 각각에 대한 이용 정보를 수집 및 분석하도록 구성되는, 시스템.
  14. 제10항에 있어서, 상기 연관을 결정하기 위한 상기 명령어는 상기 하나 이상의 프로세서로 하여금:
    해싱 함수를 사용하여, 해시된 출력을 생성하기 위해 상기 파싱된 테이블 특성을 해싱하는 것;
    상기 생성된 해시 값에 대응하는 비트 벡터에서 어레이 위치를 식별하는 것; 및
    상기 비트 벡터에서의 상기 식별된 어레이 위치가 영이 아닌 값을 포함한다고 결정하는 것을 더 하게 하는, 시스템.
  15. 제10항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서로 하여금:
    상기 최적의 클러스터 상에서 상기 사용자 디바이스와 연관된 연결을 개방하는 것을 더 하게 하는, 시스템.
  16. 제10항에 있어서, 상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하기 위한 상기 명령어는 상기 하나 이상의 프로세서로 하여금:
    상기 적어도 하나의 클러스터 중의 각 클러스터에 대한 개방된 연결의 수를 결정하기 위해 각 클러스터를 폴링하는 것; 및
    최소 수의 개방된 연결을 갖는 클러스터를 식별하는 것을 더 하게 하는, 시스템.
  17. 제10항에 있어서, 상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하기 위한 상기 명령어는 상기 하나 이상의 프로세서로 하여금:
    각 클러스터에 대한 상기 쿼리에 대한 추정된 실행 리드 시간을 결정하기 위해 상기 적어도 하나의 클러스터 중의 각 클러스터를 폴링하는 것; 및
    최소 추정된 리드 시간을 갖는 클러스터를 식별하는 것을 더 하게 하는, 시스템.
  18. 제10항에 있어서, 상기 저장된 테이블은 편집-불가능한, 시스템.
  19. 클러스터 작업 부하를 관리하기 위한 방법으로서, 상기 방법은:
    사용자 디바이스로부터, 구조화된 쿼리를 수신하는 단계;
    파싱 모듈에서, 상기 구조화된 쿼리로부터 테이블 특성을 파싱하는 단계;
    상기 파싱된 테이블 특성이 저장된 테이블과 연관되는지를 결정하는 단계;
    연관을 결정하는 것에 응답하여, 상기 저장된 테이블을 포함하는 적어도 하나의 세트를 식별하는 단계;
    상기 저장된 테이블을 포함하는 적어도 하나의 데이터세트를 식별하는 것에 응답하여, 상기 적어도 하나의 데이터세트를 포함하는 적어도 하나의 클러스터를 식별하는 단계;
    폴링 모듈을 사용하여:
    클러스터 상태 데이터를 위하여 상기 적어도 하나의 클러스터의 각 클러스터를 폴링하고 - 상기 클러스터 상태 데이터는 각 클러스터와 연관된 전력 소비 또는 각 클러스터 상의 각 쿼리 실행과 연관된 전력 소비를 포함함 -,
    상기 적어도 하나의 클러스터의 각 클러스터에 대하여, 실행 리드 시간, 연결의 수, 및 네트워크 레이턴시를 결정함으로써,
    상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계 - 상기 최적의 클러스터는 상기 클러스터 상태 데이터를 기초로 하고, 최소 실행 시간, 최소 수의 연결, 또는 최소 네트워크 레이턴시 중 적어도 하나를 갖는 클러스터를 포함함 -;
    네트워크를 통해, 상기 사용자 디바이스와 상기 최적의 클러스터 사이의 연결을 개방하는 단계;
    상기 최적의 클러스터에 실행을 위한 상기 구조화된 쿼리를 전송하는 단계; 및
    상기 네트워크를 통해, 상기 최적의 클러스터로부터의 응답을 상기 사용자 디바이스로 송신하는 단계를 포함하는, 방법.
  20. 제19항에 있어서, 상기 적어도 하나의 클러스터 중에서 최적의 클러스터를 식별하는 단계는:
    상기 적어도 하나의 클러스터 중에서 각 클러스터에 대한 개방된 연결의 수를 결정하기 위해 각 클러스터를 폴링하는 단계; 및
    최소 수의 개방된 연결을 갖는 클러스터를 식별하는 단계를 포함하는, 방법.
KR1020227020791A 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법 KR102587776B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237034099A KR20230147745A (ko) 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063123593P 2020-12-10 2020-12-10
US63/123,593 2020-12-10
PCT/IB2021/061523 WO2022123490A1 (en) 2020-12-10 2021-12-09 Systems and methods for managing connections in scalable clusters

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237034099A Division KR20230147745A (ko) 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20220088958A KR20220088958A (ko) 2022-06-28
KR102587776B1 true KR102587776B1 (ko) 2023-10-12

Family

ID=81943519

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237034099A KR20230147745A (ko) 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법
KR1020227020791A KR102587776B1 (ko) 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020237034099A KR20230147745A (ko) 2020-12-10 2021-12-09 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법

Country Status (3)

Country Link
US (1) US11914624B2 (ko)
KR (2) KR20230147745A (ko)
WO (1) WO2022123490A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914592B2 (en) * 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US11019166B2 (en) 2018-02-27 2021-05-25 Elasticsearch B.V. Management services for distributed computing architectures using rolling changes
US11943295B2 (en) 2019-04-09 2024-03-26 Elasticsearch B.V. Single bi-directional point of policy control, administration, interactive queries, and security protections

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523032B1 (en) * 2000-05-12 2003-02-18 Oracle Corporation Servicing database requests using read-only database servers coupled to a master database server
KR100320680B1 (ko) * 2000-06-12 2002-01-17 곽정소 열영상 신호처리를 개선하기 위한 가변 기준전압 설정방법및 가변 기준전압 설정회로
EP1854030A2 (en) 2005-01-28 2007-11-14 Aol Llc Web query classification
US7958109B2 (en) 2009-02-06 2011-06-07 Yahoo! Inc. Intent driven search result rich abstracts
US8166203B1 (en) * 2009-05-29 2012-04-24 Google Inc. Server selection based upon time and query dependent hashing
US9323844B2 (en) 2010-06-11 2016-04-26 Doat Media Ltd. System and methods thereof for enhancing a user's search experience
US9311354B2 (en) * 2012-12-29 2016-04-12 Futurewei Technologies, Inc. Method for two-stage query optimization in massively parallel processing database clusters
US9218379B2 (en) * 2013-03-15 2015-12-22 Informatica Llc Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values
US9824119B2 (en) 2014-07-24 2017-11-21 Citrix Systems, Inc. Systems and methods for load balancing and connection multiplexing among database servers
US10320680B1 (en) * 2015-11-04 2019-06-11 Amazon Technologies, Inc. Load balancer that avoids short circuits
WO2017106379A1 (en) * 2015-12-14 2017-06-22 Pivotal Software, Inc. Workload management in distributed database systems
KR101828522B1 (ko) 2016-02-16 2018-02-12 전북대학교산학협력단 이종 데이터 처리를 위한 분산 병렬 처리 시스템
WO2017190058A1 (en) 2016-04-28 2017-11-02 Snowflake Computing Inc. Multi-cluster warehouse
CN109361749B (zh) * 2018-10-24 2022-03-29 华为云计算技术有限公司 报文处理方法、相关设备及计算机存储介质

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2014-0188841호(2014.07.03.) 1부.*
미국공개특허 제2014-0279853호(2014.09.18.) 1부.*
미국공개특허 제2017-0169097호(2017.06.15.) 1부.*
미국등록특허 제10320680호(2019.06.11.) 1부.*
미국등록특허 제6523032호(2003.02.18.) 1부.*
미국등록특허 제8725862호(2014.05.13.) 1부.*
일본공표특허 제2019-519026호(2019.07.04.) 1부.*
한국공개특허 제10-2017-0096302호(2017.08.24.) 1부.*

Also Published As

Publication number Publication date
US11914624B2 (en) 2024-02-27
KR20230147745A (ko) 2023-10-23
WO2022123490A1 (en) 2022-06-16
KR20220088958A (ko) 2022-06-28
US20220188336A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
KR102587776B1 (ko) 확장 가능한 클러스터에서 연결을 관리하기 위한 시스템 및 방법
US11379755B2 (en) Feature processing tradeoff management
US20210374610A1 (en) Efficient duplicate detection for machine learning data sets
US11212358B2 (en) Techniques for compact data storage of network traffic and efficient search thereof
US20200050968A1 (en) Interactive interfaces for machine learning model evaluations
EP3161635B1 (en) Machine learning service
US10318882B2 (en) Optimized training of linear machine learning models
US11139993B2 (en) Method, apparatus, and computer program product for generating a predicted channel add object in a group-based communication system
US10824694B1 (en) Distributable feature analysis in model training system
US11568344B2 (en) Systems and methods for automated pattern detection in service tickets
US20200112475A1 (en) Real-time adaptive infrastructure scenario identification using syntactic grouping at varied similarity
US20200110815A1 (en) Multi contextual clustering
US11588844B1 (en) Distributing search loads to optimize security event processing
CN109299175B (zh) 数据库动态扩展方法、系统、装置和存储介质
CN113298645B (zh) 资源额度调整方法、装置及电子设备
US20210097232A1 (en) Augmented Natural Language Generation Platform
US12111858B1 (en) Database system interaction embedding and indexing for text retrieval and generation
CN117951748B (zh) 隐私数据的数据存储架构构建方法、装置、设备及介质
US20240184855A1 (en) Training of prediction network for automatic correlation of information

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right