KR20170129540A - 룰 관리 시스템 및 방법 - Google Patents

룰 관리 시스템 및 방법 Download PDF

Info

Publication number
KR20170129540A
KR20170129540A KR1020160060374A KR20160060374A KR20170129540A KR 20170129540 A KR20170129540 A KR 20170129540A KR 1020160060374 A KR1020160060374 A KR 1020160060374A KR 20160060374 A KR20160060374 A KR 20160060374A KR 20170129540 A KR20170129540 A KR 20170129540A
Authority
KR
South Korea
Prior art keywords
data
rule
service engine
data service
engine
Prior art date
Application number
KR1020160060374A
Other languages
English (en)
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 KR1020160060374A priority Critical patent/KR20170129540A/ko
Priority to CN201710339186.7A priority patent/CN107392407A/zh
Priority to US15/597,710 priority patent/US20170337197A1/en
Publication of KR20170129540A publication Critical patent/KR20170129540A/ko

Links

Images

Classifications

    • G06F17/3048
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • 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/172Caching, prefetching or hoarding of files
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • 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
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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
    • G06F16/24552Database cache management
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F17/30132
    • G06F17/30457
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

룰 관리 시스템 및 방법이 제공된다. 본 발명의 일 실시예에 따른 룰 관리 시스템은, 기 정의된 하나 이상의 룰(rule)을 기반으로 의사 결정(decision-making)을 수행하는 룰 엔진(rule engine); 및 기간계 시스템(legacy system)의 데이터베이스와 연결되며, 상기 룰을 분석하여 상기 데이터베이스에 저장된 데이터 중 적어도 일부를 캐시(cache)하는 데이터 서비스 엔진을 포함하며, 상기 룰 엔진은, 상기 데이터 서비스 엔진에 캐시된 데이터를 이용하여 상기 의사 결정을 수행한다.

Description

룰 관리 시스템 및 방법{SYSTEM AND METHOD FOR MANAGING RULE}
본 발명의 실시예들은 룰 처리를 효율적으로 수행하기 위한 기술과 관련된다.
룰 엔진(Rule Engine)이란 기업의 의사 결정에 사용되는 복잡한 업무 규칙 또는 변경이 잦은 프로세스를 도출 및 정형화하여 관리하는 자동화 시스템, 기술 또는 솔루션을 의미한다. 일반적으로, 룰 엔진은 기간계 시스템과 연동하여 의사 결정을 수행하게 된다. 기간계 시스템은 룰 엔진과 연동하여 업무 처리를 수행하는 시스템으로서, 과거의 플랫폼, 프로그래밍 언어, 기술 등에 기초하여 개발될 수 있다.
그러나, 종래에는 룰 엔진에서의 의사 결정 과정 중 기간계 시스템의 데이터베이스(DB)에 저장된 데이터를 필요로 하는 경우 룰 엔진에서 기간계 서버를 통해 상기 DB에 접근할 수 밖에 없었다. 구체적으로, 종래에는 기간계 시스템의 서버에서 건단위로 DB를 조회하여 룰 엔진에 쿼리(query)를 전송하고 그 결과를 룰 엔진으로부터 수신하여 다시 기간계 시스템의 DB로 전송하여야 하는 번거로움이 있었다. 따라서, 종래 기술에 따르면, 룰 엔진에서 DB 접근이 필요할 때마다 기간계 시스템을 통해야 하는 제약 사항으로 인해 과도한 트랜잭션(transaction)이 발생하는 문제점이 있었다. 특히, 종래 기술에 따르면, 룰의 개수만큼 DB 접속, 데이터 수집 및 데이터 전달 과정이 반복적으로 수행된다는 점에서 기간계 시스템의 병목 현상이 발생하게 되며, 룰 수행에 따른 복잡성이 증가하게 되는 문제점이 있었다.
한국등록특허공보 제10-1129815호(2012.03.15)
본 발명의 실시예들은 데이터 서비스 엔진에 데이터를 캐시하고 룰 수행시 데이터 서비스 엔진에 캐시된 데이터를 이용하여 의사 결정을 수행함으로써 멀티 스레딩(Multi-threading)의 이점을 극대화하고 룰 처리 속도를 비약적으로 향상시키기 위한 것이다.
본 발명의 예시적인 실시예에 따르면, 기 정의된 하나 이상의 룰(rule)을 기반으로 의사 결정(decision-making)을 수행하는 룰 엔진(rule engine); 및 기간계 시스템(legacy system)의 데이터베이스와 연결되며, 상기 룰을 분석하여 상기 데이터베이스에 저장된 데이터 중 적어도 일부를 캐시(cache)하는 데이터 서비스 엔진을 포함하며, 상기 룰 엔진은, 상기 데이터 서비스 엔진에 캐시된 데이터를 이용하여 상기 의사 결정을 수행하는, 룰 관리 시스템이 제공된다.
상기 데이터 서비스 엔진은, 상기 룰의 수행에 소요되는 비용(cost)이 최소화되도록 상기 데이터 중 적어도 일부를 캐시할 수 있다.
상기 데이터 서비스 엔진은, 각 룰별 수행 빈도를 고려하여 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정할 수 있다.
상기 데이터 서비스 엔진은, 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 감소시킬 수 있다.
상기 데이터 서비스 엔진은, 상기 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정할 수 있다.
상기 캐시 우선순위는, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 상기 데이터 서비스 엔진의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리(query)의 수행 시간, 상기 쿼리의 실행 속도, 상기 쿼리의 호출 횟수 또는 주기, 및 상기 데이터 서비스 엔진이 상기 데이터베이스에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정될 수 있다.
상기 데이터 서비스 엔진은, 캐시하고자 하는 데이터가 복수 개 존재하는 경우 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시할 수 있다.
본 발명의 다른 예시적인 실시예에 따르면, 룰 엔진(rule engine)에서, 기 정의된 하나 이상의 룰(rule)을 기반으로 의사 결정(decision-making)을 수행하는 단계; 기간계 시스템(legacy system)의 데이터베이스와 연결되는 데이터 서비스 엔진에서, 상기 룰을 분석하여 상기 데이터베이스에 저장된 데이터 중 적어도 일부를 캐시(cache)하는 단계를 포함하며, 상기 의사 결정을 수행하는 단계는, 상기 데이터 서비스 엔진에 캐시된 데이터를 이용하여 상기 의사 결정을 수행하는, 룰 관리 방법이 제공된다.
상기 캐시하는 단계는, 상기 룰의 수행에 소요되는 비용(cost)이 최소화되도록 상기 데이터 중 적어도 일부를 캐시할 수 있다.
상기 캐시하는 단계는, 각 룰별 수행 빈도를 고려하여 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정할 수 있다.
상기 캐시하는 단계는, 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 감소시킬 수 있다.
상기 캐시하는 단계는, 상기 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정할 수 있다.
상기 캐시 우선순위는, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 상기 데이터 서비스 엔진의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리(query)의 수행 시간, 상기 쿼리의 실행 속도, 상기 쿼리의 호출 횟수 또는 주기, 및 상기 데이터 서비스 엔진이 상기 데이터베이스에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정될 수 있다.
상기 캐시하는 단계는, 캐시하고자 하는 데이터가 복수 개 존재하는 경우 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시할 수 있다.
본 발명의 실시예들에 따르면, 룰 수행시 룰 엔진이 기간계 시스템의 데이터베이스에 접근하는 대신 데이터 서비스 엔진에 캐시된 데이터를 이용하여 의사 결정을 수행하도록 함으로써, 기간계 시스템의 과도한 트랜잭션 발생을 방지하고 기간계 시스템의 부하를 감소시켜 룰 수행시 발생될 수 있는 병목 현상을 방지할 수 있다.
또한, 본 발명의 실시예들에 따르면, 데이터 서비스 엔진이 룰을 분석하여 상기 룰의 수행에 소요되는 비용을 계산하고 상기 비용이 최소화되도록 기간계 시스템의 데이터베이스에 저장된 데이터 중 일부를 캐시하도록 함으로써, 데이터 확보에 따른 소요 시간을 최소화하고 데이터 서비스 엔진의 한정된 자원을 효율적으로 사용할 수 있다. 이 경우, 룰 엔진의 사용자 측면에서도 작업 편의성이 향상되며 룰 작성시 사용자 직관성이 크게 향상될 수 있다.
또한, 본 발명의 실시예들에 따르면, 데이터 서비스 엔진이 데이터가 속한 테이블별로 캐시 우선순위를 결정하고 상기 캐시 우선순위에 따라 데이터 서비스 엔진에 캐시되는 데이터를 결정하도록 함으로써, 데이터 캐시를 보다 효율적으로 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 룰 관리 시스템의 상세 구성을 나타낸 블록도
도 2는 본 발명의 일 실시예에 따른 데이터 서비스 엔진의 상세 구성을 나타낸 블록도
도 3은 일반적인 룰 엔진에서의 복수 개의 룰 수행 과정을 나타낸 흐름도
도 4는 일반적인 룰 수행 과정에서 도 3의 룰 A가 수행되는 데 소요되는 시간을 나타낸 블록도
도 5는 일반적인 룰 수행 과정에서 도 3의 룰 B가 수행되는 데 소요되는 시간을 나타낸 블록도
도 6은 본 발명의 일 실시예에 따른 룰 수행 과정에서 각 룰별 데이터 서비스 엔진이 사용되는 확률을 나타낸 예시도
도 7은 데이터 서비스 엔진에서 룰의 수행에 소요되는 비용이 최소화되도록 데이터 중 일부를 캐시하는 과정을 설명하기 위한 예시도
도 8은 데이터 서비스 엔진에서 테이블별 캐시 우선순위에 따라 캐시된 데이터를 업데이트하는 과정을 설명하기 위한 예시도
도 9는 데이터 서비스 엔진에서 캐시되는 데이터를 최적화하는 과정을 설명하기 위한 예시도
도 10은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
도 11은 본 발명의 일 실시예에 따른 데이터 서비스 엔진에서의 데이터 캐시 과정을 설명하기 위한 흐름도
도 12는 본 발명의 일 실시예에 따른 룰 처리 과정을 설명하기 위한 흐름도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 룰 관리 시스템(100)의 상세 구성을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 룰 관리 시스템(100)은 기간계 시스템(150, legacy system)과 연동하여 의사 결정(decision-making)을 수행하는 시스템이다.
본 실시예들에 있어서, 의사 결정(decision-making)이란 업무 처리 과정에서 여러 행동 집합 중 특정 행동을 선택하는 과정을 의미한다. 또한, 업무란 기업, 단체, 공공기관 등에 존재하는 각종 사무로서, 예를 들어 병원에서 구급차의 경로를 배정하는 업무(emergency car routing), 도로교통공단에서 교통체증 패턴을 파악하고 대중 교통의 최적 경로를 설정하는 업무(traffic optimization) 등이 될 수 있다.
또한, 본 실시예들에 있어서, 기간계 시스템(150)은 룰 관리 시스템(100)과 연동하여 업무 처리를 수행하는 시스템으로서, 과거의 플랫폼, 프로그래밍 언어, 기술 등에 기초하여 개발될 수 있다. 도 1에 도시된 바와 같이, 기간계 시스템(150)은 기간계 서버(152) 및 데이터베이스(154)를 포함한다.
기간계 서버(152)는 각 업무별 처리 로직을 관리하는 서버로서, 예를 들어 병원 서버, 은행 서버, 보험사 서버 등이 될 수 있다. 일 예시로서, 기간계 서버(152)가 병원 서버인 경우, 병원 서버는 구급차의 경로를 배정하는 업무의 처리 로직(프로세스 1 → 프로세스 2 → 프로세스 3...), 환자의 병원 예약을 등록하는 업무의 처리 로직(프로세스 4 → 프로세스 5...) 등을 구비할 수 있으며 상기 처리 로직에 따라 업무 처리를 수행할 수 있다. 이때, 기간계 서버(152)의 처리 로직 수행 중 사전에 정의된 룰(rule)을 기반으로 의사 결정을 도출하여야 하는 작업이 필요한 경우, 기간계 서버(152)는 룰 엔진(102)에 쿼리(query)를 전송할 수 있다. 룰 엔진(102)은 상기 쿼리에 따라 기 정의된 룰을 기반으로 의사 결정을 수행하고, 의사 결정 결과를 기간계 서버(152)로 전송할 수 있다. 기간계 서버(152)는 룰 엔진(102)으로부터 상기 의사 결정 결과를 수신하고, 상기 의사 결정 결과를 이용하여 처리 로직을 계속적으로 수행할 수 있다. 여기서, 룰은 의사 결정 과정에서 사용되는 규칙, 절차, 노하우, 지식 등을 모두 포함하는 넓은 의미로 사용된다.
데이터베이스(154)는 룰 엔진(102)의 의사 결정 과정에서 필요한 데이터를 저장하는 저장소이다. 데이터베이스(154)에 저장된 데이터는 룰 엔진(102)의 의사 결정 수행시 입력값 또는 참조값으로서 활용될 수 있다.
이하에서는, 도 1을 참조하여 본 발명의 일 실시예에 따른 룰 관리 시스템(100)의 상세 구성에 대해 자세히 살펴보기로 한다. 도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 룰 관리 시스템(100)은 룰 엔진(102, rule engine), 룰 저장소(104, rule repository) 및 데이터 서비스 엔진(106)을 포함한다.
룰 엔진(102)은 기 정의된 하나 이상의 룰을 기반으로 의사 결정을 수행하는 모듈이다. 룰 엔진(102)은 네트워크(미도시)를 통해 기간계 서버(152)와 연결되며, 기간계 서버(152)로부터 쿼리를 수신할 수 있다. 룰 엔진(102)은 상기 쿼리에 따라 기 정의된 룰을 기반으로 의사 결정을 수행하고, 의사 결정 결과를 기간계 서버(152)로 전송할 수 있다. 이때, 룰 엔진(102)에서의 의사 결정 과정 중 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 필요로 하는 경우(즉, 룰 수행 과정에서 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 입력값 또는 참조값으로서 활용하고자 하는 경우), 룰 엔진(102)은 기간계 서버(152)를 통해 데이터베이스(154)에 접근하는 대신 데이터 서비스 엔진(106)에 캐시(cache)된 데이터를 이용하여 의사 결정을 수행할 수 있다. 후술할 바와 같이, 데이터 서비스 엔진(106)은 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 적어도 일부를 캐시하여 룰 엔진(102)에 제공할 수 있으며, 룰 엔진(102)은 캐시된 데이터를 이용하여 의사 결정을 수행할 수 있다. 이에 따라, 기간계 시스템(150)의 과도한 트랜잭션 발생을 방지하고 기간계 시스템(150)의 부하를 감소시켜 룰 수행시 발생될 수 있는 병목 현상을 방지할 수 있다.
룰 저장소(104)는 의사 결정을 수행하는 데 필요한 하나 이상의 룰이 저장되는 저장소이다. 룰 엔진(102)은 기간계 서버(152)로부터 수신된 쿼리에 따라 룰 저장소(104)에 저장된 룰을 수행할 수 있다. 도 1에서는 설명의 편의상 룰 저장소(104)가 룰 엔진(102)과 별도의 구성인 것으로 도시하였으나, 룰 저장소(104)는 룰 엔진(102)과 일체로서 형성될 수도 있다.
데이터 서비스 엔진(106)은 룰을 분석하여 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 적어도 일부를 패치(fetch)하여 캐시하며, 룰 엔진(102)의 의사 결정 수행시 캐시된 데이터를 룰 엔진(102)에 제공하는 모듈이다. 데이터 서비스 엔진(106)은 저장 용량이 크지는 않으나 읽기/쓰기 속도가 빠르고 랜덤 액세스(random access)에 유리한 데이터 저장소(미도시) 및 상기 데이터 저장소를 관리하는 데 사용되는 데이터베이스 관리 시스템(DBMS : Data Base Management System, 미도시)를 구비할 수 있다. 또한, 도 1에 도시된 바와 같이, 데이터 서비스 엔진(106)은 네트워크를 통해 기간계 시스템(150)의 데이터베이스(154)와 연결될 수 있다.
상술한 바와 같이, 종래에는 룰 엔진에서의 의사 결정 과정 중 기간계 시스템의 데이터베이스에 저장된 데이터를 필요로 하는 경우 룰 엔진에서 기간계 서버를 통해 상기 데이터베이스에 접근할 수 밖에 없었으며, 이 과정에서 과도한 트랜잭션이 발생하는 문제점이 있었다. 이러한 종래 기술의 문제점을 해결하기 위해, 본 발명의 실시예들은 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 적어도 일부를 사전에 데이터 서비스 엔진(106)에 캐시한 후 룰 엔진(102)에서의 의사 결정 과정에서 데이터 서비스 엔진(106)에 캐시된 데이터를 이용하도록 구성하였다.
그러나, 일반적으로 룰 저장소(104)에는 수많은 룰이 존재하며, 각 룰의 수행에 필요한 데이터 및 상기 데이터가 속한 테이블의 수, 종류 등은 다양할 수 있다. 또한, 데이터 서비스 엔진(106)의 데이터 저장소는 그 용량이 크지 않으므로 데이터 서비스 엔진(106)에 저장되는 데이터의 크기 또한 그 한계가 있을 수 밖에 없다.
이에 따라, 데이터 서비스 엔진(106)은 룰의 수행에 소요되는 비용(cost)이 최소화되도록 데이터베이스(154)에 저장된 데이터 중 일부를 캐시하되, 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하여 상기 우선순위에 따라 데이터를 캐시할 수 있다.
구체적으로, 데이터 서비스 엔진(106)은 각 룰별 수행 빈도를 고려하여 데이터 서비스 엔진(106)에 캐시되는 데이터를 결정할 수 있다. 여기서, 각 룰별 수행 빈도는 예를 들어, 각 룰이 룰 엔진(102)에서 수행되는 횟수 또는 확률, 룰 수행 과정에서 각 룰별 데이터 서비스 엔진(106)이 사용되는 횟수 또는 확률 등이 될 수 있다. 이때, 데이터 서비스 엔진(106)은 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 감소시킬 수 있다.
일 예시로서, 데이터 서비스 엔진(106)은 룰 엔진(102)에서 수행되는 횟수가 많은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 증가시키고 룰 엔진(102)에서 수행되는 횟수가 적은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 감소시킬 수 있다.
다른 예시로서, 데이터 서비스 엔진(106)은 룰 수행 과정에서 데이터 서비스 엔진(106)이 사용되는 확률이 높은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 증가시키고 룰 수행 과정에서 데이터 서비스 엔진(106)이 사용되는 확률이 낮은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 감소시킬 수 있다. 이때, 각 룰별 데이터 서비스 엔진(106)이 사용되는 확률은 아래와 같이 데이터 서비스 엔진(106)이 사용되는 전체 횟수에 대한 해당 룰 수행시 데이터 서비스 엔진(106)이 사용되는 횟수의 비율로 계산될 수 있다.
각 룰별 데이터 서비스 엔진(106)이 사용되는 확률 = 해당 룰 수행시 데이터 서비스 엔진(106)이 사용되는 횟수/데이터 서비스 엔진(106)이 사용되는 전체 횟수
예를 들어, 각 룰별 데이터 서비스 엔진(106)이 사용되는 확률은 다음과 같이 나타낼 수 있다.
룰 1 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0.2
룰 2 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0
룰 3 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0
룰 4 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0.15
룰 5 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0.3
룰 6 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0
룰 7 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0.02
룰 8 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0
룰 9 수행시 데이터 서비스 엔진(106)이 사용되는 확률 = 0.13
위 예시에서, 룰 1, 룰 4, 룰 5 및 룰 9 수행시 데이터 서비스 엔진(106)이 사용되는 확률이 상대적으로 높은 것을 확인할 수 있다. 이에 따라, 룰 1, 룰 4, 룰 5 및 룰 9와 관련된 데이터가 데이터 서비스 엔진(106)에 캐시되는 경우, 룰의 수행에 소요되는 비용이 상대적으로 최소화(기간계 시스템(150)의 데이터베이스(154)로의 I/O가 최소화되므로)될 수 있다. 따라서, 본 발명의 실시예들은 룰 수행시 데이터 서비스 엔진(106)이 사용되는 확률이 높은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 높이도록 구성될 수 있다.
또한, 데이터 서비스 엔진(106)은 데이터가 속한 테이블별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 데이터 서비스 엔진(106)에 캐시되는 데이터를 결정할 수 있다. 여기서, 테이블은 데이터 집합의 단위로서, 기간계 시스템(150)의 데이터베이스(154)에는 복수 개의 테이블(예를 들어, 테이블 A, 테이블 B, 테이블 C…등)이 저장될 수 있다. 또한, 각 테이블에는 서로 다른 종류의 데이터가 포함될 수 있다. 일 예시로서, 테이블 A에는 환자 데이터가 포함될 수 있으며, 테이블 B에는 병의 증상에 관한 데이터가 포함될 수 있으며, 테이블 C에는 병의 진단 및 치료에 관한 데이터가 포함될 수 있다. 본 실시예들에 있어서, 캐시 우선순위는 예를 들어, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 데이터 서비스 엔진(106)의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리의 수행 시간, 상기 쿼리의 실행 속도, 쿼리의 호출 횟수 또는 주기, 및 데이터 서비스 엔진(106)이 데이터베이스(154)에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정될 수 있다.
일 예시로서, 데이터 서비스 엔진(106)은 통계적으로 가장 높은 접근 확률을 가지는 테이블의 데이터를 최대한 많이 캐시함으로써, 실제 룰이 수행될 때 기간계 시스템(150)의 데이터베이스(154) 대신 데이터 서비스 엔진(106)을 통해 필요한 데이터를 룰 엔진(102)에 제공하도록 할 수 있다. 이에 따라, 본 발명의 실시예들에 따르면, 룰의 수행 시간을 최소화하고 단위 시간당 룰 엔진(102)의 처리 용량을 극대화시킬 수 있다. 여기서, 테이블별 접근 확률은 아래와 같이 전체 테이블의 접근 쿼리 요청 횟수에 대한 해당 테이블의 접근 쿼리 요청 횟수에 대한 비율로 계산될 수 있다.
테이블별 접근 확률 = 해당 테이블의 접근 쿼리 요청 횟수/전체 테이블의 접근 쿼리 요청 횟수
또한, 데이터 서비스 엔진(106)은 패치 및 캐시하고자 하는 테이블의 데이터 조작 빈도에 따라 캐시 우선순위를 결정할 수 있다. 테이블의 DML(Data Manipulation Language) 속성이란 테이블의 데이터를 조작, 즉 선택(select), 삽입(insert), 업데이트(update), 삭제(delete)하는 등의 행위를 하는 언어 속성을 의미한다. 만약, 패치 및 캐시 대상이 되는 테이블에서 업데이트, 삽입 등이 빈번하게 발생되는 경우, 데이터 서비스 엔진(106)의 데이터 저장소 또한 업데이트, 삽입 등이 그만큼 빈번하게 발생되어야 한다. 이는 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터와 데이터 서비스 엔진(106)의 데이터 저장소에 캐시된 데이터가 서로 동기화되어야 하기 때문이다. 이 경우, 동기화 시간 동안 데이터 서비스 엔진(106)에서 해당 데이터를 룰 엔진(102)에 제공할 수 없는 문제가 발생될 수 있으며, 동기화에 소요되는 비용이 실제 효용을 넘는 경우가 발생될 수 있다. 따라서, 데이터 서비스 엔진(106)은 데이터 조작 빈도가 상대적으로 빈번한 테이블의 캐시 우선순위를 후순위로 미룰 수 있다.
또한, 데이터 서비스 엔진(106)은 각 테이블별 데이터의 크기와 데이터 서비스 엔진(106)의 데이터 저장소의 크기(또는 저장 용량)를 고려하여 캐시 우선순위를 결정할 수 있다. 데이터 서비스 엔진(106)의 데이터 저장소의 크기는 한정되어 있으며, 각 테이블의 데이터 크기는 테이블의 종류에 따라 다를 수 있다. 따라서, 데이터 서비스 엔진(106)은 캐시하는 시점에서의 데이터 저장소의 크기 및 테이블별 데이터 크기를 분석하여 캐시 우선순위를 결정할 수 있다. 예를 들어, 데이터 서비스 엔진(106)은 데이터 크기가 상대적으로 큰 테이블의 캐시 우선순위를 후순위로 미룰 수 있다.
또한, 데이터 서비스 엔진(106)은 룰의 수행 횟수 및 상기 룰의 수행과 관련된 쿼리의 수행 시간을 고려하여 캐시 우선순위를 결정할 수 있다. 예를 들어, 데이터 서비스 엔진(106)은 룰의 수행 횟수 Ⅹ 상기 룰의 수행과 관련된 쿼리의 수행 시간이 클수록 상기 룰과 관련된 데이터가 속한 테이블의 캐시 우선순위를 선순위로 결정(즉, 데이터 서비스 엔진(106)에 우선적으로 캐시하도록 결정)할 수 있다. 상기 쿼리의 수행 시간에는 룰 엔진(102)과 기간계 시스템(150)과의 I/O 시간, 기간계 시스템(150) 내의 DBMS(Data Base Management System) 자체의 수행 시간 등이 포함될 수 있다.
또한, 데이터 서비스 엔진(106)은 쿼리의 실행 속도, 상기 쿼리의 호출 횟수 또는 주기, 데이터 서비스 엔진(106)이 데이터베이스(154)에 연결되는 동안의 대역폭(bandwidth) 사용량 등을 고려하여 캐시 우선순위를 결정할 수 있다. 예를 들어, 데이터 서비스 엔진(106)은 쿼리의 실행 속도가 느릴수록, 상기 쿼리의 호출 횟수가 많을수록, 상기 쿼리의 호출 주기가 짧을수록, 데이터 서비스 엔진(106)이 데이터베이스(154)에 연결되는 동안의 대역폭 사용량이 적을수록 해당 룰과 관련된 데이터가 속한 테이블의 캐시 우선순위를 선순위로 결정할 수 있다.
이와 같이, 데이터 서비스 엔진(106)은 룰 엔진(102)에서 수행되는 룰을 분석하여 상기 룰의 수행에 소요되는 비용을 계산하고, 상기 비용이 최소화되도록 데이터베이스(154)에 저장된 데이터 중 일부를 캐시할 수 있다. 데이터 서비스 엔진(106)은 예를 들어, 상술한 각 룰별 수행 빈도, 해당 룰과 관련된 데이터가 속한 테이블의 접근 빈도, 상기 테이블의 데이터 조작 빈도 등을 고려하여 상기 비용을 계산할 수 있다.
이때, 캐시 우선순위는 데이터를 캐시하는 데 소요되는 시간 대비 처리 용량이 극대화되는 방향으로 최적화될 수 있다. 즉, 캐시 우선순위가 높은 테이블을 데이터 서비스 엔진(106)에 우선적으로 캐시하는 경우, 상기 룰의 수행에 소요되는 비용이 절감될 수 있다. 다만, 앞에서 설명한 캐시 우선순위를 결정하는 데 사용되는 각종 항목들은 실시예들에 불과하며, 캐시 우선순위를 결정하는 데 사용되는 항목들이 위에서 설명한 예시에 한정되는 것은 아니다. 데이터 서비스 엔진(106)은 예를 들어, 네트워크 자원 사용량, 데이터베이스(154)의 데이터 처리 속도 등을 고려하여 캐시 우선순위를 결정할 수도 있다. 또한, 데이터 서비스 엔진(106)은 상기 항목들 중 적어도 일부를 조합하여 캐시 우선순위를 결정할 수 있으며, 이때 상기 항목들 중 일부에 가중치를 부여할 수도 있다.
또한, 캐시하고자 하는 데이터가 복수 개 존재하는 경우, 데이터 서비스 엔진(106)은 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시할 수 있다. 일 예시로서, 캐시하고자 하는 데이터가 a, b, c 이며 a, b, c 가 a = 0<x<50, b = 40<x<70, c = 20<x<100의 데이터 영역 범위를 각각 갖는 경우, 데이터 서비스 엔진(106)은 복수의 상기 데이터를 모두 포괄하는 범위의 데이터 영역, 즉 0<x<100 범위의 데이터 영역을 한번에 패치(fetch) 및 캐시함으로써, 캐시되는 데이터 영역을 최적화할 수 있다. 이러한 최적화 기법은 최근 들어 빈번히 사용되는 데이터의 경우 적용될 수 있다. 만약, 상기 최적화된 데이터 영역의 범위를 벗어난 데이터에 대한 요청이 필요한 경우, 룰 엔진(102)은 기간계 시스템(150)의 데이터베이스(154)에 직접 접근하여 상기 범위를 벗어난 데이터를 수집할 수 있다. 이렇게 수집된 데이터는 다시 데이터 영역의 범위를 재산정하는 데 사용될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 서비스 엔진(106)의 상세 구성을 나타낸 블록도이다. 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 데이터 서비스 엔진(106)은 데이터 서비스 매니저(202) 및 데이터 저장소(204)를 포함한다.
데이터 서비스 매니저(202)는 데이터 저장소(204)에 캐시되는 데이터를 결정한다. 데이터 서비스 매니저(202)는 룰의 수행에 소요되는 비용이 최소화되도록 데이터베이스(154)에 저장된 데이터 중 일부를 데이터 저장소(204)에 캐시하되, 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하여 상기 우선순위에 따라 데이터를 데이터 저장소(204)에 캐시할 수 있다.
상술한 바와 같이, 데이터 서비스 엔진(106)은 각 룰별 수행 빈도를 고려하여 데이터 서비스 엔진(106)에 캐시되는 데이터를 결정할 수 있다. 구체적으로, 데이터 서비스 엔진(106)은 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 감소시킬 수 있다.
또한, 데이터 서비스 매니저(202)는 데이터가 속한 테이블별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 데이터 저장소(204)에 캐시되는 데이터를 결정할 수 있다. 캐시 우선순위는 예를 들어, 각 테이블별 접근 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 데이터 서비스 엔진(106)의 데이터 저장소(204) 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리의 수행 시간, 상기 쿼리의 실행 속도, 쿼리의 호출 횟수 또는 주기, 및 데이터 서비스 엔진(106)이 데이터베이스(154)에 연결되는 동안의 대역폭 사용량 중 하나 이상을 고려하여 결정될 수 있다.
데이터 저장소(204)는 데이터 서비스 매니저(202)에 의해 선별된 데이터가 캐시되는 저장소이다. 데이터 저장소(204)는 저장 용량이 크지는 않으나 읽기/쓰기 속도가 빠르고 랜덤 액세스에 유리한 저장소일 수 있으며, 데이터베이스 관리 시스템(DBMS, 미도시)에 의해 관리될 수 있다. 데이터 저장소(204)에 저장된 데이터는 룰 엔진(102)의 의사 결정 수행시 입력값 또는 참조값으로서 활용될 수 있다.
도 3은 일반적인 룰 엔진(102)에서의 복수 개의 룰 수행 과정을 나타낸 흐름도이다.
도 3을 참조하면, 룰 엔진(102)에 입력 데이터가 입력되는 경우 룰 A가 수행된다. 룰 A의 완료시, 룰 A의 출력 요소와 동일한 요소를 가진 룰 B가 수행될 수 있다. 마찬가지로 룰 B의 완료시, 룰 B의 출력 요소와 동일한 요소를 가진 룰 C 및 룰 D가 수행될 수 있다. 이와 같이, 복수 개의 룰은 입력 데이터의 입력에 따라 순차적으로 수행될 수 있으며, 룰 B는 룰 A의 연관 룰, 룰 C 및 룰 D는 룰 B의 연관 룰로 지칭될 수 있다.
도 4는 일반적인 룰 수행 과정에서 도 3의 룰 A가 수행되는 데 소요되는 시간을 나타낸 블록도이며, 도 5는 일반적인 룰 수행 과정에서 도 3의 룰 B가 수행되는 데 소요되는 시간을 나타낸 블록도이다. 여기서, 룰 A는 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 입력값 또는 참조값으로 활용할 필요가 없는 룰이며, 룰 B는 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 입력값 또는 참조값으로 활용하여야 하는 룰이라 가정한다.
도 4를 참조하면, 룰 A는 조건문(When statements)(예를 들어, 0<x<100인 경우)과 출력문(Then statements)(예를 들어, y = 50 출력)으로 이루어질 수 있으며, 조건문 및 출력문의 수행 시간은 각각 t1, t2 가 될 수 있다. 이에 따라, 룰 A의 수행 시간은 t1 + t2 가 될 수 있다.
도 5를 참조하면, 룰 B는 룰 A와 마찬가지로 조건문과 출력문으로 이루어질 수 있다. 이때, 룰 B는 조건문 및 출력문의 수행시 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 입력값 또는 참조값으로 활용하게 되므로, 상기 데이터베이스(154)의 접속 및 데이터 수집에 따른 시간이 추가적으로 소요될 수 있다. 따라서, 룰 B의 수행 시간은 t3 + t4 가 될 수 있으며, 이는 룰 A의 수행 시간(t1 + t2)보다 크다.
이와 같이, 룰 엔진(102)에서의 의사 결정 과정 중 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터를 필요로 하는 경우, 일반적인 룰 수행 과정에서는 룰 엔진(102)에서 기간계 서버(152)를 통해 데이터베이스(154)에 접근할 수 밖에 없으며, 이 과정에서 과도한 트랜잭션이 발생할 수 있다.
이에 따라, 본 발명의 실시예들에서는 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 일부를 사전에 데이터 서비스 엔진(106)에 캐시한 후 룰 엔진(102)에서의 의사 결정 과정에서 데이터 서비스 엔진(106)에 캐시된 데이터를 이용하도록 함으로써, 기간계 시스템(150)의 과도한 트랜잭션 발생을 방지하고 기간계 시스템(150)의 부하를 감소시켜 룰 수행시 발생될 수 있는 병목 현상을 방지할 수 있다.
도 6은 본 발명의 일 실시예에 따른 룰 수행 과정에서 각 룰별 데이터 서비스 엔진(106)이 사용되는 확률을 나타낸 예시도이다. 상술한 바와 같이, 데이터 서비스 엔진(106)은 룰 수행 과정에서 데이터 서비스 엔진(106)이 사용되는 확률이 높은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 증가시키고 룰 수행 과정에서 데이터 서비스 엔진(106)이 사용되는 확률이 낮은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 감소시킬 수 있다.
도 6을 참조하면, 룰 1 내지 룰 9 수행시 데이터 서비스 엔진(106)이 사용되는 확률은 각각 0.2, 0, 0, 0.15, 0.3, 0, 0.02, 0, 0.13 이며, 룰 1, 룰 4, 룰 5 및 룰 9 수행시 데이터 서비스 엔진(106)이 사용되는 확률이 상대적으로 높은 것을 확인할 수 있다. 이에 따라, 룰 1, 룰 4, 룰 5 및 룰 9와 관련된 데이터가 데이터 서비스 엔진(106)에 캐시되는 경우, 룰의 수행에 소요되는 비용이 상대적으로 최소화될 수 있다. 따라서, 본 발명의 실시예들은 룰 수행시 데이터 서비스 엔진(106)이 사용되는 확률이 높은 룰일수록 해당 룰과 관련된 데이터가 데이터 서비스 엔진(106)에 캐시될 확률을 높이도록 구성될 수 있다.
도 7은 데이터 서비스 엔진(106)에서 룰의 수행에 소요되는 비용이 최소화되도록 데이터 중 일부를 캐시하는 과정을 설명하기 위한 예시도이며, 도 8은 데이터 서비스 엔진(106)에서 테이블별 캐시 우선순위에 따라 캐시된 데이터를 업데이트하는 과정을 설명하기 위한 예시도이다. 데이터 서비스 엔진(106)은 한정된 자원을 효율적으로 사용하기 위해 자주 사용되는 데이터에 가중치를 두어 데이터 저장소(204)에 캐시되는 데이터를 결정하고, 상기 데이터를 데이터 저장소(204)에 캐시한 후 이를 통해 의사 결정을 수행할 수 있다.
도 7을 참조하면, 데이터 서비스 엔진(106)은 룰 엔진(102)에 입력되는 입력 데이터를 분석함으로써 어떤 룰이 수행될지 여부를 파악할 수 있다. 예를 들어, 입력 데이터 a, b가 룰 엔진(102)에 입력되는 경우, 룰 A 및 룰 B가 수행될 수 있다. 즉, 입력 데이터가 룰의 조건문에 대응되는 경우 해당 룰이 수행될 수 있다.
이때, 입력 데이터 a, b는 리스트 형태의 조합으로 룰 엔진(102)에 입력될 수 있다. 예를 들어, 입력 데이터 a, b는 [{a1, b1}, {a2, b2}, {a3, b3},…, {a1000, b1000}]의 형식으로 룰 엔진(102)에 입력될 수 있다. 그 결과 입력 데이터가 “WHEN” 조건에 해당하는 경우, 쿼리 1 및 쿼리 2는 각각 1000번씩 실행될 수 있다. 데이터 서비스 엔진(106)은 상기 룰을 분석하고, 분석 결과 쿼리 1 및 쿼리 2을 자주 사용되는 쿼리로 판단할 수 있다. 따라서, 데이터 서비스 엔진(106)은 쿼리 1 및 쿼리 2와 관련된 데이터를 데이터 서비스 엔진(106)에 우선적으로 캐시함으로써, 룰의 수행에 소요되는 비용을 최소화시킬 수 있다.
또한, 도 8을 참조하면, 자주 사용되는 데이터는 시간의 흐름에 따라 변할 수 있으며, 상술한 캐시 우선순위 또한 시간의 흐름에 따라 달라질 수 있다. 데이터 서비스 매니저(202)는 설정된 시간마다(또는 주기적으로) 테이블별 캐시 우선순위를 재산정하고, 재산정된 캐시 우선순위에 따라 데이터 저장소(204)에 캐시된 데이터를 업데이트할 수 있다. 예를 들어, 현재 테이블 저장소(204)에 캐시된 테이블이 테이블 A, 테이블 B 및 테이블 C인 경우, 데이터 서비스 매니저(202)는 재산정된 캐시 우선순위에 따라 테이블 저장소(204)에 캐시된 테이블 A를 삭제하고 테이블 D 및 테이블 E를 테이블 저장소(204)에 새롭게 캐시할 수 있다.
도 9는 데이터 서비스 엔진(106)에서 캐시되는 데이터를 최적화하는 과정을 설명하기 위한 예시도이다. 상술한 바와 같이, 캐시하고자 하는 데이터가 복수 개 존재하는 경우, 데이터 서비스 엔진(106)은 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시할 수 있다. 일 예시로서, 캐시하고자 하는 데이터가 a, b, c 이며 a, b, c 가 a = 0<x<50, b = 40<x<70, c = 20<x<100의 데이터 영역 범위를 각각 갖는 경우, 데이터 서비스 엔진(106)은 복수의 상기 데이터를 모두 포괄하는 범위의 데이터 영역, 즉 0<x<100 범위의 데이터 영역을 한번에 패치(fetch) 및 캐시함으로써, 캐시되는 데이터 영역을 최적화할 수 있다. 이러한 최적화 기법은 최근 들어 빈번히 사용되는 데이터들(예를 들어, 최근 한달 동안 설정된 횟수 이상 사용되는 데이터들)에 대해 적용될 수 있다. 만약, 상기 최적화된 데이터 영역의 범위를 벗어난 데이터에 대한 요청이 필요한 경우, 룰 엔진(102)은 기간계 시스템(150)의 데이터베이스(154)에 직접 접근하여 상기 범위를 벗어난 데이터를 수집할 수 있다. 이렇게 수집된 데이터는 다시 데이터 영역의 범위를 재산정하는 데 사용될 수 있다.
도 10은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 룰 엔진(102)일 수 있다. 또한, 컴퓨팅 장치(12)는 데이터 서비스 엔진(106)일 수 있다. 또한, 컴퓨팅 장치(12)는 기간계 서버(152)일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(102)와 연결될 수도 있다.
도 11은 본 발명의 일 실시예에 따른 데이터 서비스 엔진(106)에서의 데이터 캐시 과정을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
먼저, 데이터 서비스 엔진(106)은 룰을 분석하고, 각 룰별 특징을 파악한다(S1102). 데이터 서비스 엔진(106)은 설정된 시간마다(또는 주기적으로) 룰을 분석할 수 있으며, 상기 분석 시간 또는 주기는 룰의 실행 횟수, 주기 등에 따라 달라질 수 있다. 데이터 서비스 엔진(106)은 예를 들어, 룰의 수행과 관련된 쿼리, 입력 데이터 등을 분석함으로써 각 룰별 특징을 파악할 수 있다. 여기서, 각 룰별 특징이란 해당 룰이 얼마나 자주 수행되는지, 해당 룰의 수행에 얼마나 많은 시간이 소요되는지, 해당 룰 수행시 기간계 시스템(150)과의 I/O가 얼마나 발생되는지 등을 모두 포함하는 넓은 의미로 사용된다. 일 예시로서, 데이터 서비스 엔진(106)은 룰을 분석하여 각 룰별 수행 빈도를 파악할 수 있다.
다음으로, 데이터 서비스 엔진(106)은 캐시하고자 하는 데이터 영역를 결정한다(S1104). 데이터 서비스 엔진(106)의 데이터 저장소(204)의 크기는 한정되어 있으므로, 데이터 서비스 엔진(106)은 상기 분석 결과에 따라 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 일부만을 캐시하고자 하는 데이터로 결정할 수 있다. 일 예시로서, 데이터 서비스 엔진(106)은 상기 수행 빈도가 설정된 값 이상인 룰과 관련된 데이터를 데이터 서비스 엔진(106)에 캐시할 데이터로 결정할 수 있다. 이때, 캐시하고자 하는 데이터가 복수 개 존재하는 경우, 데이터 서비스 엔진(106)은 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시하고자 하는 데이터 영역으로 결정할 수 있다.
다음으로, 데이터 서비스 엔진(106)은 캐시하고자 하는 데이터 영역(또는 데이터) 각각을 상기 데이터 영역이 속한 테이블별로 캐시 우선순위를 결정한다(S1106). 여기서, 캐시 우선순위는 예를 들어, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 데이터 서비스 엔진(106)의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리의 수행 시간, 상기 쿼리의 실행 속도, 쿼리의 호출 횟수 또는 주기, 및 데이터 서비스 엔진(106)이 데이터베이스(154)에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정될 수 있다.
다음으로, 데이터 서비스 엔진(106)은 상기 캐시 우선순위에 따라 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터 중 일부를 패치(fetch)하여 캐시한다(S1108). 상술한 바와 같이, 데이터 서비스 엔진(106)은 기간계 시스템(150)의 데이터베이스(154)와 직접 연결되므로, 상기 데이터베이스(154)에 접근하여 필요한 데이터를 패치(fetch)할 수 있다. 또한, 데이터 서비스 엔진(106)은 데이터를 패치 및 캐시한 이후 다시 S1102 단계 내지 S1106 단계를 반복 수행함으로써 데이터 서비스 엔진(106)에 캐시된 데이터를 지속적으로 업데이트할 수 있다.
마지막으로, 데이터 서비스 엔진(106)은 룰 엔진(102)으로부터의 룰 호출을 대기한다(S1110). 룰 엔진(102)에서의 룰 호출에 따른 룰 처리 과정은 도 12를 참조하여 구체적으로 설명하기로 한다.
도 12는 본 발명의 일 실시예에 따른 룰 처리 과정을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
먼저, 룰 엔진(102)에 입력 데이터가 입력된다(S1202).
다음으로, 룰 엔진(102)은 상기 입력 데이터에 따라 룰을 실행한다 (S1204).
다음으로, 룰 엔진(102)은 룰 실행에 따른 의사 결정 과정에서 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터가 필요한지의 여부를 판단한다(S1206). 만약, 데이터베이스(154)에 저장된 데이터가 입력값 또는 참조값으로 사용되어야 하는 경우, 룰 엔진(102)은 상기 데이터가 필요한 것으로 판단할 수 있다.
만약, S1206 단계에서 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터가 필요하지 않은 것으로 판단되는 경우, 룰 엔진(102)은 해당 룰에 따라 바로 의사 결정을 수행할 수 있다(S1214).
만약, S1206 단계에서 기간계 시스템(150)의 데이터베이스(154)에 저장된 데이터가 필요한 것으로 판단되는 경우, 룰 엔진(102)은 상기 데이터가 데이터 서비스 엔진(106)에 캐시되어 있는지의 여부를 판단한다(S1208).
만약, S1208 단계에서 상기 데이터가 데이터 서비스 엔진(106)에 캐시되어 있지 않은 것으로 판단되는 경우, 룰 엔진(102)은 기간계 서버(152)를 통해 기간계 시스템(150)의 데이터베이스(154)를 호출함으로써 상기 데이터를 불러올 수 있다(S1210). 이 경우, 룰 엔진(102)은 기간계 서버(152)를 통해 기간계 시스템(150)의 데이터베이스(154)에 접근하고, 상기 데이터베이스(154)에서 불러온 데이터를 이용하여 의사 결정을 수행할 수 있다(S1214).
만약, S1208 단계에서 상기 데이터가 데이터 서비스 엔진(106)에 캐시되어 있는 것으로 판단되는 경우, 룰 엔진(102)은 데이터 서비스 엔진(106)을 직접 호출함으로써 상기 데이터를 불러올 수 있다(S1212). 이 경우, 룰 엔진(102)은 기간계 서버(152)를 통해 데이터베이스(154)에 접근하는 대신 데이터 서비스 엔진(106)에 캐시된 데이터를 이용하여 의사 결정을 수행할 수 있다(S1214).
또한, 룰 엔진(102)은 S1214 단계 이후 상기 룰과 관련된 연관 룰을 실행할 수 있다(S1216). 여기서, 연관 룰은 상기 룰의 출력 데이터를 입력 데이터로 사용하는 룰을 의미한다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100 : 룰 관리 시스템
102 : 룰 엔진
104 : 룰 저장소
106 : 데이터 서비스 엔진
150 : 기간계 시스템
152 : 기간계 서버
154 : 데이터베이스
202 : 데이터 서비스 매니저
204 : 데이터 저장소

Claims (14)

  1. 기 정의된 하나 이상의 룰(rule)을 기반으로 의사 결정(decision-making)을 수행하는 룰 엔진(rule engine); 및
    기간계 시스템(legacy system)의 데이터베이스와 연결되며, 상기 룰을 분석하여 상기 데이터베이스에 저장된 데이터 중 적어도 일부를 캐시(cache)하는 데이터 서비스 엔진을 포함하며,
    상기 룰 엔진은, 상기 데이터 서비스 엔진에 캐시된 데이터를 이용하여 상기 의사 결정을 수행하는, 룰 관리 시스템.
  2. 청구항 1에 있어서,
    상기 데이터 서비스 엔진은, 상기 룰의 수행에 소요되는 비용(cost)이 최소화되도록 상기 데이터 중 적어도 일부를 캐시하는, 룰 관리 시스템.
  3. 청구항 2에 있어서,
    상기 데이터 서비스 엔진은, 각 룰별 수행 빈도를 고려하여 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정하는, 룰 관리 시스템.
  4. 청구항 3에 있어서,
    상기 데이터 서비스 엔진은, 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 감소시키는, 룰 관리 시스템.
  5. 청구항 2에 있어서,
    상기 데이터 서비스 엔진은, 상기 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정하는, 룰 관리 시스템.
  6. 청구항 5에 있어서,
    상기 캐시 우선순위는, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 상기 데이터 서비스 엔진의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리(query)의 수행 시간, 상기 쿼리의 실행 속도, 상기 쿼리의 호출 횟수 또는 주기, 및 상기 데이터 서비스 엔진이 상기 데이터베이스에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정되는, 룰 관리 시스템.
  7. 청구항 2에 있어서,
    상기 데이터 서비스 엔진은, 캐시하고자 하는 데이터가 복수 개 존재하는 경우 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시하는, 룰 관리 시스템.
  8. 룰 엔진(rule engine)에서, 기 정의된 하나 이상의 룰(rule)을 기반으로 의사 결정(decision-making)을 수행하는 단계;
    기간계 시스템(legacy system)의 데이터베이스와 연결되는 데이터 서비스 엔진에서, 상기 룰을 분석하여 상기 데이터베이스에 저장된 데이터 중 적어도 일부를 캐시(cache)하는 단계를 포함하며,
    상기 의사 결정을 수행하는 단계는, 상기 데이터 서비스 엔진에 캐시된 데이터를 이용하여 상기 의사 결정을 수행하는, 룰 관리 방법.
  9. 청구항 8에 있어서,
    상기 캐시하는 단계는, 상기 룰의 수행에 소요되는 비용(cost)이 최소화되도록 상기 데이터 중 적어도 일부를 캐시하는, 룰 관리 방법.
  10. 청구항 9에 있어서,
    상기 캐시하는 단계는, 각 룰별 수행 빈도를 고려하여 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정하는, 룰 관리 방법.
  11. 청구항 10에 있어서,
    상기 캐시하는 단계는, 상기 수행 빈도가 높을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 증가시키고 상기 수행 빈도가 낮을수록 해당 룰과 관련된 데이터가 상기 데이터 서비스 엔진에 캐시될 확률을 감소시키는, 룰 관리 방법.
  12. 청구항 9에 있어서,
    상기 캐시하는 단계는, 상기 데이터가 속한 테이블(table)별로 캐시 우선순위를 결정하고, 상기 캐시 우선순위에 따라 상기 데이터 서비스 엔진에 캐시되는 데이터를 결정하는, 룰 관리 방법.
  13. 청구항 12에 있어서,
    상기 캐시 우선순위는, 각 테이블별 접근(access) 빈도 또는 확률, 각 테이블별 데이터 조작 빈도, 각 테이블별 데이터 크기, 상기 데이터 서비스 엔진의 데이터 저장소 크기, 각 룰의 수행 횟수, 상기 룰의 수행과 관련된 쿼리(query)의 수행 시간, 상기 쿼리의 실행 속도, 상기 쿼리의 호출 횟수 또는 주기, 및 상기 데이터 서비스 엔진이 상기 데이터베이스에 연결되는 동안의 대역폭(bandwidth) 사용량 중 하나 이상을 고려하여 결정되는, 룰 관리 방법.
  14. 청구항 9에 있어서,
    상기 캐시하는 단계는, 캐시하고자 하는 데이터가 복수 개 존재하는 경우 복수의 상기 데이터를 모두 포괄하는 범위를 갖는 데이터 영역을 캐시하는, 룰 관리 방법.
KR1020160060374A 2016-05-17 2016-05-17 룰 관리 시스템 및 방법 KR20170129540A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160060374A KR20170129540A (ko) 2016-05-17 2016-05-17 룰 관리 시스템 및 방법
CN201710339186.7A CN107392407A (zh) 2016-05-17 2017-05-15 规则管理系统及方法
US15/597,710 US20170337197A1 (en) 2016-05-17 2017-05-17 Rule management system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160060374A KR20170129540A (ko) 2016-05-17 2016-05-17 룰 관리 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20170129540A true KR20170129540A (ko) 2017-11-27

Family

ID=60330175

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160060374A KR20170129540A (ko) 2016-05-17 2016-05-17 룰 관리 시스템 및 방법

Country Status (3)

Country Link
US (1) US20170337197A1 (ko)
KR (1) KR20170129540A (ko)
CN (1) CN107392407A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491450B (zh) * 2018-02-26 2021-09-21 平安普惠企业管理有限公司 数据缓存方法、装置、服务器和存储介质
CN113341757A (zh) * 2021-07-02 2021-09-03 佛山市淇特科技有限公司 智能家居设备联动方法、装置、设备和存储介质
CN117170590B (zh) * 2023-11-03 2024-01-26 沈阳卓志创芯科技有限公司 一种基于云计算的计算机数据存储方法及系统

Also Published As

Publication number Publication date
CN107392407A (zh) 2017-11-24
US20170337197A1 (en) 2017-11-23

Similar Documents

Publication Publication Date Title
US20230016877A1 (en) Methods and systems for making effective use of system resources
US7685367B2 (en) Multi-cache cooperation for response output caching
US6820085B2 (en) Web system having clustered application servers and clustered databases
US7774354B2 (en) Method and system for response time optimization for task list retrieval from databases
JP4675174B2 (ja) データベース処理方法、システム及びプログラム
US20170329835A1 (en) Context-aware workload dispatching
US20120158795A1 (en) Entity triggers for materialized view maintenance
CN109344157A (zh) 读写分离方法、装置、计算机设备及存储介质
US20090132560A1 (en) Hierarchical Grouping Columns
US9600299B2 (en) Application object framework
US11461327B1 (en) Query plan caching for networked database systems
US5884311A (en) Method and system for dynamically configuring a relational database
US8965879B2 (en) Unique join data caching method
KR20170129540A (ko) 룰 관리 시스템 및 방법
CN110134706A (zh) Sql语句自动优化方法、装置、计算机设备以及存储介质
US20120143866A1 (en) Client Performance Optimization by Delay-Loading Application Files with Cache
US8135689B2 (en) Performance optimized retrieve transformation nodes
US10466987B2 (en) Enhancing program execution using optimization-driven inlining
US20230153300A1 (en) Building cross table index in relational database
KR102233944B1 (ko) 데이터베이스 관리를 위한 컴퓨터 프로그램
CN110019113B (zh) 一种数据库的业务处理方法及数据库服务器
US11055362B2 (en) Document distribution in a graph database
KR102449107B1 (ko) 게시판 서비스 제공 장치 및 방법
KR102449105B1 (ko) 게시판 서비스 제공 장치 및 방법
JP2002157386A (ja) ワークフロー管理方法および装置並びにその処理プログラム並びにその処理プログラムを格納した記録媒体