[go: up one dir, main page]

KR101690288B1 - Method and system of storing and retrieving data - Google Patents

Method and system of storing and retrieving data Download PDF

Info

Publication number
KR101690288B1
KR101690288B1 KR1020157007498A KR20157007498A KR101690288B1 KR 101690288 B1 KR101690288 B1 KR 101690288B1 KR 1020157007498 A KR1020157007498 A KR 1020157007498A KR 20157007498 A KR20157007498 A KR 20157007498A KR 101690288 B1 KR101690288 B1 KR 101690288B1
Authority
KR
South Korea
Prior art keywords
data
cache
storage system
database
response
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020157007498A
Other languages
Korean (ko)
Other versions
KR20150075407A (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
Priority claimed from EP12368027.4A external-priority patent/EP2713284B1/en
Priority claimed from US13/628,517 external-priority patent/US9037801B2/en
Application filed by 아마데우스 에스.에이.에스. filed Critical 아마데우스 에스.에이.에스.
Publication of KR20150075407A publication Critical patent/KR20150075407A/en
Application granted granted Critical
Publication of KR101690288B1 publication Critical patent/KR101690288B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G06F17/3048
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • G06F17/30377
    • G06F17/30581

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 소프트웨어 애플리케이션에 의해 데이터를 저장하는 방법 및 시스템에 관한 것이다. 하나 이상의 데이터베이스 시스템과 적어도 하나의 캐시 노드를 포함하는 데이터 저장 시스템에서 소프트웨어 애플리케이션은 제1 전용 인터페이스 상의 하나 이상의 데이터베이스 시스템과, 제2 전용 인터페이스 상의 적어도 하나의 캐시 노드와 독립적으로 인터페이싱한다. 본 발명의 방법 및 시스템은 소프트웨어 애플리케이션에 의해 데이터 저장 시스템의 각 판독 질문이 만약 이용가능한 경우 질문된 데이터를 리턴하는 복수의 캐시 노드로만 제일 먼저 발행되는 것을 특징으로 한다. 만약 이용가능하지 않은 경우, 소프트웨어 애플리케이션은 하나 이상의 데이터베이스 시스템으로부터 질문된 데이터의 페치를 트리거하는 미검출을 수신한다. 질문된 데이터를 검색하면, 소프트웨어 애플리케이션은 질문된 데이터를 적어도 하나의 캐시 노드에 추가한다. 본 발명의 방법 및 시스템은 또한 소프트웨어 애플리케이션에 의한 하나 이상의 데이터베이스 시스템의 각 기록이 적어도 하나의 캐시 노드에 동시에 수행되는 것을 더 특징으로 한다. 그리하여, 적어도 하나의 캐시 노드의 파퓰레이트는, 적어도 하나의 캐시 노드의 각 미검출된 판독 질문 및 데이터 저장 시스템의 각 기록 질문에 신속히 수행된다. The present invention relates to a method and system for storing data by a software application. In a data storage system that includes one or more database systems and at least one cache node, the software application interfaces with one or more database systems on a first dedicated interface and at least one cache node on a second dedicated interface independently. The method and system of the present invention is characterized in that a software application is issued first to only a plurality of cache nodes that return query data if each read query of the data storage system is available, if available. If not, the software application receives undetected triggering a fetch of the queried data from one or more database systems. Upon retrieval of the queried data, the software application adds the queried data to at least one cache node. The method and system of the present invention is further characterized in that each record of one or more database systems by a software application is concurrently performed on at least one cache node. Thus, the population of at least one cache node is quickly performed for each non-detected read query of each of the at least one cache node and each write query of the data storage system.

Description

데이터를 저장하고 검색하는 방법 및 시스템{METHOD AND SYSTEM OF STORING AND RETRIEVING DATA}[0001] METHOD AND SYSTEM FOR STORING AND RETRIEVING DATA [0002]

본 발명은 일반적으로, 제공하는 전체 상품 및 이용가능성(availability) 수준을 추적하기 위해 제품 및 서비스의 대규모 제공자에 의해 사용되는 유형의 데이터 관리 시스템에 관한 것으로, 보다 상세하게는 적용결과 컨텐츠를 연속적(constantly)으로 데이터 저장매체에 업데이트하는 트랜잭션(transaction)의 완료에 영향을 미치지 않으면서, 지연이 없거나 매우 짧은 지연 내에 응답되어지는 데이터 저장매체의 원격-유저에 의해 발행(issued)되는 높은 레벨의 문의(inquiry)를 허용하는 시스템에 관한 것이다.The present invention generally relates to a data management system of the type used by a large provider of products and services to track the overall merchandise and availability level that it provides, level inquiry issued by a remote user of the data storage medium that is constantly responding to the data storage medium without delay or with a very short delay without affecting the completion of the transaction updating. and to allow for inquiry.

모두 상호 연결된 세계에서, 제품 및 서비스의 모든 대규모 제공자는 이제 제품 및 서비스 제공물의 특성, 명세 및 비용을 보유(hold)하는 대규모 데이터베이스 시스템을 설치하고 있다. 데이터베이스 관리 시스템(database management system: DBMS)의 제어 하에서 운영되는 컨텐츠는 전세계에 걸쳐 있는 많은 온라인 고객이 동시에 액세스가능하게 만들어진다. 이에 따라 온라인 고객이 여러 제품 및 서비스를 부킹(book)하고 구매할 수 있게 하는 특정 온라인 소프트웨어 애플리케이션을 사용하여 데이터베이스에 질문(query)하고 상거래를 완료하는 가능성이 온라인 고객에 제공된다. In an interconnected world, all large providers of products and services are now deploying large-scale database systems that hold the characteristics, specifications and costs of product and service offerings. Content operated under the control of a database management system (DBMS) is made accessible to many online customers worldwide. As a result, online customers are provided with the possibility to query the database and complete the transaction using specific online software applications that enable online customers to book and purchase multiple products and services.

항공 산업에서, 이러한 매우 대규모 데이터베이스의 예로는 항공 회사의 상품 목록(inventory)을 보유하는 데이터베이스이다. 이러한 데이터베이스는 주어진 항공사에 의해 운영되는 항공편(flight)의 편대(fleet) 구성과 함께 실제 좌석 용량, 현재의 예약 상태를 실시간으로 추적하는데 사용된다. In the aviation industry, an example of such a very large database is a database that holds an inventory of airline companies. These databases are used to track real-time seating capacity, current reservation status, as well as fleet configurations for flights operated by a given airline.

보다 정밀하게는, 항공사의 상품 목록은 통상적으로 이용가능한 좌석을 갖는 모든 항공편을 포함하고, 일반적으로 상이한 가격과 부킹 조건이 적용되는 서비스 등급(service class)(예를 들어 제1 등급, 비지니스 또는 이코노미 등급)과 많은 부킹 등급으로 분류된다. 상품 목록 관리의 핵심 기능 중 하나는 상품 목록의 조절이다. 상품 목록의 조절은 예를 들어 판매용 개별 부킹 등급을 개방하고 폐쇄하는 것에 의해 상이한 부킹 등급에서 얼마나 많은 좌석이 이용가능한지를 조절한다. 요금 견적 시스템(Fare Quote system)에 저장된 요금 및 부킹 조건과 함께 각 판매된 좌석에 대한 가격이 결정된다. 대부분의 경우에 상품 목록의 조절은 항공사의 수익 관리 시스템(Revenue Management System)과 인터페이스하며 요구사항(demand)의 변화에 응답하여 제공된 부킹 등급의 영구적인 최적화(permanent optimization)를 지원한다. 유저는 디스플레이 및 그래픽 유저 인터페이스를 구비하는 이용가능성 애플리케이션을 통해 항공사의 상품 목록에 액세스한다. 이 상품 목록은 상이한 부킹 등급에서 이용가능한 좌석이 있는 특정 도시-쌍(city-pair)에 제공된 모든 항공편을 포함한다. More precisely, the merchandise listing of an airline includes all flights with normally available seats, and generally includes a service class (e.g., a first class, business or economy Grade) and many bookkeeping classes. One of the key functions of merchandise inventory management is the control of merchandise listings. Adjustment of the merchandise list controls how many seats are available in different bookkeeping classes, for example by opening and closing individual selling classes for sale. The prices for each sold seat are determined with the fare and booking conditions stored in the Fare Quote system. In most cases the adjustment of the goods list interfaces with the airline's Revenue Management System and supports permanent optimization of the bookkeeping class provided in response to changes in demand. The user accesses the airline's merchandise list via an availability application that has a display and a graphical user interface. This commodity list includes all flights provided to a specific city-pair with seats available at different bookkeeping classes.

항공사 상품 목록 데이터베이스는 통상적으로 항공사에 의해 관리된다. 항공사 상품 목록 데이터베이스는 또한 항공사, 전통적인 여행사 및 모든 종류의 다른 온라인 여행 서비스 제공자를 포함하는 여행 산업의 많은 관련자(actor)에 여행 서비스를 제공하는 회사에 의해 더 설치될 수 있다. 이러한 회사로는 예를 들어 스페인의 마드리드에 본사를 둔 유럽 여행 서비스 제공자인 아마데우스(AMADEUS)가 있다. 일부 상품 목록은 직접 항공사에 의해 운영되고 글로벌 분배 시스템(global distribution system: GDS) 또는 중앙 예약 시스템(central reservation system: CRS)과 인터페이싱된다. The airline inventory database is typically managed by an airline. The airline merchandise listing database can also be further set up by a company that provides travel services to many actors in the travel industry, including airlines, traditional travel agencies, and all kinds of other online travel service providers. These companies include AMADEUS, a European travel service provider headquartered in Madrid, Spain, for example. Some product listings are operated directly by airlines and are interfaced with a global distribution system (GDS) or a central reservation system (CRS).

이런 환경에서, 이 데이터베이스의 이용은 수 년간 크게 증가한 조회(interrogation) 또는 판독 질문 레벨로 특징지어진다. 사실, 데이터베이스가 처리하여야 하는 트랜잭션의 방문 대 부킹 비율(look-to-book ratio)이 매우 높아지고 있다. 그리하여, 여행 서비스 제공자는 이 상황에 대처하는데 필요한 컴퓨터 자원을 마련하여야 한다. 항공사의 경우에 항공 여행자에 좌석을 부킹하고 판매하는 것을 완료한 결과와 동시에 데이터베이스의 업데이트를 진행할 수 있으면서, 점점 더 증가하는 수의 온라인 고객이 데이터베이스에 효과적으로 질문하고도 여전히 신속한 응답을 얻을 수 있다. In this environment, the use of this database is characterized by significantly increased interrogation or read-query levels over the years. In fact, the look-to-book ratio of transactions that the database has to handle is getting very high. Thus, the travel service provider must provide the necessary computer resources to cope with this situation. As an airline, you can update your database at the same time you complete booking and selling your seats to an airline traveler, and an increasing number of online customers can effectively query the database and still get a quick response.

데이터베이스 관리 시스템 개발을 전문으로 하는 미국, 캘리포니아주, 레드우드 쇼어(Redwood Shores)에 본사를 둔 회사인 오라클(Oracle)과 같은 몇몇 전문화된 회사에서 제공하는 대규모 데이터베이스 시스템이 이 데이터베이스를 구현하는데 이용가능하고 주로 사용된다. 그러나 표준 DBMS는 단독으로는 제품 및 서비스의 대규모 서비스 제공자가 수 만 명의 잠재 고객에 동시에 서비스하여야 할 필요가 있는 것에 의해 제기되는 요구조건 레벨에 대처할 수 없다. 이 목적을 달성하기 위해, 데이터베이스는 어쨌든 직접 수신할 수 있었던 무수한 유저 질문으로부터 차단(shielded)되어야 한다. A large database system from several specialized companies, such as Oracle, a company based in Redwood Shores, California, USA, specializing in database management system development, is available to implement this database And is mainly used. However, standard DBMSs alone can not meet the requirement levels raised by the need for large service providers of products and services to serve tens of thousands of potential customers at the same time. To achieve this goal, the database should be shielded from innumerable user questions that could have been received directly anyway.

그리하여, 데이터베이스 컨텐츠를 캐싱(caching)하는 많은 솔루션이 개발되었다. 캐시는, 애플리케이션이 데이터베이스로부터 이전에 페치(fetch)한 데이터를 기본적으로 재사용하는, 애플리케이션 계층(application tier)에 위치된 애플리케이션 캐시일 수 있다. 이것은 데이터베이스 컨텐츠가 평균 시간(mean time)에 업데이트되었을 수 있는 것으로 인해 다른 유저 조회에 응답하여 전달되는 데이터 품질의 문제를 바로 야기한다. 이것은 데이터베이스가 연속적으로 업데이트되어 고품질의 데이터를 요구하는 일부 응용에서 진정 문제될 수 있다. 이것은 예를 들어 데이터의 갱신(freshness)이 좌석을 판매할 가능성과 고객에 제공된 가격에 직접 영향을 미치는 항공사의 상품 목록과 관련된 응용 분야의 경우에 그러하다. Thus, many solutions have been developed for caching database content. The cache may be an application cache located at the application tier, where the application basically reuses data previously fetched from the database. This immediately leads to the problem of data quality delivered in response to other user inquiries as the database content may have been updated at mean time. This can be a real problem in some applications where the database is continuously updated and requires high quality data. This is true, for example, in the case of applications related to the listing of airlines' products, where freshness of data directly affects the likelihood of selling seats and the prices provided to customers.

따라서, 만약 이런 유형의 캐시에 의해 전달되는 데이터 품질이 중요하지 않고 그 밖의 것보다 더 정보 전달용인 것으로 볼 수 있는 것이 아니라면, 이런 유형의 애플리케이션 캐시는 데이터베이스에서 업데이트될 때 이전에 페치된 데이터를 무효화(invalidation)하거나 및/또는 대체(replacement)하여 애플리케이션 캐시와 데이터베이스 컨텐츠를 실제 일치(consistent)시키는 복잡한 메커니즘을 데이터베이스와 캐시 사이에 구현할 것을 요구한다. 종종, 캐시는 데이터베이스와 애플리케이션 사이 경로에 삽입되어 있어 항상 제일 먼저 애플리케이션에 의해 질문을 받는다. 질문된 데이터가 캐시에 존재하지 않는다면, 이 질문된 데이터는 데이터베이스로부터 페치되고 애플리케이션으로 전달되기 전에 캐시로 운반된다. 모든 이들 솔루션은 공통적으로 캐시와 데이터베이스가 타이트하게 결합될 것을 요구하고 서로 인식하고 있을 것을 요구한다. 그 결과, 이들 솔루션은 서비스 제공자가 트래픽 증가에 대처하기 위해 더 많은 컴퓨터 자원을 전개하고 시스템 성능을 유지하면서 더 많은 고객에 서비스하여야 할 때 용이하게 스케일러블(scalable)하지 않다. Thus, if the quality of the data delivered by this type of cache is not important and can not be seen as being more informative than anything else, this type of application cache invalidates previously fetched data when updated in the database it is necessary to implement a complex mechanism between the database and the cache to invalidate and / or replace the application cache and database content in order to make the application cache and database content consistent. Often, the cache is inserted into the path between the database and the application and is always the first to be interrogated by the application. If the queried data does not exist in the cache, the queried data is fetched from the database and carried to the cache before being delivered to the application. All these solutions commonly require that caches and databases be tightly coupled and aware of each other. As a result, these solutions are not readily scalable when service providers must serve more customers while deploying more computer resources and maintaining system performance to cope with increased traffic.

그러나, 다소 우수한 스케일가능성이 캐시와 데이터베이스 사이에 일부 독립성을 제공하는 특정 솔루션이 "System and method for routing database requests to a database and a cache"를 기술하는 미국 특허 6,609,126에 제시되어 있다. 개시된 솔루션에서 데이터베이스와 캐시는 애플리케이션의 제어 하에서만 별개로 구동되는 것에 의해 어쨌든 독립적으로 되어 있다. 그러나, 이 캐시는 판독 질문에 대답하는데에만 사용되는 반면 업데이트는 애플리케이션에 의해 데이터베이스에서만 수행된다. 그리하여, 데이터베이스에 일어난 변화를 캐시에 반영하기 위해 상기 특허 문헌은 데이터베이스에 포함된 복제 성분(replication component)이 캐시를 업데이트하는 것을 기술한다. However, a somewhat better scale possibility is presented in U.S. Patent 6,609,126, which describes a "system and method for routing database requests to a database and a cache", which provides some independence between cache and database. In the disclosed solution, the database and the cache are independent of each other by being run separately under the control of the application. However, this cache is only used to answer the read query, while the update is performed by the application only in the database. Thus, in order to reflect changes occurring in the database to the cache, the patent document describes updating the cache by a replication component included in the database.

상기의 모든 캐시 솔루션은 중요한 추가적인 작업 부하(workload)를 데이터베이스에 제공하지만 캐시와 데이터베이스가 항상 일치한다는 보장이 없고 데이터베이스는 여러 캐시를 인식하여야 한다. 이것은 새로운 캐시를 추가할 때 특정 동작이 데이터베이스에서 수행될 것을 요구하여 스케일가능성이 간단히 달성되지 못한다. 전술된 바와 같이, 미국 특허 6,609,126은 데이터베이스 관리 시스템이 외부 성분을 포함할 것을 요구한다. 이것은 표준 DBMS의 이용과 실제 호환가능하지 않게 한다. All of the above cache solutions provide the database with significant additional workload, but there is no guarantee that the cache and database are always consistent, and the database must recognize multiple caches. This requires that certain operations be performed in the database when adding a new cache, so that the scalability is simply not achieved. As discussed above, U.S. Patent 6,609,126 requires that the database management system include external components. This makes it incompatible with the use of standard DBMSs.

따라서 본 발명의 목적은 적절한 데이터 품질을 유저에게 제공하면서 높은 트래픽과 높은 스케일가능성을 허용하는 데이터베이스를 구비하는 컴퓨터 데이터 시스템을 기술하는 것이다. It is therefore an object of the present invention to describe a computer data system with a database that allows for high traffic and high scalability while providing appropriate data quality to the user.

본 발명의 추가적인 목적, 특징 및 잇점은 첨부된 도면을 참조하여 이하 상세한 설명을 참조하면 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 임의의 추가적인 잇점들이 본 명세서에 포함된 것으로 의도된다. Further objects, features, and advantages of the present invention will become apparent to those skilled in the art with reference to the following detailed description when read in conjunction with the accompanying drawings. Any additional advantages are intended to be included herein.

상기 문제 및 다른 문제는 본 발명의 실시예에 따라 극복되고 다른 잇점이 실현된다.These and other problems are overcome according to an embodiment of the present invention and other advantages are realized.

제1 측면에서 본 발명은, 소프트웨어 애플리케이션, 하나 이상의 데이터베이스 시스템 및 복수의 캐시 노드를 포함하는 데이터 저장 시스템에 데이터를 저장하고 상기 데이터 저장 시스템으로부터 데이터를 검색하는 방법으로서, 상기 소프트웨어 애플리케이션은 데이터의 적어도 하나의 판독(reading) 또는 데이터의 하나의 기록(writing)을 요구하는 유저 요청을 수신하도록 구성되고, 상기 소프트웨어 애플리케이션은 상기 유저 요청을 처리하기 위해 상기 데이터 저장 시스템에 판독 질문(reading query) 또는 기록 질문(writing query)을 송신하도록 더 구성되고, 상기 방법은 상기 소프트웨어 애플리케이션이 상기 하나 이상의 데이터베이스 시스템과 상기 복수의 캐시 노드와 독립적으로 인터페이싱하고, 상기 방법은 적어도 하나의 데이터 프로세서에서 상기 소프트웨어 애플리케이션에 의해 수행되는 다음의 단계, 즉 데이터의 적어도 하나의 판독을 요구하는 유저 요청을 수신할 때, 상기 소프트웨어 애플리케이션은 판독 질문만을 상기 복수의 캐시 노드에 송신하는 단계를 포함하는 것을 특징으로 하는 방법을 제공한다. 바람직하게는, 상기 소프트웨어 애플리케이션이 상기 판독 질문에 응답하여 적어도 하나의 캐시 노드로부터 질문된 데이터(즉, 검색된 데이터)를 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리한다. 바람직하게는, 상기 소프트웨어 애플리케이션이 상기 판독 질문에 응답하여 모든 캐시 노드로부터 (데이터가 캐시 노드에서 발견되지 않았다는 것을 의미하는) 미검출(miss)을 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 하나 이상의 데이터베이스 시스템을 페치하고; 상기 하나 이상의 데이터베이스 시스템으로부터 상기 질문된 데이터를 검색할 때, 질문된 데이터가 데이터베이스 시스템에 존재하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리하고, 상기 적어도 하나의 캐시 노드에 상기 질문된 데이터를 추가하는 명령과 상기 질문된 데이터를 적어도 하나의 캐시 노드에 송신한다. In a first aspect, the present invention provides a method for storing data in a data storage system including a software application, one or more database systems and a plurality of cache nodes and retrieving data from the data storage system, Wherein the software application is configured to receive a user request that requests one reading or one write of data and wherein the software application is configured to read a read query or a write to the data storage system to process the user request, The method further comprising: interfacing the software application with the one or more database systems and the plurality of cache nodes independently, the method comprising: receiving, by the at least one data processor, Characterized in that the software application comprises a step of transmitting only a read query to the plurality of cache nodes when receiving a user request for the next step performed by the software application, . ≪ / RTI > Advantageously, when the software application receives the queried data (i.e., retrieved data) from at least one cache node in response to the read query, the software application processes the user request using the queried data do. Advantageously, if the software application receives a miss from all cache nodes (meaning that the data is not found at the cache node) in response to the read query, Fetch; When retrieving the queried data from the one or more database systems, if the queried data is present in the database system, the software application processes the user request using the queried data, and the at least one cache node To the at least one cache node, instructions to add the interrogated data to the at least one cache node.

바람직한 실시예에 따라, 데이터의 적어도 하나의 기록을 요구하는 유저 요청을 수신할 때, 상기 소프트웨어 애플리케이션은 상기 하나 이상의 데이터베이스 시스템을 기록하는 명령을 송신하고 또한 상기 복수의 캐시 노드를 동시에 기록하는 명령을 송신하여; 상기 복수의 캐시 노드를 상기 데이터 저장 시스템의 각 미검출된 판독 질문에, 즉 질문된 데이터가 모든 캐시 노드에서 발견되지 않은 각 판독 질문에 및 각 기록 질문에 파퓰레이트(populating)한다. 그리하여 각 데이터는 상기 복수의 캐시 노드 중 적어도 하나의 캐시 노드에 및 상기 하나 이상의 데이터베이스 시스템에 동일하게 저장되어, 상기 데이터베이스 시스템과 상기 복수의 캐시 노드들이 항상 완전히 동기화되는 것을 보장한다.According to a preferred embodiment, upon receiving a user request that requires at least one record of data, the software application sends a command to write the one or more database systems and simultaneously records the plurality of cache nodes Transmit; The plurality of cache nodes are populated to each undetected read query in the data storage system, i.e., to each read query where the queried data is not found in all cache nodes and to each write query. So that each data is equally stored in at least one of the plurality of cache nodes and in the one or more database systems to ensure that the database system and the plurality of cache nodes are always fully synchronized.

따라서, 본 발명은, 상기 데이터베이스에 통합된 복제 성분이 상기 캐시의 업데이트를 수행하여, 상기 데이터베이스와 캐시가 완전히 독립적이지 않아서 전체 저장 시스템의 스케일가능성을 제한하고 특정 데이터베이스를 요구하는 것을 수반하는 알려진 솔루션과는 달리, 상기 데이터베이스가 상기 복수의 캐시 노드를 포함하는 복수의 캐시와 완전히 독립적이게 한다. Thus, the present invention provides a known solution involving replicating components incorporated into the database performing updates of the cache, such that the database and cache are not completely independent, limiting the scalability of the entire storage system and requiring a particular database , The database is completely independent of the plurality of caches including the plurality of cache nodes.

완전히 독립적이어서 서로를 인식하지 못하는 데이터베이스와 캐시를 구비하는 컴퓨터 데이터 시스템은 트래픽 증가에 대처하는 것이 필요할 때 더 많은 컴퓨터와 저장 용량을 간단히 가져 오는 것에 의해 데이터 시스템의 제한 없는 스케일가능성을 제공할 수 있다. Computer data systems with completely independent and non-mutually-aware databases and caches can provide unlimited scale possibilities for data systems by simply bringing more computers and storage capacity when it is necessary to cope with traffic growth .

나아가, 높은 스케일가능성은 장비의 비용을 제한하면서 달성될 수 있다. 특히, 본 발명은 표준 데이터베이스와 DBMS로 구현될 수 있다. 본 발명은 또한 유지보수 비용을 감소시킬 수 있다. 특히, 저장 자원을 증가시키는데 데이터베이스에 어떤 동작도 요구되지 않는다. Furthermore, high scale possibilities can be achieved while limiting the cost of the equipment. In particular, the present invention can be implemented with a standard database and a DBMS. The present invention can also reduce maintenance costs. In particular, no action is required on the database to increase the storage resources.

소프트웨어 애플리케이션은 데이터베이스에 있는 데이터를 업데이트하는 일을 담당하고, 또 데이터베이스의 기록을 반영하거나 또는 데이터베이스에는 존재하지만 캐시에는 아직 존재하지 않는 질문된 데이터를 추가하는 것을 통해 캐시에 파퓰레이트하는 일을 담당하므로, 최종-유저는 고품질 데이터 즉, 가장 최근의 데이터를 제공받을 수 있다. 나아가, 캐시는 신속히 파퓰레이트될 수 있어서 새로운 캐시 노드를 시스템에 추가하자마자 처리량을 증가시킬 수 있다. The software application is responsible for updating the data in the database and is responsible for populating the cache by reflecting the records in the database or by adding the queried data that exists in the database but not yet in the cache , The final-user can be provided with high-quality data, i.e., the latest data. Furthermore, the cache can be quickly populated so that as soon as a new cache node is added to the system, the throughput can be increased.

나아가, 본 발명은 정확하고 고객에 맞춰진 답변(reply)을 유저에 제공할 수 있다. Furthermore, the present invention can provide a user with an accurate and customer-tailored reply.

비 제한적인 실시예에 따라, 기록 질문은 상기 데이터베이스 시스템에 데이터를 추가하는 것, 업데이트하는 것 및 삭제하는 것 중 적어도 하나를 포함한다.According to a non-limiting embodiment, the recording query includes at least one of adding, updating and deleting data to the database system.

선택적으로, 본 발명에 따른 방법은 다음의 선택적인 특징 및 단계들 중 어느 것을 포함할 수 있다: Optionally, the method according to the present invention may include any of the following optional features and steps:

캐시와 데이터베이스의 데이터 모델은 동일할 수 있으나 엄격히 동일하여야 할 필요는 없다. 유일한 요구조건은 캐시와 데이터베이스 레코드에 액세스하기 위해 정확히 동일한 어드레스 키(addressing key)들이 유도될 수 있도록 이들이 일치하여야 한다는 것이다. 이 키는 또한 기록 동작의 일치(consistency)를 위해 데이터베이스 레코드를 록킹(locked)할 수 있어야 한다. 그리하여, 데이터 레코드는 데이터베이스와 (존재하는 경우) 캐시에 동일하게 저장되거나 또는 캐시와 데이터베이스에 동일한 데이터 레코드의 어드레스의 일치를 보장하는 방식으로 저장된다. 예를 들어, 캐시 데이터 모델은 데이터베이스 모델에 대해 적응될 수 있어야 데이터 검색이 촉진되어 2개의 개체들 사이에 어드레스가 완전히 일치되게 유지되면서 캐시의 액세스 시간이 개선될 수 있다. The data model of the cache and database may be the same, but not necessarily strictly the same. The only requirement is that they must match so that exactly the same addressing keys can be derived to access the cache and database records. This key must also be able to lock the database records for consistency of the write operation. Thus, the data records are stored in the database and in the cache (if any) in the same way, or in a way that ensures the matching of the address of the same data record to the cache and database. For example, the cache data model must be adaptable to the database model to facilitate data retrieval so that the access time of the cache can be improved while keeping the addresses fully consistent between the two entities.

비 제한적인 실시예에 따라, 상기 캐시 노드의 데이터 모델은 상기 하나 이상의 데이터베이스의 데이터 모델과 동일하다. 각 캐시 노드의 각 데이터는 상기 데이터베이스 시스템에 동일하게 저장된다. 상기 데이터베이스 시스템의 각 데이터는 각 캐시 노드에 동일하게 저장된다. According to a non-limiting embodiment, the data model of the cache node is the same as the data model of the one or more databases. Each data of each cache node is equally stored in the database system. Each piece of data in the database system is equally stored in each cache node.

상기 하나 이상의 데이터베이스 시스템에 기록하는 명령은 상기 소프트웨어 애플리케이션에 의해 상기 하나 이상의 데이터베이스 시스템에 송신된다. An instruction to write to the one or more database systems is sent to the one or more database systems by the software application.

상기 복수의 캐시 노드에 동시에 기록하는 명령은 상기 소프트웨어 애플리케이션에 의해 상기 복수의 캐시 노드에 송신된다.Instructions for simultaneously writing to the plurality of cache nodes are transmitted to the plurality of cache nodes by the software application.

하나의 단일 소프트웨어 애플리케이션이 상기 데이터베이스 시스템과 상기 캐시 노드에 액세스한다. A single software application accesses the database system and the cache node.

상기 데이터 저장 시스템은 하나의 단일 데이터베이스 시스템을 포함한다. The data storage system includes a single database system.

상기 캐시는 지속적(persistent)이지 않은 각 데이터 저장 수단을 포함하는 캐시 노드를 포함한다. The cache includes a cache node comprising each data storage means that is not persistent.

상기 소프트웨어 애플리케이션은 상기 적어도 하나의 캐시 노드에 상기 질문된 데이터를 연속적으로 추가하는 것이 완료된 때 긍정적인 수신확인(positive acknowledgement)을 수신한다. The software application receives a positive acknowledgment when it is complete to successively add the interrogated data to the at least one cache node.

상기 동일한 질문된 데이터가 상기 하나 이상의 데이터베이스 시스템으로부터 동시에 페치되는 동안 데이터의 기록이 일어나는 경우 상기 적어도 하나의 캐시 노드에 상기 질문된 데이터를 후속하여 추가하는 것이 중지(aborted)되고, 부정적인 수신확인(negative acknowledgement)이 상기 소프트웨어 애플리케이션으로 리턴되어; 상기 소프트웨어 애플리케이션이 대신 상기 기록된 데이터를 사용할 수 있게 된다. If subsequent writing of data occurs while the same queried data is fetched from the one or more database systems simultaneously, subsequent addition of the queried data to the at least one cache node is aborted and a negative acknowledgment acknowledgment is returned to the software application; The software application can use the recorded data instead.

상기 하나 이상의 데이터베이스 시스템에 데이터를 기록하는 명령과, 상기 복수의 캐시 노드에 동시에 기록하는 명령을 송신할 때 상기 다음 단계들, 즉Instructions for writing data to the one or more database systems, and instructions for simultaneously writing to the plurality of cache nodes,

상기 하나 이상의 데이터베이스 시스템으로부터 상기 기록이 적용되는 현재 저장된 데이터를 검색하고 상기 현재 저장된 데이터를 상기 하나 이상의 데이터베이스 시스템에 록킹하는 단계; Retrieving currently stored data to which said record is applied from said one or more database systems and locking said currently stored data to said one or more database systems;

소프트웨어 애플리케이션에서 처리하고 저장될 새로운 데이터를 상기 하나 이상의 데이터베이스 시스템에 기록하는 단계 Writing new data to be processed and stored in the software application to the one or more database systems

저장될 상기 새로운 데이터를 일시적으로 보유하기 위해 캐시 버퍼를 소프트웨어 애플리케이션에 기록하는 단계; Writing a cache buffer to the software application to temporarily hold the new data to be stored;

저장될 상기 새로운 데이터를 상기 적어도 하나의 캐시 노드에 전달하고 설정하는 단계;Transferring and setting the new data to be stored to the at least one cache node;

상기 하나 이상의 데이터베이스 시스템에 상기 트랜잭션을 커미트(commit)하는 단계가 수행된다. And committing the transaction to the one or more database systems.

본 발명에서 캐시 노드 또는 캐시는 캐시 버퍼와는 상이하다. 캐시 버퍼는 기록하는 동안 데이터를 일시적으로 저장한다. 데이터는 유저 요청에 응답하여 캐시 버퍼로부터 검색되지 않는다. 캐시 버퍼는 기록 처리 전용이다. In the present invention, the cache node or cache is different from the cache buffer. The cache buffer temporarily stores data during recording. Data is not retrieved from the cache buffer in response to a user request. The cache buffer is write-only.

상기 커미트가 실패하는 경우, 상기 애플리케이션 소프트웨어는 이전에 설정된 상기 새로운 데이터를 삭제하는 명령을 상기 적어도 하나의 캐시 노드에 송신한다. If the commit fails, the application software sends a command to the at least one cache node to delete the previously set new data.

상기 새로운 데이터를 포함하는 적어도 하나의 캐시 노드는 그 컨텐츠에서 이 새로운 데이터를 삭제한다. 복수의 캐시 노드가 상기 새로운 데이터를 포함하는 경우, 상기 복수의 캐시 노드의 모든 캐시 노드가 이 새로운 데이터를 삭제한다. At least one cache node containing the new data deletes the new data from the content. When a plurality of cache nodes include the new data, all the cache nodes of the plurality of cache nodes delete the new data.

소프트웨어 애플리케이션은 복수의 캐시 노드 중에서 데이터를 추가하는 명령 또는 데이터를 업데이트하거나 삭제하는 명령이 송신되는 캐시 노드 또는 캐시 노드들을 결정한다. The software application determines cache nodes or cache nodes to which instructions to add data or data to update or delete data are transmitted among the plurality of cache nodes.

이 결정은 부하 균형(load balancing)을 고려한다. This decision considers load balancing.

상기 질문된 데이터가 상기 하나 이상의 데이터베이스 시스템에 존재하지 않거나 상기 복수의 캐시 노드에 존재하지 않는 경우, If the queried data is not present in the one or more database systems or is not present in the plurality of cache nodes,

상기 하나 이상의 데이터베이스 시스템을 페치할 때 미검출이 상기 질문된 데이터 대신에 상기 소프트웨어 애플리케이션으로 리턴되고; When fetching the one or more database systems, undetected is returned to the software application instead of the queried data;

상기 소프트웨어 애플리케이션은 상기 대응하는 질문된 데이터에 대해 상기 적어도 하나의 캐시 노드에 추가된 데이터의 부재(absence)를 적어도 하나의 캐시 노드에 송신하고, 상기 데이터의 부재는 모든 그 다음 질문에 바로 이용가능하게 되고; The software application sends to the at least one cache node an absence of data added to the at least one cache node for the corresponding queried data and the absence of the data is immediately available to all subsequent queries ;

이에 의해, 상기 소프트웨어 애플리케이션이 상기 미검출된 질문된 데이터를 검색하려고 시도할 때 상기 하나 이상의 데이터베이스를 더 페치하여야 하는 것을 회피하게 한다.Thereby avoiding further fetching of the one or more databases when the software application attempts to retrieve the undetected queried data.

데이터베이스에서 종국적으로 발견되지 않는 최종-유저에 의해 요청된 데이터 유저는 "미검출 데이터"로 캐시에 저장되어, 캐시의 그 다음 조회시 유저 요청된 데이터가 캐시에도 존재하지 않고 데이터베이스에도 존재하지 않는다는 정보를 바로 리턴한다. 이것은 데이터베이스의 다른 조회가 데이터베이스 시스템을 느리게 하는 것을 방지한다. The data user requested by the end-user that is not ultimately found in the database is stored in the cache as "undetected data ", indicating that the user requested data is not present in the cache or present in the database . This prevents other queries in the database from slowing down the database system.

하나의 비 제한적인 실시예에 따라, 각 데이터는 헤더와 연관되어 레코드를 형성하고, 여기서 상기 헤더는 적어도 하나의 데이터베이스 시스템에서 컨텐츠가 미검출되었는지 여부를 나타낸다. 따라서, 레코드의 헤더만을 판독하면 데이터베이스 시스템을 페치할 필요가 있는지 여부를 알 수 있다. According to one non-limiting embodiment, each data is associated with a header to form a record, wherein the header indicates whether content has been detected in at least one database system. Thus, reading only the header of the record can tell if it is necessary to fetch the database system.

다른 실시예에 따라, 캐시 노드는 데이터와 연관된 특정 값을 저장하는데, 상기 특정 값은 데이터가 데이터베이스에 존재하지 않는 것을 나타낸다. According to another embodiment, the cache node stores a particular value associated with the data, which indicates that the data does not exist in the database.

상기 소프트웨어 애플리케이션은 제1 전용 인터페이스 상의 상기 하나 이상의 데이터베이스 시스템과, 제2 전용 인터페이스 상의 상기 복수의 캐시 노드와 독립적으로 인터페이싱한다. The software application interfaces with the one or more database systems on a first dedicated interface and the plurality of cache nodes on a second dedicated interface independently.

데이터 모델은 데이터베이스와 캐시 사이에 직접 맵핑가능한 방식으로 선택된다.The data model is chosen in such a way that it can be mapped directly between the database and the cache.

각 데이터 세트는 기능 개체로 그룹화되고 키에 의해 색인(indexed)되는데, 이 키는 이 키가 데이터베이스 시스템과 캐시 노드에 모두 있는 것으로 인해 데이터 세트를 전체적으로 바로 액세스가능하게 한다. Each dataset is grouped into functional entities and indexed by keys, which make the dataset globally accessible because it is both in the database system and in the cache node.

데이터는 항공편-날짜로 그룹화되고 항공편-날짜 키에 의해 식별된다. The data is grouped by flight-date and identified by flight-date key.

소프트웨어 애플리케이션은 여행 제공자의 상품 목록의 소프트웨어 애플리케이션이다. The software application is a software application of a travel provider's product listing.

소프트웨어 애플리케이션, 데이터베이스 시스템 및 캐시 노드는 여행 제공자의 상품 목록에 포함된다. The software application, the database system and the cache node are included in the travel provider's list of goods.

일반적으로, 여행 제공자는 항공사이다. Generally, the travel provider is an airline.

소프트웨어 애플리케이션에 수신된 유저 요청은 여행사, 온라인 여행사 및 온라인-고객 중 적어도 하나에 의해 송신된다.The user request received in the software application is transmitted by at least one of a travel agent, an online travel agent, and an online customer.

상기 캐시 노드와 상기 데이터베이스의 데이터 모델은 캐시 노드와 데이터베이스 데이터에 액세스하기 위해 정확히 동일한 어드레스 키들이 유도될 수 있도록 일치한다. The data model of the cache node and the database coincides so that exactly the same address keys can be derived to access the cache node and the database data.

데이터는 상기 데이터베이스와, 만약 존재하는 경우 적어도 하나의 캐시 노드에 동일하게 저장되거나 또는 캐시와 데이터베이스에 동일한 데이터의 어드레스의 일치를 보장하는 방식으로 저장된다. Data is stored in the database and in at least one cache node, if present, in the same way or in a manner that ensures the matching of addresses of the same data to the cache and database.

추가적인 측면에서 본 발명은 소프트웨어 프로그램 명령을 포함하는 비-일시적인 컴퓨터-프로그램 제품으로서, 적어도 하나의 데이터 프로세서에 의해 상기 소프트웨어 프로그램 명령을 실행하면 상기 방법을 실행하는 동작을 수행하는 것을 특징으로 하는 컴퓨터-프로그램 제품을 제공한다.In a further aspect, the invention relates to a non-transitory computer-program product comprising software program instructions, wherein said computer program instructions, when executed by at least one data processor, Program product.

또한 예시적인 실시예는, 소프트웨어 애플리케이션, 하나 이상의 데이터베이스 시스템 및 복수의 캐시 노드를 포함하는 데이터 저장 시스템에 데이터를 저장하고 상기 데이터 저장 시스템으로부터 데이터를 검색하는 방법으로서, 상기 소프트웨어 애플리케이션은 데이터의 적어도 하나의 판독 또는 데이터의 하나의 기록을 요구하는 유저 요청을 수신하도록 구성되고, 상기 소프트웨어 애플리케이션은 상기 유저 요청을 처리하기 위해 상기 데이터 저장 시스템에 판독 질문 또는 기록 질문을 송신하도록 더 구성되고, 상기 방법은 상기 소프트웨어 애플리케이션이 상기 하나 이상의 데이터베이스 시스템과 상기 복수의 캐시 노드와 독립적으로 인터페이싱하고, 상기 방법은 적어도 하나의 데이터 프로세서에서 상기 소프트웨어 애플리케이션에 의해 수행되는 다음의 단계, 즉 An exemplary embodiment also provides a method of storing data in a data storage system including a software application, one or more database systems and a plurality of cache nodes and retrieving data from the data storage system, the software application comprising at least one Wherein the software application is further configured to send a read query or record query to the data storage system to process the user request, the method comprising: Wherein the software application interfaces with the at least one database system and the plurality of cache nodes independently, the method comprising: The next step to be performed, namely

데이터의 적어도 하나의 판독을 요구하는 유저 요청을 수신할 때, 상기 소프트웨어 애플리케이션은 판독 질문만을 상기 복수의 캐시 노드에 송신하는 단계;Wherein upon receiving a user request that requests reading of at least one of the data, the software application sends only a read query to the plurality of cache nodes;

상기 소프트웨어 애플리케이션이 적어도 하나의 캐시 노드로부터 질문된 데이터(즉, 검색된 데이터)를 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리하는 단계;The software application processing the user request using the queried data when the software application receives queried data (i.e., retrieved data) from at least one cache node;

상기 소프트웨어 애플리케이션이 모든 캐시 노드로부터 미검출을 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 하나 이상의 데이터베이스 시스템을 페치하고; 상기 하나 이상의 데이터베이스 시스템으로부터 상기 질문된 데이터를 검색할 때, 상기 질문된 데이터가 상기 데이터베이스 시스템에 존재하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리하고, 상기 적어도 하나의 캐시 노드에 상기 질문된 데이터를 추가하는 명령과 상기 질문된 데이터를 적어도 하나의 캐시 노드에 송신하고; 만약 데이터베이스에서 발견되지 않는 경우, 상기 데이터가 존재하지 않는다는 것을 나타내는 정보를 캐시에 추가하는 단계를 포함하고,If the software application receives undetected from all cache nodes, the software application fetches the one or more database systems; When retrieving the queried data from the one or more database systems, if the queried data is present in the database system, the software application processes the user request using the queried data, and the at least one Adding the interrogated data to a cache node and sending the interrogated data to at least one cache node; Adding information to the cache indicating that the data does not exist if not found in the database,

각 데이터는 상기 복수의 캐시 노드 중 적어도 하나의 캐시 노드에 및 상기 하나 이상의 데이터베이스 시스템에 동일하게 저장되거나 또는 캐시와 데이터베이스에 동일한 데이터의 어드레스의 일치를 보장하는 방식으로 저장되는 것을 특징으로 하는 방법을 제공한다.Characterized in that each piece of data is stored in at least one cache node of said plurality of cache nodes and in the same storage in said one or more database systems or in a manner ensuring the matching of addresses of the same data in a cache and a database. to provide.

선택적으로 그리나 유리하게는, 적어도 데이터의 기록을 요구하는 유저 요청을 수신할 때, 상기 소프트웨어 애플리케이션은 상기 하나 이상의 데이터베이스 시스템에 기록하는 명령을 송신하고 또한 상기 복수의 캐시 노드에 동시에 기록하는 명령을 송신하여; 상기 복수의 캐시 노드를 상기 데이터 저장 시스템의 각 미검출된 판독 질문에 및 각 기록 질문에 파퓰레이트한다. Alternatively or additionally, upon receiving at least a user request to request the recording of data, the software application may send a command to write to the one or more database systems and to simultaneously write to the plurality of cache nodes So; And populates the plurality of cache nodes with each undetected read query and with each write query of the data storage system.

또 다른 측면에서 본 발명은, 소프트웨어 애플리케이션, 하나 이상의 데이터베이스 시스템 및 복수의 캐시 노드를 포함하는 항공사의 상품 목록의 데이터 저장 시스템에 데이터를 저장하고 상기 데이터 저장 시스템으로부터 데이터를 검색하는 방법으로서, 상기 소프트웨어 애플리케이션은 적어도 하나의 항공편에 관한 이용가능성을 획득하는 데이터의 판독과 적어도 하나의 항공편에 관한 이용가능성을 변경하는 데이터의 기록 중 적어도 하나를 요구하는 유저 요청을 수신하도록 구성되고, 상기 소프트웨어 애플리케이션은 상기 유저 요청을 처리하기 위해 상기 데이터 저장 시스템에 판독 질문 또는 기록 질문을 송신하도록 더 구성되고, 상기 방법은 상기 소프트웨어 애플리케이션이 상기 하나 이상의 데이터베이스 시스템과 상기 복수의 캐시 노드와 독립적으로 인터페이싱하고, 상기 방법은 적어도 하나의 데이터 프로세서에서 상기 소프트웨어 애플리케이션에 의해 수행되는 다음의 단계, 즉 In another aspect, the present invention provides a method of storing data in a data storage system of a merchandise listing of an airline that includes a software application, one or more database systems and a plurality of cache nodes and retrieving data from the data storage system, The application is configured to receive a user request that requires at least one of reading data to obtain availability for at least one flight and recording data to change availability for at least one flight, Wherein the software application is further configured to send a read query or write query to the data storage system to process a user request, Interfacing with independently, and the method of the following steps to be performed on the at least one data processor by said software application, that is,

적어도 하나의 항공편에 관한 이용가능성을 획득하는 데이터의 적어도 하나의 판독을 요구하는 유저 요청을 수신할 때, 상기 소프트웨어 애플리케이션은 판독 질문만을 상기 복수의 캐시 노드에 송신하는 단계;When receiving a user request that requires at least one read of data to obtain availability for at least one flight, the software application sending only read queries to the plurality of cache nodes;

상기 소프트웨어 애플리케이션이 적어도 하나의 캐시 노드로부터 질문된 데이터(즉, 검색된 데이터)를 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리하는 단계;The software application processing the user request using the queried data when the software application receives queried data (i.e., retrieved data) from at least one cache node;

상기 소프트웨어 애플리케이션이 모든 캐시 노드로부터 미검출을 수신하는 경우, 상기 소프트웨어 애플리케이션은 상기 하나 이상의 데이터베이스 시스템을 페치하고; 상기 하나 이상의 데이터베이스 시스템으로부터 상기 질문된 데이터를 검색할 때, 상기 질문된 데이터가 상기 데이터베이스 시스템에 존재하는 경우, 상기 소프트웨어 애플리케이션은 상기 질문된 데이터를 사용하여 상기 유저 요청을 처리하고, 상기 적어도 하나의 캐시 노드에 상기 질문된 데이터를 추가하는 명령과 상기 질문된 데이터를 적어도 하나의 캐시 노드에 송신하는 단계를 포함하고,If the software application receives undetected from all cache nodes, the software application fetches the one or more database systems; When retrieving the queried data from the one or more database systems, if the queried data is present in the database system, the software application processes the user request using the queried data, and the at least one Adding the interrogated data to a cache node and transmitting the interrogated data to at least one cache node,

각 데이터는 상기 복수의 캐시 노드 중 적어도 하나의 캐시 노드에 및 상기 하나 이상의 데이터베이스 시스템에 동일하게 저장되는 것을 특징으로 하는 방법을 제공한다.Each data being equally stored in at least one of the plurality of cache nodes and in the one or more database systems.

선택적으로 그러나 유리하게는, 적어도 하나의 항공편에 관한 이용가능성을 변경하는 기록을 적어도 요구하는 유저 요청은 좌석을 구매하는 것, 좌석을 취소하는 것, 좌석을 변경하는 것 중 적어도 하나에 대한 유저의 요청이다.Optionally but advantageously, a user request that at least requires a record that alters the availability of at least one flight is a user request for at least one of purchasing a seat, canceling a seat, changing a seat It is a request.

또 다른 측면에서 본 발명은 하나 이상의 데이터베이스 시스템, 적어도 하나의 캐시 노드, 적어도 하나의 데이터 프로세서 및 소프트웨어 애플리케이션을 포함하는 데이터 저장 시스템으로서, 상기 적어도 하나의 데이터 프로세서에 의해 상기 소프트웨어 애플리케이션을 실행하면 상기 방법들 중 어느 방법을 실행하는 동작을 수행하고, 상기 하나 이상의 데이터베이스 시스템과 상기 적어도 하나의 캐시 노드는 상기 소프트웨어 애플리케이션에 의해 독립적으로 구동되도록 구성된 것을 특징으로 하는 데이터 저장 시스템을 제공한다.In another aspect, the present invention provides a data storage system comprising at least one database system, at least one cache node, at least one data processor, and a software application, wherein when the software application is executed by the at least one data processor, Wherein the at least one database system and the at least one cache node are configured to be run independently by the software application.

유리하게는 캐시 노드의 수 및 소프트웨어 애플리케이션을 실행하는 컴퓨터 수단의 처리 능력은 소프트웨어 애플리케이션의 모든 최종-유저에 의해 생성된 취합된 피크 트래픽을 충족하도록 구성된다.Advantageously, the number of cache nodes and the processing capabilities of the computing means executing the software application are configured to meet aggregated peak traffic generated by all end-users of the software application.

선택적으로, 본 발명에 따른 데이터 저장 시스템은 다음 선택적인 특징 및 단계들 중 어느 것을 포함할 수 있다: Optionally, a data storage system according to the present invention may include any of the following optional features and steps:

상기 캐시 노드의 수와 저장 자원은 상기 전체 데이터베이스 시스템 컨텐츠를 보유하도록 구성된다. The number of cache nodes and the storage resources are configured to hold the entire database system content.

상기 데이터베이스 시스템의 일부 데이터는 2개 이상의 캐시 노드에 저장된다. Some data in the database system is stored in two or more cache nodes.

적어도 하나의 캐시 노드의 히트 비율 질문은 전체 데이터베이스 시스템 컨텐츠가 소프트웨어 애플리케이션에 의해 적어도 하나의 캐시 노드로 전달되었을 때 종국적으로 100%에 이른다. The hit ratio question of at least one cache node ultimately reaches 100% when the entire database system content is delivered to at least one cache node by the software application.

또 다른 측면에서 본 발명은 본 발명의 상기 데이터 저장 시스템을 포함하는 여행 제공자의 상품 목록을 제공한다.In yet another aspect, the present invention provides a list of goods of a travel provider comprising the data storage system of the present invention.

도 1은 본 발명에 따른 데이터 저장 시스템을 도시하는 도면.
도 2는 최종 유저에 의해 요청되었으나 캐시에는 아직 존재하지 않는 데이터를 애플리케이션에서 종국적으로 획득할 수 있게 하는 공정을 도시하는 도면.
도 3은 애플리케이션으로부터 데이터베이스와 캐시에 동시에 기록하는 공정을 설명하는 도면.
도 4는 동시 기록 동작이 일어나는 특정 경우에 데이터베이스로부터 데이터를 캐시에 취득하는 공정을 도시하는 도면.
도 5는 애플리케이션에 의해 데이터베이스와 캐시에서 동시에 수행되는 데이터 기록 타이밍에 대한 추가적인 상세를 도시하는 도면.
도 6은 요청된 데이터가 캐시에도 존재하지 않고 데이터베이스에도 존재하지 않는 경우를 도시하는 도면.
도 7은 데이터베이스와 캐시의 기록이 삭제인 경우를 도시하는 도면.
1 illustrates a data storage system in accordance with the present invention;
Fig. 2 illustrates a process that enables the application to ultimately obtain data requested by the end user but not yet in the cache.
3 is a view for explaining a step of simultaneously recording an application and a database in a cache;
4 illustrates a process for obtaining data from a database into a cache in a particular case where a simultaneous write operation occurs;
5 is a diagram illustrating additional details of data write timing performed simultaneously in a database and a cache by an application;
Figure 6 shows the case where the requested data does not exist in the cache nor in the database.
7 is a diagram showing a case where the recording of the database and the cache is erased;

본 발명의 이하 상세한 설명은 첨부된 도면을 참조한다. 이 상세한 설명은 예시적인 실시예를 포함하지만, 다른 실시예들도 가능하고, 본 발명의 사상과 범위를 벗어남이 없이 설명된 실시예에 변형이 일어날 수 있다. The following detailed description of the invention refers to the accompanying drawings. While this description includes exemplary embodiments, other embodiments are possible, and variations may be made in the embodiments described without departing from the spirit and scope of the invention.

도 1은 본 발명에 따른 데이터 저장 시스템(100)을 도시하는데, 소프트웨어 애플리케이션(10)이 한편으론 데이터베이스 시스템(20)과 독립적으로 인터페이싱하고, 다른 한편으론, 캐시라고도 언급되고 하나 이상의 캐시 노드(30)를 포함하는 캐시 시스템과 인터페이싱한다.Figure 1 illustrates a data storage system 100 in accordance with the present invention in which a software application 10 interfaces on the one hand with the database system 20 on the one hand and is also referred to as a cache, ). ≪ / RTI >

이후 설명되는 본 발명의 데이터베이스 캐시 시스템은 데이터베이스 시스템(20)에 도달할 수 있었던 모든 판독 트래픽을 차단하여 데이터 저장 시스템(100)의 성능을 크게 개선시키는 프론트엔드 처리 층(front-end processing layer)으로 동작하는 캐시 노드 세트로 전체 데이터베이스 컨텐츠가 종국적으로 전달될 수 있는 것으로 인해 주로 특정된다는 것이 주목된다. 충분한 개수의 캐시 노드가 전체 트래픽을 지원하고 전체 데이터베이스 컨텐츠를 함께 처리하도록 전개된다. 그리하여, 시스템이 상당한 시간 기간 동안 업(up)되어 실행될 때 백엔드(back-end) 데이터베이스에 포함된 모든 데이터 개체가 종국적으로 캐시 노드 세트로 전달되거나 이에 존재하여 모든 판독 질문이 캐시 노드에 의해 처리되기 때문에 더 이상 캐시 미검출이 없게 된다. 데이터베이스의 기록은 캐시와 데이터베이스에서 체계적으로 수행되어 캐시와 데이터베이스 컨텐츠는 항상 일치한다. 이후 설명된 데이터 저장 시스템은 데이터 저장소로 사용되는 데이터베이스보다 더 고속의 프론트엔드 저장 및 처리 시스템이긴 하지만 본 발명의 이하 상세한 설명에서는 캐시라는 용어가 사용된다. The database cache system of the present invention to be described below is a front-end processing layer that greatly improves the performance of the data storage system 100 by blocking all read traffic reaching the database system 20 It is noted that the set of cache nodes in operation is mainly specified due to the fact that the entire database content may eventually be delivered. A sufficient number of cache nodes are deployed to support the entire traffic and to handle the entire database content together. Thus, when the system is up and running for a significant period of time, all the data objects contained in the back-end database are eventually delivered to or present in the cache node set and all read queries are processed by the cache node Therefore, no cache miss is detected. The database records are organized in the cache and database systematically so that the cache and database contents are always consistent. The term cache is used in the following description of the present invention, although the data storage system described hereinafter is a faster front end storage and processing system than a database used as a data store.

데이터 저장 시스템(100)은 데이터 처리 시스템에 의해 종종 사용되는 전통적인 트리 계층 아키텍처를 따른다. 중간 계층(120)은 서비스 제공자의 전용 소프트웨어 애플리케이션(10)이 실행되는 소프트웨어 애플리케이션(10) 계층이다. 이전에 사용된 GDS 예에서 이것은 일반적으로 항공편의 항공사 편대에서 모든 좌석 예약 및 부킹을 추적하는 것을 목적으로 하는 임의의 항공사의 상품 목록 애플리케이션이다. The data storage system 100 follows a traditional tree hierarchy architecture, which is often used by data processing systems. The middle tier 120 is a layer of software application 10 on which the dedicated software application 10 of the service provider is executed. In the previously used GDS example, this is a product listing application for any airline that is intended to track all seat bookings and bookings on the airline's flight in general.

클라이언트 계층(130)은 애플리케이션(10)의 모든 원격 위치된 유저(40)로 구성된다. 상기 항공사 상품 목록과 같은 서비스 제공자에 의해 설치된 여행 애플리케이션의 경우에 최종 유저는 일반적으로 전통적인 여행사의 직원이다. 이들 직원은 또한 여행 요청을 발행하고 가능하게는 온라인으로 항공 트립(trip)을 부킹할 수 있는 많은 이용가능한 여행 웹 사이트 또는 온라인 여행사 중 어느 하나를 사용하는 개인이다. The client layer 130 is comprised of all remotely located users 40 of the application 10. In the case of a travel application installed by a service provider such as the airline merchandise list, the end user is typically a traditional travel agent. These employees are also individuals who use any of the many available travel websites or online travel agents that can issue travel requests and possibly book air trips online.

하부 계층은 데이터베이스 시스템(20)을 포함하는 저장 계층(110)이다. 본 발명은 서비스 제공자에 의해 사용된 데이터베이스 시스템에 어떤 가정도 하지 않는다. 이것은 대부분 종종 상업적으로 이용가능한 표준 데이터베이스 관리 시스템(DBMS)에 기초하지만 이것은 전용 데이터베이스 시스템일 수도 있다. 서비스 제공자에 의해 사용되는 데이터베이스 시스템이 어느 것이든 상관없이 이 시스템은 서비스 제공자의 모든 데이터를 보유하고 처리하기에 충분한 양의 하드웨어와 소프트웨어 자원으로 구현된다. 도 1에서 데이터 저장 시스템(100)을 구현하는데 필요한 모든 하드웨어 자원은 참조 부호(101)로 전체적으로 표시된 개별 컴퓨터 같은 기계로 도시된다. 지속적인 비-휘발성 저장매체는 각 개별 컴퓨터로부터 이용가능한 것으로 가정되고 또한 예를 들어 데이터베이스 컨텐츠를 영구적으로 보유하기 위해 필요한 경우 별도의 데이터 디스크(102)로 이용가능한 것으로 가정된다. The lower layer is the storage layer 110 including the database system 20. The present invention makes no assumptions in the database system used by the service provider. This is often based on a commercially available standard database management system (DBMS), but it may be a dedicated database system. Regardless of which database system is used by the service provider, the system is implemented with a sufficient amount of hardware and software resources to hold and process all the data of the service provider. All of the hardware resources required to implement the data storage system 100 in FIG. 1 are shown as a separate machine-like machine, generally designated by the reference numeral 101. The persistent non-volatile storage medium is assumed to be available from each individual computer and is also available as a separate data disk 102 if needed, for example, to permanently retain the database content.

본 발명의 데이터 저장 시스템은 저장 계층(110)과 중간 계층(120)을 포함한다. The data storage system of the present invention includes a storage layer 110 and an intermediate layer 120.

본 발명에서, '유저 요청' 또는 '요청'이라는 용어는 유저(40)로부터 오고 애플리케이션(10)에 도달하는 디맨드를 나타낸다. 유저는 여행자 또는 여행사 직원과 같은 사람일 수 있고 또는 요청을 송신하는 컴퓨터 시스템일 수 있다. In the present invention, the terms 'user request' or 'request' refer to a demand coming from the user 40 and arriving at the application 10. The user may be a person such as a traveler or a travel agent, or may be a computer system that sends a request.

본 발명에서, '데이터 질문' 또는 '질문'이라는 용어는 애플리케이션(10)에 의해 캐시 노드(30) 및/또는 데이터베이스 시스템(20)으로 송신된 디맨드를 나타낸다. 질문은 판독 질문 또는 기록 질문일 수 있다. In the present invention, the term "data query" or "query" refers to a request sent by the application 10 to the cache node 30 and / or the database system 20. The question may be a read or write question.

판독 질문(read query)은 적어도 캐시 노드로부터 취득하는 명령 또는 데이터베이스 시스템으로부터 데이터를 판독하는 명령을 포함한다. 일반적으로, 데이터베이스 시스템으로부터 데이터를 획득하는 동작은 '판독(read)'으로 지시된 반면, 캐시 노드로부터 데이터를 획득하는 동작은 "취득(get)"으로 지시된다. 질문된 데이터는 적어도 부분적으로 유저 요청을 충족하기 위해 적어도 취득되거나 판독되어야 하는 데이터이다. The read query includes at least instructions from the cache node or instructions to read data from the database system. Generally, the operation of acquiring data from the database system is indicated as 'read' while the operation of acquiring data from the cache node is indicated as 'get'. The queried data is at least partially the data that must be retrieved or read to satisfy a user request.

기록 질문(write query)은 데이터를 추가하거나 업데이트/설정하거나 삭제하는 명령을 포함한다. 일반적으로, 데이터베이스 시스템으로부터 데이터를 변경하는 동작은 '업데이트(update)'라고 지시된 반면, 캐시 노드로부터 데이터를 변경하는 동작은 "설정(set)"으로 지시된다. A write query includes instructions to add, update, set, or delete data. Generally, the operation of changing data from the database system is indicated as 'update' while the operation of changing data from the cache node is indicated as 'set'.

따라서, 이하 발명에서, 애플리케이션(10)은 유저 요청을 수신하고 데이터 질문을 송신하는데, 이들 질문은 판독 질문 또는 기록 질문일 수 있다. Thus, in the following description, the application 10 receives a user request and sends a data query, which may be a read or write question.

실제로 사용되는 시스템이 어느 것이든 상관없이, 본 발명은 데이터베이스(20)가 서비스 제공자의 최종 궁극적인 데이터 저장소인 것으로 가정한다. 데이터베이스(20)는 바람직하게는 원자성(Atomicity), 일치성(Consistency), 분리성(Isolation) 및 내구성(Durability) 면에서 신뢰성 있게 데이터베이스 트랜잭션을 처리하는 것을 보장하는 ACID (Atomicity, Consistency, Isolation and Durability) 특성 세트를 따른다. Regardless of the system actually used, the present invention assumes that the database 20 is the ultimate ultimate data store of the service provider. The database 20 preferably includes ACID (Atomicity, Consistency, Isolation and Transformation) that ensures reliable handling of database transactions in terms of atomicity, consistency, isolation, and durability. Durability character set.

종래 기술에 알려지고 이전에 언급된 데이터베이스 시스템에 대해, 본 발명의 소프트웨어 애플리케이션(10)은 직접 연결된 채 유지되어서, 전용 인터페이스(12)를 통한 데이터베이스(20)와 독립적이다. 그리하여, 데이터베이스 시스템의 동작은 소프트웨어 애플리케이션(10)과 자체 전용 인터페이스(14)를 갖는 하나 이상의 캐시 노드(30)에 의해 전혀 영향을 받지 않는다. 본 발명의 이하 상세한 설명에 더 설명된 바와 같이, 반드시 처리해야만 하는 필수 트랜잭션, 즉, 새로운 부킹이 완료된 결과 및 일반적으로 예를 들어, 취소가 발생하여서, 예약 상태를 변경해야 할 때마다, 데이터베이스 컨텐츠를 영구적으로 업데이트하는 트랜잭션을 데이터베이스에 송신하는 것은 오로지 소프트웨어 애플리케이션(10)에만 달려 있다. The software application 10 of the present invention remains directly connected and is independent of the database 20 via the dedicated interface 12, as is known in the art and for the previously mentioned database system. Thus, the operation of the database system is not affected at all by the one or more cache nodes 30 having the software application 10 and its own dedicated interface 14. As described further in the following detailed description of the present invention, whenever a required transaction that must be processed, that is, the result of completing a new bookkeeping and generally, for example, a cancellation occurs, It is solely to the software application 10 to send a transaction that permanently updates the database to the database.

따라서 캐시 노드(30)들 중 임의의 노드와 데이터베이스 시스템(20) 사이에는 연결이 없다. 데이터베이스 시스템과 캐시 노드(30) 사이에는 메시지, 명령 또는 데이터가 전혀 교환되지 않는다. Thus, there is no connection between any of the cache nodes 30 and the database system 20. No messages, commands or data are exchanged between the database system and the cache node 30. [

데이터 저장 시스템(100)에서 소프트웨어 애플리케이션(10)에 의해 처리되는 모든 트래픽은 전용 캐시 소프트웨어 애플리케이션(10) 인터페이스(14)를 통해 지원된다. 도 1에 도시된 바와 같이 캐시는 기능적으로 데이터베이스와 같은 저장 계층에 위치된다. 인터페이스(14)와 하나 이상의 캐시 노드(30)는 타깃 처리량이 어느 것이든 상관없이 예상된 처리량을 충족시킬 만큼 충분한 하드웨어와 소프트웨어 자원을 소프트웨어 애플리케이션(10) 계층(120)과 캐시 노드의 저장 계층(110)에 바로 제공하고 전개하는 것에 의해 데이터 저장 시스템(100)의 모든 트래픽을 처리할 수 있는 것으로 가정된다. 그리하여, 더 많은 데이터를 처리하는 것은 기존의 것에 더 많은 연산 및 저장 자원을 추가하는 것에 의해 간단히 획득된다. 이렇게 하는 방식은 타깃 처리량을 달성하도록 전개되는데 필요한 컴퓨터 플랫폼의 수와는 다른 아키텍처 고려사항, 즉, 그 비용, 전력 소비 및 바닥 점유량에 의해 제한되지 않는 시스템 스케일가능성을 제공한다. All traffic handled by the software application 10 in the data storage system 100 is supported through the dedicated cache software application 10 interface 14. [ As shown in FIG. 1, the cache is functionally located in a storage layer such as a database. The interface 14 and the one or more cache nodes 30 may provide sufficient hardware and software resources to satisfy the expected throughput regardless of the target throughput in the software application 10 layer 120 and the storage layer It is assumed that it is able to process all the traffic of the data storage system 100 by providing and deploying it directly to the data storage system 100. Thus, processing more data is simply accomplished by adding more computation and storage resources to the existing one. This approach provides system scalability that is not constrained by architectural considerations, that is, its cost, power consumption, and floor occupancy, that are different from the number of computer platforms required to be deployed to achieve the target throughput.

상기 스케일가능성이 효과적으로 달성하기 위해, 데이터 저장 시스템(100)은 컨텐츠를 캐시와 데이터베이스에서 일치시켜 동일한 키를 사용하여 두 컨텐츠를 검색할 수 있게 하는 글로벌 키/값 데이터 모델에 기초한다. 이에 따라 데이터 모델은 데이터베이스와 캐시에 직접 맵핑가능한 방식으로 선택된다. 특히, 각 데이터 세트는 기능 개체에 의해 그룹화되고 공통 고유 키에 의해 색인된다. 이것은 이들 데이터가 데이터베이스와 캐시 모두에 있는 고유 키로부터 전체적으로 바로 액세스가능하게 하지만 컨텐츠들은 다소 상이할 수 있다. 전술된 바와 같이 동작시키는데 데이터 모델에 대한 유일한 요구조건은 다음과 같다:To achieve this scalability effectively, the data storage system 100 is based on a global key / value data model that allows content to be matched in a cache and database so that both content can be retrieved using the same key. The data model is thus selected in such a way that it can be mapped directly to the database and cache. In particular, each data set is grouped by functional entities and indexed by a common unique key. This allows the data to be accessed entirely directly from the unique keys in both the database and the cache, but the content can be somewhat different. The only requirements for the data model to operate as described above are:

- 업데이트 전에는, 캐시에서 업데이트될 데이터의 수퍼세트(superset)를 록킹하는 능력; - Prior to updating, the ability to lock a superset of data to be updated in the cache;

- 데이터베이스에서 주어진 업데이트에 의해 영향을 받는 모든 캐시 키를 추론하여 이들을 업데이트하는 능력. - The ability to update all of the cache keys affected by a given update in the database by updating them.

여행 산업 분야에서 취한 일반적인 예는 다음 테이블에 있는 바와 같다:Typical examples taken in the travel industry are as follows:

Figure 112015028846794-pct00001
Figure 112015028846794-pct00001

여기서 (*) O와 D는 출발지와 목적지이다Where ( * ) O and D are the origin and destination

(**) 구간(leg)은 항공편의 일부이다. 예를 들어, 항공편은 니스(NCE)로부터 파리(CDG)를 경유(stop)하고 뉴욕(NYC)으로 갈 수 있다. 이 항공편은 2개의 구간, 즉 NCE-CDG와 CDG-NYC를 가진다. (이 항공편은 3개의 O와 D, 즉 NCE-CDG, NCE-NYC 및 CDG-NYC를 포함하는 것이 주목된다.) ( ** ) A leg is part of a flight. For example, a flight can stop from Nice (NCE) to Paris (CDG) and go to New York (NYC). This flight has two sections: NCE-CDG and CDG-NYC. (It is noted that this flight includes three O and D, NCE-CDG, NCE-NYC and CDG-NYC.)

상기 예에서 스케줄 정보는 관계 데이터베이스(relational database)에 저장된다. "모(mother)" 테이블은 항공편-날짜 기본 키를 구비한다. "자(child)" 테이블 중 하나는 구간-날짜 기본 키를 구비한다. 일부 기록(예를 들어, 업데이트)은 항공편 레벨에서 수행되고, 다른 기록은 구간 레벨에서 수행된다. 항공편 레벨에서 록킹하는 것은 두 경우에 사용된다. 이것은 항공편에 변경이 일어나는 것과 항공편의 모든 구간에 변경이 일어나는 것을 방지하는데 사용된다. 항공편의 업데이트는 모든 구간을 업데이트하고 동시 업데이트를 초래할 수 있어서 구간-날짜 레벨에서는 록킹이 설정될 수 없다.In the above example, the schedule information is stored in a relational database. The "mother" table has a flight-date primary key. One of the "child" tables has an interval-date primary key. Some records (e.g., updates) are performed at the flight level and other records are performed at the interval level. Locking at the flight level is used in both cases. This is used to prevent changes to the flight and to prevent any changes to the flight. Updates to flights can update all intervals and cause simultaneous updates, so locking can not be set at the interval-date level.

그리하여, 데이터베이스와 캐시의 데이터 모델은, 엄격히 동일하지 않은 경우, 데이터베이스 레코드들이 록킹되게 하면서 캐시와 데이터베이스 레코드에 액세스하기 위해 동일한 색인 키들이 유도될 수 있도록 일치하여야 한다. Thus, the data model of the database and the cache must match to ensure that the same index keys can be derived to access the cache and database records while locking the database records, if not strictly identical.

도 1에 도시된 아키텍처는 전체 처리량을 지원하고 또한 캐시 데이터의 일치의 관리를 상당히 간략화한 단일 계층 클라이언트측 분배된 캐시로 구성된 캐시와 동작한다. 클라이언트측 분배된 캐시란 캐시를 구성하는 여러 캐시 노드(30)들 중에 데이터 분배가 알려져 있고 소프트웨어 애플리케이션(10) 계층에 있는 클라이언트 측에서 연산이 일어나는 것을 의미한다. 그 결과, 모든 캐시 노드(30)는 완전히 독립적이고 시스템의 스케일가능성은 실제 잠재적으로 제한되지 않는다. 그러나, 저장 계층에 새로운 캐시 노드(30)를 추가하는 것에 의해 더 많은 처리 능력을 실제 취득하는 것은 노드들에 균형잡힌 데이터 분배가 또한 유지되는 경우에만 달성가능하다. 이 분배를 실제 균형잡기 위해, 데이터는 키 특성에 기초하여 분배된다. 예를 들어, 항공편 지향 데이터는 항공편 수에 기초하여 분배된다. 예를 들어, 이용가능한 캐시 노드의 수 또는 분배 파라미터의 수의 변화 때문에 분배 변화를 트리거할 수 있는 임의의 변경은 또한 재분배가 일어나는 동안 전체 캐시 시스템을 온라인으로 유지하고 정상 상태에서 동작하게 유지하는 적절한 재분배 절차를 통해 지원된다. 이를 위해 2개의 캐시 구성에 대해 일시적인 듀얼-피드(dual-feed)가 본 발명의 이하 설명에서 차후에 설명된다. The architecture shown in FIG. 1 works with a cache of single-tier client-side distributed caches that supports full throughput and also greatly simplifies management of cache data consistency. The client-side distributed cache means that data distribution among the various cache nodes 30 that constitute the cache is known and operations are performed on the client side in the software application 10 layer. As a result, all of the cache nodes 30 are completely independent and the scalability of the system is not potentially potentially limited. However, actually acquiring more processing capability by adding a new cache node 30 to the storage layer is only achievable if balanced data distribution is also maintained at the nodes. To actually balance this distribution, the data is distributed based on the key characteristics. For example, flight-oriented data is distributed based on the number of flights. For example, any change that can trigger a change in distribution due to a change in the number of available cache nodes or the number of distribution parameters is also appropriate to keep the entire cache system online and remain operational during normal redistribution Redistribution procedures. To this end, a transient dual-feed for two cache configurations is described later in the description of the present invention.

본 발명의 데이터 저장 시스템(100)은 캐시와 데이터베이스 사이에 임의의 유형의 동기화 메커니즘을 요구하지 않는다. 캐시는 명시적인 방식으로 소프트웨어 애플리케이션(10)에 의해 사용되는데, 즉 동일한 유저 요청 동안, 예를 들어, 데이터베이스 또는 캐시에 기록하여야 할 때 2개의 데이터 소스, 즉 데이터베이스 또는 캐시 또는 이들 둘 모두를 사용하는 것은 소프트웨어 애플리케이션(10) 계층에 달려 있다. 이 접근법의 직접적인 효과는 데이터베이스가 캐시의 존재를 완전히 인식하지 못하고 본 발명의 데이터 구조에 캐시가 존재하는지 또는 부재(absence)하는지에 전혀 영향을 받지 않는다는 것이다. 그 반대도 또한 명백히 참이다: 캐시는 데이터베이스로부터 완전히 분리된다. 두 구조는 필요한 경우 완전히 독립적으로 전개될 수 있다.The data storage system 100 of the present invention does not require any type of synchronization mechanism between the cache and the database. The cache is used by the software application 10 in an explicit manner, i.e., during the same user request, for example when using two data sources, such as a database or a cache, or both, Is at the layer of the software application 10. The direct effect of this approach is that the database is not fully aware of the presence of the cache and is not at all affected by the presence or absence of a cache in the data structure of the present invention. The reverse is also true: the cache is completely separate from the database. Both structures can be deployed completely independently if necessary.

캐시 내 데이터 기록은 무효화 정책을 사용하지 않는 것이 필요하다. 모든 기록은 캐시 내 데이터를 바로 대체한다. 전체 데이터베이스 컨텐츠가 종국적으로 캐시에 맵핑되고 모든 이용가능한 캐시 노드(30)를 통해 분배될 때, 매우 높은 레벨의 동시 기록이 일어나는 경우에도 히트 비율(hit ratio)은 100%에 이른다.It is necessary to not use the invalidation policy to write data in the cache. Every record immediately replaces the data in the cache. The hit ratio reaches 100% even when a very high level of concurrent recording occurs when the entire database content is eventually mapped to the cache and distributed through all available cache nodes 30. [

캐시 데이터는 항상 유효한 것으로 고려될 수 있고 이 유효성을 체크하기 위해 여분의 공정이 필요치 않다. 실제, 모든 캐시 미검출은 미검출 값을 데이터베이스로부터 캐시로 추가하는 것을 트리거한다. 이것은 모두에 대해 한번 수행되어 데이터베이스에 최저 가능한 부하, 즉 검색할 데이터 개체마다 한번만 페치하는 것을 보장한다. 이것은 캐시가 동작하게 될 때, 예를 들어, 캐시 노드(30)의 추가 후 시스템의 전력 투입(power-on), 캐시 노드(30)의 실패, 유지보수 동작 후 등에 대부분 일어난다. 본 발명은 분배된 캐시 노드(30)에 전체 데이터베이스 컨텐츠를 수신할 공간이 충분한 것으로 가정한다. Cache data can always be considered valid and no extra processing is required to check this validity. In practice, not all cache misses triggers the addition of undetected values from the database to the cache. This is done once for all to ensure that the database is the lowest possible load, that is, fetch only once per data object to be retrieved. This is most likely to occur when the cache becomes operational, for example, power-on of the system after the addition of the cache node 30, failure of the cache node 30, maintenance operation, and the like. The present invention assumes that there is sufficient space in the distributed cache node 30 to receive the entire database content.

데이터베이스에 최종-유저에 의해 요청된 데이터의 부재가 또한 캐시에 레코드된다. 최종 유저에 의해 요청된 데이터가 캐시에서 발견되지도 않고 데이터베이스로부터 검색되지도 않는다면 이 데이터의 부재가 캐시에 레코드되어 그 다음 번에 캐시에 질문하여 대응하는 데이터의 페치가 데이터베이스로부터 시도되지 않게 하여 데이터베이스 부하를 더 제한한다. The absence of data requested by the end-user in the database is also recorded in the cache. If the data requested by the end user is neither found in the cache nor retrieved from the database, the absence of this data is recorded in the cache so that the next time the cache is queried and the fetching of the corresponding data is not attempted from the database, Limit the load further.

도 1에 설명된 아키텍처는 키-값 지향(key-value oriented)일 수 있는 임의의 유형의 데이터로 확장가능하다. 또한, 이 아키텍처는 키-값 지향일 수 있는 임의의 공정에 적용될 수 있다. 이 아키텍처는 특히 항공편 이용가능성을 체크하도록 고안된 임의의 공정에 적용될 수 있다. The architecture described in FIG. 1 is scalable to any type of data that may be key-value oriented. This architecture may also be applied to any process that may be key-value oriented. This architecture is particularly applicable to any process designed to check flight availability.

이하 도면은 데이터베이스와 캐시 사이에 소프트웨어 애플리케이션(10)에 의해 수행되어 캐시가 종국적으로 소프트웨어 애플리케이션(10)에 의해 생성된 전체 트래픽을 지원하여 모든 유저 요청을 서비스하는 동작을 설명한다. The following figure illustrates the operation performed by the software application 10 between the database and the cache to support all traffic generated by the software application 10, ultimately serving the user request.

이전에 도시된 바와 같이 시스템의 캐시 부분은 상당히 간단하고, 기본 원격 키/값 프로토콜을 제공하는 하나 이상의 독립적인 컴퓨터로 구성된다. 소프트웨어 애플리케이션(10)이 캐시를 업데이트하고, 데이터베이스로부터 캐시를 파퓰레이트(populate)하고, 캐시로부터 데이터를 검색하는 3개의 기본 동작이 캐시에 한정된다. 이들 동작은 다음과 같다: As previously shown, the cache portion of the system is fairly simple and consists of one or more independent computers that provide a basic remote key / value protocol. Three basic operations for the software application 10 to update the cache, populate the cache from the database, and retrieve data from the cache are limited to the cache. These operations are as follows:

설정(키, 값) : 키와 연관된 값을 캐시에 무제한 업데이트한다 Settings (key, value): Updates the value associated with the key to the cache indefinitely

추가(키, 값) : 키가 캐시에 아직 존재하지 않을 때 키와 연관된 값을 추가한다 Addition (key, value): adds the value associated with the key when the key does not already exist in the cache

취득(키) : 키와 연관된 값을 캐시로부터 리턴한다. Acquisition (key): Returns the value associated with the key from the cache.

본 발명은, 예상된 성능 레벨에 도달될 수 있는 한, 소프트웨어 애플리케이션(10)에 의해 실제 구현되는 방식에 어떤 가정도 하지 않는다. 유리하게는, 수 개의 기본 동작을 함께 송신하고 처리할 수 있게 하는 벌크 동작이 한정된다. The present invention makes no assumption as to how it is actually implemented by the software application 10, as long as the expected performance level can be reached. Advantageously, a bulk operation is defined that allows several basic operations to be transmitted and processed together.

시스템의 주요 부분은 모든 캐시 노드(30)에 대한 데이터 분배를 제어하는 소프트웨어 애플리케이션(10) 계층에 있다. 키/값 데이터는 캐시를 구성하는 노드들에 확산된다. 분배가 모든 노드에 걸쳐 가능한 한 균일하게 확산될 수 있도록 하기 위해 키의 특성이 추출되고 대응하는 캐시 노드(30)가 다음 수식으로 연산된다: The main part of the system resides in a layer of software applications 10 that controls the distribution of data to all cache nodes 30. The key / value data is spread to the nodes constituting the cache. The characteristics of the key are extracted and the corresponding cache node 30 is computed with the following formula so that the distribution can spread as uniformly as possible across all nodes:

노드_수 = 노드_수의 모듈로(MODULO)수로서의_키_특성 Number of nodes = number of nodes Number of modulo numbers

(node_number=key_property_as a_number MODULE the number_of_nodes)(node_number = key_property_as a_number MODULE the number_of_nodes)

항공편 지향 데이터는 연속적인 항공편 번호가 동일한 특성을 가지는 항공편에 통상 사용되는 특성을 사용한다. 이 경우에 항공편 번호는 분배를 위한 기초로 직접 사용된다. Flight orientation data uses characteristics commonly used for flights where successive flight numbers have the same characteristics. In this case, the flight number is used directly as the basis for the distribution.

항공편의 출발지와 목적지(O와 D)에 기초하여 항공편 지향 데이터에 대해 해쉬 값이 단독 O와 D 키에 대해 연산된다. A hash value is computed for the sole O and D keys for the flight-oriented data based on the origin and destination of the flight (O and D).

이미 언급된 바와 같이, 모든 이용가능한 노드에 걸쳐 데이터 분배를 균형잡는 것은 비제한된 스케일가능성을 달성하는 실제 키이다. As already mentioned, balancing the data distribution across all available nodes is an actual key that achieves unlimited scaleability.

도 2 및 도 3은 소프트웨어 애플리케이션(10)의 단독 제어 하에 캐시가 파퓰레이트되고 데이터베이스 컨텐츠와 일치하게 유지되는 방식을 도시한다. Figures 2 and 3 illustrate how the cache is populated and maintained consistent with the database content under the sole control of the software application 10.

도 2는 최종 유저에 의해 요청되고 캐시에는 아직 존재하지 않는 데이터를 소프트웨어 애플리케이션(10)에서 종국적으로 획득할 수 있게 하는 공정을 기술한다. 이런 상황은, 캐시가 파퓰레이트되고 있을 때, 예를 들어, 시스템의 전력 투입 후 또는 새로운 노드가 삽입되었거나 또는 제거되었을 때, 및 캐시 노드(30) 컨텐츠를 재균형잡는 것이 진행 중인 경우 대부분 발생한다. FIG. 2 describes a process that allows the software application 10 to ultimately obtain data requested by the end user and not yet in the cache. This situation occurs most often when the cache is being populated, for example, after powering on the system or when a new node is inserted or removed, and when rebalancing the cache node 30 content is in progress .

소프트웨어 애플리케이션(10)이 유저 요청에 대답할 필요가 있을 때, 제일 먼저 "취득" 동작을 통해 캐시가 판독된다(210). 항공사 상품 목록 데이터베이스의 예에서 이것은 좌석이 특정 날짜에 특정 항공편에서 특정 등급 등에서 이용가능한지를 찾기 위해 예를 들어 데이터베이스의 최종 유저에 의해 발행된 다수의 유저 요청 중 하나에 대답하는 것이다. 대응하는 데이터가 캐시에 존재하지 않는 경우, 즉, 일반적으로 대응하는 데이터가 이전의 판독에 의해 아직 캐시에 있지 않은 경우, 캐시는 "미검출"을 소프트웨어 애플리케이션(10)으로 리턴한다(220). 그렇지 않은 경우, 캐시로부터 소프트웨어 애플리케이션(10)으로 정보가 명백히 바로 리턴되고 "취득" 동작은 종료된다. 소프트웨어 애플리케이션(10)은 최종-유저의 유저 요청을 충족할 수 있다. 종국적으로, 이 애플리케이션은 질문된 데이터를 추가적인 데이터와 취합하여 이를 최종-유저로부터 온 요청에 응답하여 리턴한다. 추가적인 데이터는 일반적으로 유저 요청을 충족하도록 검색될 필요가 있을 수 있는 다른 데이터이다. 예를 들어, 일부 데이터는 캐시 노드로부터 취득될 수 있는 반면, 또한 동일한 유저 요청을 충족하는데 필요한 다른 데이터는 다른 캐시 노드로부터 취득되거나 및/또는 데이터베이스 시스템(20)으로부터 판독되어야 한다. When the software application 10 needs to answer a user request, the cache is first read 210 via a "get" operation. In an example of an airline merchandise listing database, this is to answer one of a number of user requests issued by the end user of the database, for example, in order to find out if the seat is available on a particular flight, If the corresponding data is not present in the cache, i.e., generally if the corresponding data is not already in the cache by a previous read, then the cache returns "not detected" to the software application 10 (220). Otherwise, the information is explicitly returned directly from the cache to the software application 10 and the "acquire" operation is terminated. The software application 10 may meet the user request of the end-user. Eventually, the application collects the queried data with additional data and returns it in response to a request from the end-user. The additional data is typically other data that may need to be retrieved to satisfy the user request. For example, some data may be retrieved from the cache node, while other data needed to satisfy the same user request must be retrieved from and / or read from the other cache node.

질문된 데이터가 캐시에 존재하지 않는 정보를 수신할 때, 소프트웨어 애플리케이션(10)은 "판독" 동작에서 데이터베이스를 조회한다(230). 미검출 정보가 소프트웨어 애플리케이션(10)으로 리턴된다(240). 데이터베이스로부터 데이터를 판독하는 것은 이전에 설명된 데이터베이스 전용 인터페이스(12)에서 일어난다. 이것은 본 발명의 데이터 저장 시스템(100)에 의해 사용되는 데이터베이스 관리 시스템(DBMS)으로 대응하는 질문을 소프트웨어 애플리케이션(10)으로부터 발행하는 것에 의해 수행된다.When the queried data receives information that is not present in the cache, the software application 10 queries the database in a "read" operation (230). The undetected information is returned to the software application 10 (240). Reading data from the database takes place in the database-only interface 12 described previously. This is done by issuing a corresponding question from the software application 10 to a database management system (DBMS) used by the data storage system 100 of the present invention.

캐시에 미검출된 데이터를 데이터베이스로부터 수신할 때 소프트웨어 애플리케이션(10)은 데이터를 캐시에 저장하는 "추가" 동작을 수행한다(250). 이 시간부터, 데이터는 캐시가 동작하는 한, 캐시에 존재하고(270) 재구성되지 않는다. 이 동작이 완료할 때 긍정적인 수신확인(positive acknowledgement: OK)(260)이 소프트웨어 애플리케이션(10)으로 리턴된다. When receiving data not found in the cache from the database, the software application 10 performs an "add " operation 250 to cache the data. From this time on, the data resides in the cache (270) and is not reconfigured as long as the cache is running. When this operation is complete, a positive acknowledgment (OK) 260 is returned to the software application 10.

이 공정은 캐시가 데이터베이스와 캐시 노드(30)에 동일하거나 일치하게 저장된 임의의 주어진 데이터에 대해 업되어 실행되는 동안 한번만 일어난다는 것이 주목된다. 이것은 데이터가 소프트웨어 애플리케이션(10)에 의해 요청되되 캐시에는 아직 존재하지 않는 제1 시간에 일어난다. 이후 대응하는 데이터는 예를 들어, 항공사 좌석이 판매된 것으로 인해 데이터베이스 컨텐츠가 변화될 필요가 있는 경우 업데이트될 수 있다. 이 경우에, 이후 설명되는 바와 같이, 소프트웨어 애플리케이션(10)은 캐시와 데이터베이스를 모두 업데이트하여 도 2의 공정을 재실행할 필요가 전혀 없다. It is noted that this process occurs only once, while the cache is up and running for any given data stored in the database and cache node 30, which is the same or consistent. This occurs at a first time when data is requested by the software application 10 but not yet in the cache. The corresponding data may then be updated, for example, if the database content needs to be changed due to the sale of the airline seat. In this case, as will be described later, the software application 10 does not need to update both the cache and the database to re-execute the process of FIG.

도 3은 소프트웨어 애플리케이션(10)으로부터 데이터베이스와 캐시를 동시에 업데이트하는 공정을 기술한다. 3 illustrates a process for simultaneously updating the database and the cache from the software application 10. [

데이터베이스와 캐시 컨텐츠를 항상 일치시켜 유지하기 위해, 소프트웨어 애플리케이션(10)은 항상 캐시와 데이터베이스를 모두 업데이트한다. 캐시의 업데이트는 이전에 설명된 "설정" 동작에서 수행된다(310). 동시에, 데이터베이스의 "업데이트"(305)는 사용 중인 DBMS의 질문 언어를 사용하여 수행된다. 이 업데이트는 동작이 애플리케이션에 의해 데이터베이스에 커미트(320)된 후에 유효하다. To keep the database and cache content consistent at all times, the software application 10 always updates both the cache and the database. The update of the cache is performed 310 in the previously described "set" operation. At the same time, the "update" 305 of the database is performed using the query language of the DBMS in use. This update is valid after the operation is committed 320 to the database by the application.

보다 정밀하게는, 이 설정은 업데이트가 데이터베이스에 수행될 때에는 수행하지 않으나 커미트(commit)가 수행될 때에는 수행된다. 애플리케이션은 커미트가 수행될 때까지 데이터를 메모리에 설정된 채 유지한다. 업데이트(305)와 설정(310) 사이에 다수의 단계들이 있을 수 있다. 그러나, 설정(310)과 커미트(320)는 일렬로 수행되도록 의도된다. More precisely, this setting is not performed when the update is performed on the database, but is performed when the commit is performed. The application keeps the data set in memory until a commit is performed. There may be a number of steps between update 305 and configuration 310. [ However, the settings 310 and the commit 320 are intended to be performed in series.

정상 상태에서, 즉, 시스템이 업되어 상당한 시간 기간 동안 실행한 후에는, 데이터베이스의 전체 컨텐츠가 종국적으로 모든 캐시 노드(30)로 와서 이들에 분배되고; 이후 업데이트 동작, 즉, 컨텐츠 업데이트, 삽입 및 삭제는 데이터베이스 인터페이스에 수행될 필요가 있는 유일한 동작이어서 데이터베이스 부하를 훨씬 더 낮춘다. 캐시에 있는 대응하는 데이터의 무효화(nullification)를 트리거하는 삭제 동작의 경우는 도 7에 설명된다. In a steady state, i. E. After the system is up and running for a considerable period of time, the entire contents of the database eventually come to all the cache nodes 30 and are distributed to them; Subsequent update operations, i.e., content update, insertion and deletion, are the only operations that need to be performed on the database interface, thus further reducing the database load. The case of a delete operation that triggers a nullification of the corresponding data in the cache is described in FIG.

또한, 도 3의 공정은 임의의 특정 조건이 충족되어야 캐시에 기록될 필요가 있는 것을 가정하지 않으므로 본 발명의 캐시는 판독 및 기록 동작으로부터 모두 파퓰레이트된다는 것이 주목되어야 한다. 이것은 판독만을 사용하여 캐시를 파퓰레이트하는 시스템에 비해 전력 투입 후 캐시 노드(30)의 파퓰레이트를 촉진하는데 상당히 기여한다. 이것은 이미 언급된 바와 같이 데이터베이스와 캐시에 저장된 데이터 개체가 모두 업데이트된 채 유지되기 때문에 가능하고 이에 의해 간단하게 수행되는 것으로서, 이는 소프트웨어 애플리케이션(10)으로 전달된 캐시 데이터 개체가 데이터베이스의 여러 부분으로부터 추출된 데이터를 해체하여 형성될 때 또는 일반적으로 캐시 저장 요구조건을 최소로 유지하려는 시도에서 데이터베이스와 캐시 컨텐츠가 상당히 상이할 수 있는 다른 캐시 솔루션에서는 가능하지 않은 것이다. It should also be noted that the process of FIG. 3 does not assume that any particular condition needs to be met in order to be written to the cache, so the cache of the present invention is both populated from read and write operations. This significantly contributes to promoting population of the cache node 30 after power-up compared to a system that populates the cache using read only. This is accomplished because it is possible and simple to do so because both the database and the data objects stored in the cache are kept updated, as already mentioned, because the cache data objects passed to the software application 10 are extracted from various parts of the database Is not possible in other cache solutions where the database and cache contents can be quite different in an attempt to disassemble the data or attempt to keep cache storage requirements to a minimum in general.

도 4는 데이터베이스의 동시 기록(예를 들어, 업데이트)이 소프트웨어 애플리케이션(10)에 의해 요청되어 실행을 간섭하는 특정 경우에 도 2의 공정을 기술한다. Figure 4 describes the process of Figure 2 in a particular case where concurrent writing (e.g., updating) of the database is requested by the software application 10 to interfere with execution.

도 2에 설명된 것과 동일한 방식으로 이 공정은 캐시로부터 데이터를 "취득"하는 것으로 시작하고(210) 이어서 데이터베이스로부터 미검출 데이터의 페치를 트리거하는 "미검출"(220)이 후속한다(230). 그러나, 미검출 데이터는 정상적으로 소프트웨어 애플리케이션(10)으로 리턴되지만(240), 동일한 데이터에 대한 기록 질문(410)이 또한 소프트웨어 애플리케이션(10)에 의해 수신된다. 이 기록은 도 3에 설명된 바와 같이 수행된다. 이 기록은 "설정" 동작(310)에서 캐시에 수행되고, "업데이트" 동작(305)에서 데이터베이스에 수행된다. 대응하는 데이터는 "설정"이 캐시로 발행될 때에는 바로 이용가능(420) 하게 되고, "커미트"(320)가 송신될 때에는 데이터베이스에서 이용가능하게 된다. 설정이 트리거되기 전에, 애플리케이션은 데이터를 메모리에 유지한다("메모리에 설정"). In the same manner as described in FIG. 2, the process begins with "fetching" 210 the data from the cache 210 followed by "not detected" 220 triggering fetching of non- . However, the undetected data is normally returned to the software application 10 (240), but the write query 410 for the same data is also received by the software application 10. This recording is performed as described in Fig. This recording is performed in the cache in the "set" operation 310 and in the database in the "update" The corresponding data is immediately available 420 when the "set" is issued to the cache, and becomes available in the database when the "commit" Before the setting is triggered, the application keeps the data in memory ("set to memory").

이후, 이 특정 경우에, 캐시 컨텐츠는 데이터베이스로부터 미검출 데이터의 페치(230)로 인해 초래되는 후속 "추가"(250)에 의해 더 업데이트될 필요가 없는데 그 이유는 이 미검출 데이터의 페치가 평균 시간에 업데이트되었기 때문이다. 이후 "추가"(252)는 실제로 중지된다. 캐시의 업데이트가 "추가" 동작에 의해 실제 수행되지 않았다는 것을 소프트웨어 애플리케이션(10)에 알게 하는 부정적인 수신확인(negative acknowledgement: KO)(262)이 리턴된다. Thereafter, in this particular case, the cache content does not need to be updated further by a subsequent "add" 250 resulting from the fetch 230 of undetected data from the database because the fetch of non- It was updated in time. Then the "add" 252 is actually stopped. A negative acknowledgment (KO) 262 is returned to inform the software application 10 that the update of the cache was not actually performed by an "add" operation.

따라서, 데이터베이스에서 판독된 데이터를 캐시에 업데이트하기 위해, 본 발명은 추가 커맨드를 사용하여 데이터베이스에 있는 데이터를 록킹할 필요 없이 캐시에 데이터를 송신할 수 있다. 실제, 데이터를 추가하려고 시도할 때 이 데이터가 캐시에 여전히 없는 경우, 이 데이터는 효과적으로 추가될 수 있다. 캐시가 업데이트 공정에 의해 그 동안 업데이트되었다면, 추가가 실패할 수 있으나 이것은 예상된다: 업데이트 공정은 데이터베이스를 록킹하여 이 키에 대한 업데이트를 우수(primacy)하게 하여, 그리하여 이것이 캐시에 있는 것이 일반적이다. Thus, in order to update the data read from the database to the cache, the present invention can send data to the cache without locking the data in the database using additional commands. In fact, if this data is still not in the cache when you try to add data, this data can be added effectively. If the cache has been updated in the meantime by the update process, the addition may fail, but this is expected: the update process locks the database and makes the update to this key primacy, so that it is generally in the cache.

본 발명의 이들 특징은, 특히 데이터가 데이터베이스에서 한 번을 초과하여 판독되지 않아서 데이터베이스에 최저 가능한 부하를 야기하는 것을 여전히 보장하면서, 데이터베이스 시스템과 캐시가 서로 록킹하거나 서로의 성능에 영향을 미치지 않아서 업데이트 공정과 매우 원활한 통합을 가능하게 한다. These features of the present invention are particularly advantageous because they allow the database system and cache to lock against each other or affect each other's performance while still ensuring that the data is not read more than once in the database, It enables very smooth integration with the process.

도 5는 소프트웨어 애플리케이션(10)에 의해 데이터베이스와 캐시에 동시에 수행된 데이터 업데이트의 타이밍에 대한 추가적인 상세를 제공한다. 5 provides additional details on the timing of data updates performed simultaneously by the software application 10 on the database and the cache.

소프트웨어 애플리케이션(10)은 현재 저장된 값을 검색하는 대응하는 질문(510)을 데이터베이스에 발행하는 것으로 업데이트 트랜잭션을 시작한다. 동시에, 다른 소프트웨어 애플리케이션(10)으로부터 동시 업데이트가 발생하는 것을 방지하기 위해, 데이터베이스 관리 시스템(DBMS)은 현재 저장된 값을 록킹한다. 소프트웨어 애플리케이션 계층에서, 데이터는 소프트웨어 애플리케이션(10)에 의해 처리된다. 데이터가 DBMS에 의해 이미 업데이트(530)될 준비가 될 때 소프트웨어 애플리케이션(10)의 버퍼 캐시(540)에 업데이트가 또한 수행되어 캐시에 저장되거나 전달될 새로운 데이터를 보유한다. The software application 10 initiates an update transaction by issuing a corresponding query 510 to the database that retrieves the currently stored value. At the same time, a database management system (DBMS) locks the currently stored value to prevent simultaneous updates from occurring from other software applications 10. At the software application layer, the data is processed by the software application 10. An update is also performed in the buffer cache 540 of the software application 10 when the data is ready to be updated 530 already by the DBMS to hold new data to be stored or transferred to the cache.

이후, 소프트웨어 애플리케이션(10)은 변경(550)을 커미트할 수 있는데 이는 "설정" 동작에서 캐시(552)에 바로 수행되고 또 데이터베이스(554)로 커미트될 수 있다. 이에 따라 새로운 데이터는 데이터베이스에서 실제 커미트되어 이용가능하기(558) 얼마 전에(556) 캐시에서 먼저 이용가능하다는 것을 알 수 있다. 참조 번호(556)는 데이터베이스 시스템(20)에서는 아직 이용가능하지 않지만 업데이트가 캐시에서 최종 유저에 이용가능하게 되는 시간 프레임을 도시한다. The software application 10 may then commit the change 550 which may be performed directly in the cache 552 and committed to the database 554 in the "set" operation. Thus, it can be seen that new data is first available in the cache 556 (556) before being actually committed in the database (558). Reference numeral 556 denotes a time frame in which the update is not yet available in the database system 20 but is made available to the final user in the cache.

어떤 이유로, 예를 들어, 하드웨어 및/또는 소프트웨어 실패 때문에, 캐시에서 이전의 기록 동작을 정상적으로 완료하기 위한 커미트가 실패하면, 즉, "설정" 동작(552)은 롤백(rolled back)되어 캐시 컨텐츠가 변경 없이 남아 있게 된다. 그리하여, 커미트가 실패하면, "커미트 KO"(560)가 애플리케이션에 제기되고 이 애플리케이션은 삭제(562)를 캐시로 발행하여 추가된 데이터를 제거한다. 그 결과, 잘못된 값이 평균 시간(564) 동안 캐시에 존재한다. If for some reason the commit to successfully complete the previous write operation in the cache fails due to hardware and / or software failure, for example, the "set" operation 552 is rolled back, It will remain unchanged. Thus, if the commit fails, a "commit KO" 560 is raised to the application and the application issues a delete 562 to the cache to remove the added data. As a result, the erroneous value is present in the cache for a mean time 564.

따라서 최고 성능의 비 데이터베이스와 관련된 및 영향을 받은 데이터 품질이 캐시에 제공되고: 업데이트는 "커미트 요청" 데이터로 기록 선행 커미트(write ahead commit)를 사용하여 캐시로 전파된다. 캐시된 데이터에 대해 연기된 제약이 금지되면, 이것은 추가 비용 없이, 특히 통상적인 2 단계의 커미트 아키텍처의 매우 높은 비용 없이, 캐시에 있는 데이터를 데이터베이스보다 미리 "나쁘게(at worse)"만든다. 이러한 품질은 이용가능성 요청에 대한 데이터 품질 요구조건을 충족시키고 심지어 최종 클라이언트 관점으로부터 유리한 것으로 고려될 수 있다.Thus, the highest quality non-database related and affected data quality is provided to the cache: the update is propagated to the cache using a write ahead commit to the "commit request" data. If a delayed constraint on cached data is prohibited, this makes the data in the cache "at worse" ahead of the database, at no extra cost, especially at a very high cost of a conventional two-phase commit architecture. This quality meets the data quality requirements for availability requests and can even be considered advantageous from the end client's perspective.

도 6은 질문된 데이터가 캐시에도 존재하지 않고 또 데이터베이스에도 존재하지 않는 경우를 기술한다. 이것은 최종-유저가 데이터베이스에 보유하지 않는 정보를 요청하는 경우를 포함한다. 6 illustrates a case where the questioned data does not exist in the cache nor in the database. This includes cases where the end-user requests information that the user does not have in the database.

이러한 상황이 발생할 때, 데이터베이스의 추가적인 조회를 방지하기 위해, 대응하는 데이터의 부재가 또한 캐시에 레코드된다. 이후, 그 다음 번에 캐시가 소프트웨어 애플리케이션(10)으로부터 조회될 때 질문된 데이터가 데이터베이스에 존재하지 않는다는 정보가 캐시 자체에 의해 직접 전달되어 데이터베이스 부하를 더 감소시킨다. When such a situation occurs, the absence of corresponding data is also recorded in the cache to prevent further queries of the database. Then, the next time the cache is queried from the software application 10, information that the queried data does not exist in the database is passed directly by the cache itself, further reducing the database load.

공정은 도 2에 설명된 것과 유사하다. 캐시에 발행된 "취득" 동작(210)이 "미검출"(220)을 리턴한 후, 데이터베이스에서 대응하는 데이터의 판독(230)이 또한 소프트웨어 애플리케이션(10)으로 데이터베이스 "미검출"(640)을 리턴한다. 이후, 데이터의 부재가 캐시에 추가(650)된다. 데이터와 같이, 데이터의 부재는 캐시에 비러 이용가능하게(270) 되고 이 캐시는 또한 수신확인(260)을 소프트웨어 애플리케이션(10)으로 리턴한다. The process is similar to that described in Fig. The read 230 of the corresponding data in the database is also returned to the software application 10 after the "fetch" operation 210 issued to the cache returns "not detected" ≪ / RTI > Thereafter, the absence of data is added 650 to the cache. As with the data, the absence of data is available 270 to the cache, which in turn returns an acknowledgment 260 to the software application 10.

비 제한적인 실시예에 따라, 각 데이터는 헤더와 연관되어 레코드를 형성하는데, 여기서 이 헤더는 컨텐츠가 데이터베이스 시스템(20)에서 미검출되었는지 여부를 나타낸다. 따라서, 레코드의 헤더만을 판독하면 데이터베이스 시스템을 페치할 필요가 있는지 여부를 알 수 있다. 대안적인 실시예에 따라, 캐시 노드는 데이터와 연관된 특정 값을 저장하는데, 여기서 상기 특정 값은 데이터가 데이터베이스에 존재하지 않는 것을 나타낸다. 따라서, 레코드의 값만을 판독하면 데이터베이스 시스템을 페치할 필요가 있는지 여부를 알 수 있다. According to a non-limiting embodiment, each data is associated with a header to form a record, which indicates whether the content has not been detected in the database system 20. Thus, reading only the header of the record can tell if it is necessary to fetch the database system. According to an alternative embodiment, the cache node stores a particular value associated with the data, where the particular value indicates that the data does not exist in the database. Thus, reading only the value of a record will know if it is necessary to fetch the database system.

도 7은 애플리케이션으로부터 특정 업데이트 동작이 데이터베이스로부터 데이터를 삭제(705)하는 것인 도 3에 이미 언급된 경우를 도시한다. 이 동작은 삭제된 데이터가 캐시로부터 실제 제거되지 않고 "데이터의 부재"의 지시자로 대체된 것을 제외하고는 도 3에 설명된 바와 같이 전체적으로 수행된다. 삭제가 애플리케이션에 의해 데이터베이스에 커미트(320)될 때 대응하는 정보는 특정 "설정" 동작(310)에서 캐시에 저장된다. "데이터의 부재"는 즉시 이용가능(330) 하게 된다. 그리하여, 이전에 설명된 바와 같이, 캐시가 차후에 조회되면, 이 캐시는 요청된 데이터가 더 이상 캐시에도 존재하지 않고 데이터베이스에도 존재하지 않는다는 정보를 직접 제공할 수 있다.
FIG. 7 shows a case already mentioned in FIG. 3 where a specific update operation from an application is to delete (705) data from a database. This operation is generally performed as described in FIG. 3, except that the erased data is not actually removed from the cache and replaced by an indication of "Absence of data ". When the deletion is committed 320 to the database by the application, the corresponding information is stored in the cache in a particular "set""Absence of data" is immediately available (330). Thus, as described previously, if a cache is later retrieved, this cache can directly provide information that the requested data is no longer in the cache nor in the database.

이하는, 예를 들어, 트래픽 증가에 대처하기 위해 본 발명의 데이터베이스 시스템의 구성을 변경하는데 필요한 경우를 설명한다. 여분의 캐시 노드를 추가하여 도 1에 도시된 시스템 구성을 확장하여 더 많은 캐시 저장 용량을 제공하고 더 많은 수의 처리 노드를 통해 증가하는 트래픽을 분배할 수 있다. 그러나, 더 많은 수의 노드를 가지고, 일반적으로 말하면, 능동 노드의 수가 변경되어야 할 때마다, 전체 트래픽이 새로운 전체 노드 세트에 걸쳐 실제 균일하게 확산될 수 있도록 노드에서 데이터를 고유하게 어드레스하는 키가 재연산되어야 한다. The following describes, for example, a case necessary for changing the configuration of the database system of the present invention to cope with traffic increase. Additional cache nodes may be added to extend the system configuration shown in FIG. 1 to provide more cache storage capacity and distribute increased traffic over a larger number of processing nodes. However, there is a key to uniquely address data at a node so that, with a larger number of nodes, generally speaking, whenever the number of active nodes is to be changed, the entire traffic can be actually uniformly spread across a whole new set of nodes Must be re-computed.

본 발명은 데이터베이스와 캐시로부터 동일하게 저장되고 검색되는 데이터 개체로부터 키를 연산하는 방식을 임의의 특정 방식으로 가정하지 않는다. 대부분, 특정 애플리케이션에 의해 처리되는 데이터의 유형에 따라, 일부 해쉬 함수가 사용되고 노드 어드레스가 해쉬 키 모듈로(modulo) 노드의 수를 추가적으로 연산하는 것에 의해 해쉬 키로부터 바로 유도된다. 그리하여, 노드의 수가 변경된 경우, 새로운 구성의 상이한 노드에서 특정 데이터 개체를 검색하여 찾을 필요가 있기 때문에 상이한 결과가 획득된다. 문제는 구성 업데이트가 원자적(atomic)이 아니고 데이터베이스 시스템이 완전히 동작하는 동안 투명하게 수행되어야 한다는 것으로부터 발생한다. 모든 캐시 클라이언트들이 동시에 새로운 구성을 인식하게 되는 것은 아니다. 이것은 일부 데이터 기록이 새로운 구성에 기초하여 수행될 수 있는 반면 다른 데이터 기록은 여전히 오래된(old) 구성을 사용할 수 있다는 것을 의미한다. 그 결과 캐시와 데이터베이스 사이에 데이터 세트의 불일치가 있을 수 있다. The present invention does not assume any particular way of computing the keys from the data objects that are stored and retrieved identically from the database and the cache. For the most part, depending on the type of data being processed by a particular application, some hash functions are used and the node address is derived directly from the hash key by additionally computing the number of nodes with a hash key module. Thus, when the number of nodes is changed, different results are obtained because it is necessary to search for and retrieve specific data objects at different nodes of the new configuration. The problem arises from the fact that configuration updates are not atomic and must be performed transparently while the database system is fully operational. Not all cache clients are aware of the new configuration at the same time. This means that some data recording can be performed based on the new configuration while another data recording still uses the old configuration. As a result, there may be inconsistencies in the dataset between the cache and the database.

본 발명은 "듀얼-피드"라고 언급되는 절차를 인에이블하는 것에 의해 이것을 처리한다. 듀얼 피드는 통상적으로 캐시에 사용되는 것에 더하여 하나의 여분의 구성, 그리하여 "듀얼-피드"라는 이름을 유지하는 것에 있다. 여분의 구성은 디폴트로 사용되는 것이 아니고 구성 변경시에 활성화될 수 있다. 구성이 활성화될 때, 모든 기록 동작은 표준 구성과 듀얼-피드 구성으로 송신된다. 존재 시간(time-to-live: TTL)은 캐시 내 각 항목과 연관된 특성이다. 이름이 암시하는 바와 같이, 이 이름은 유효한 시간 기간 항목에 대응한다. 이 시간 기간이 만료하면, 이 항목은 캐시로부터 더 이상 검색될 수 없어서, 데이터가 미검출된 것처럼 캐시 미검출을 초래한다. 이것은 구성에 의해 설정될 수 있다: 표준 구성을 위한 것과 듀얼-피드 구성을 위한 것으로 설정될 수 있다. 존재 시간이 설정되지 않은 경우, 이 항목은 만료되지 않는다. The present invention addresses this by enabling a procedure referred to as "dual-feed ". Dual feeds are usually one extra configuration in addition to being used in the cache, thus keeping the name "dual-feed". The extra configuration is not used by default and can be activated at configuration changes. When a configuration is activated, all write operations are sent in a standard configuration and a dual-feed configuration. A time-to-live (TTL) is a characteristic associated with each item in the cache. As the name implies, this name corresponds to a valid time period entry. When this time period expires, this item can no longer be retrieved from the cache, resulting in cache miss detection as if no data were detected. This can be set by configuration: for standard configuration and for dual-feed configuration. If the presence time is not set, this item does not expire.

듀얼-피드 구성의 활성화는 원자적이 아니므로, 이 듀얼 피드는 짧은 존재 시간에 제일 먼저 활성화되어야 한다. 듀얼 피드 구성이 완전히 활성화되면, 존재 시간은 제거될 수 있다. 일단 존재 시간이 만료된 경우에만 표준 구성과 듀얼-피드 구성이 교환(swapped)될 수 있다. 구성 변경이 종료되면, 듀얼 피드는 비활성화될 수 있다. 구성이 전파되고 있는 단계(듀얼-피드의 활성화/비활성화) 동안, 일부 "무효" 데이터가 판독되지 않는 곳에서만 기록될 수 있다. 따라서, 절차는 다음과 같다: Since the activation of a dual-feed configuration is not atomic, this dual feed must first be activated in the short-lived time. Once the dual feed configuration is fully activated, the time of presence can be eliminated. The standard configuration and dual-feed configuration can only be swapped once the presence time has expired. When the configuration change is finished, the dual feed can be deactivated. During the phase in which the configuration is being propagated (dual-feed activation / deactivation), only some "invalid" data can be recorded where it is not read. Thus, the procedure is as follows:

- 짧은 TTL에서 듀얼-피드 구성을 생성한다- Create a dual-feed configuration in short TTL

- 듀얼-피드 구성의 활성화하고, 그 전파를 기다린다 - Activate the dual-feed configuration and wait for its propagation

- 듀얼-피드 구성으로부터 짧은 TTL을 제거한다 - Remove short TTL from dual-feed configuration

- 표준 구성과 듀얼-피드 구성을 교환하고, 그 전파를 기다린다 - Exchange standard configuration and dual-feed configuration and wait for its propagation

- 듀얼-피드를 비활성화한다- Disable dual-feed

온라인 방식으로 시스템 상의 임의의 변경을 허용하는 절차 세트는 아래에 설명된다. A set of procedures that allow any change in the system on-line is described below.

제안된 아키텍처는 전체 시스템이 캐시가 없으면 적절히 동작하는 위치에 차후 있지 않을 수 있는 스케일가능성을 제안한다. 이러한 상황을 처리하기 위해, 본 발명의 일 실시예에 따라, 모든 유지보수 동작은 온라인으로 수행되는 것을 의미하고, 한번에 기껏 하나의 노드(또는 트래픽의 등가 비율)에 영향을 미처 (예를 들어, 하나씩 이루어진 캐시 노드 업그레이드 또는 대체하거나, 듀얼 피드 메커니즘을 사용하여 수행된 글로벌 캐시 변경을 수행하여) 데이터베이스에 대한 충격을 저하시키는 것이 제안된다.The proposed architecture suggests a scalability that the entire system may not be in a position to operate properly without a cache. To address this situation, according to one embodiment of the present invention, all maintenance operations are performed on-line, and affect at most one node (or equivalence ratio of traffic) at a time (e. G. It is proposed to reduce the impact on the database by upgrading or replacing cache nodes one by one, or by performing global cache changes performed using a dual feed mechanism).

- 캐시 노드 업그레이드 또는 대체는 하나씩 이루어진다. 시스템은 바람직하게는 데이터베이스를 사용하여 이 노드에 의해 호스팅되었어야 하는 데이터를 검색한다. - Cache node upgrades or replacements are done one by one. The system preferably uses a database to retrieve data that should have been hosted by this node.

- 글로벌 캐시 변경, 일반적으로, 이전의 문단에서 설명된 듀얼 피드 메커니즘을 사용하여 수행되는 글로벌 분배를 크게 변경시킬 수 있는 복수의 캐시 노드를 추가하거나 제거하거나 변경한다.
Global cache changes, in general, add, remove or change multiple cache nodes that can significantly change the global distribution performed using the dual feed mechanism described in the previous paragraph.

상기 상세한 설명으로부터 본 발명은, 비-엄격히 말하면, ACID에 순응하면서도 매우 스케일가능하고, 데이터베이스에 영향을 주지 않아, 100% 히트 비율을 허용하고, 무엇보다도 특히 데이터 품질 요구를 완전히 충족시킬 수 있는 메커니즘으로 인해 캐시와 데이터베이스 사이에 데이터를 일치시킬 수 있다는 것이 명백히 이해된다. 나아가, 본 발명은 캐시의 오프로드 효과로부터 여전히 이익을 얻으면서도, 일반적으로 단일 데이터(unitary data)마다 초당 수 십 개의 기록까지 매우 동적으로 데이터를 캐싱할 수 있다. From the above detailed description, the present invention provides a mechanism that is non-strictly compliant with ACID, yet very scalable, does not affect the database, allows a 100% hit ratio, and above all, It is clearly understood that data can be matched between the cache and the database. Furthermore, while still benefiting from the offloading effect of the cache, the present invention is capable of caching data very dynamically, typically up to several dozen records per second per unitary data.

Claims (25)

데이터 저장 시스템에서 데이터를 저장하고 검색(retrieve)하는 방법에 있어서,
상기 데이터 저장 시스템은, 중간 계층(middle tier)을 구현하는 적어도 하나의 컴퓨터 - 상기 적어도 하나의 컴퓨터는, 적어도 하나의 데이터 프로세서와, 상기 적어도 하나의 데이터 프로세서에 의해 상기 적어도 하나의 컴퓨터 상에서 실행되고 있는 소프트웨어 애플리케이션을 포함함 - 를 포함하고,
상기 데이터 저장 시스템은, 저장 계층(storage tier)을 구현하는 복수의 캐시 노드 및 하나 이상의 데이터베이스 시스템을 더 포함하고,
상기 중간 계층은, 클라이언트 계층과 상기 데이터 저장 시스템의 저장 계층을 인터페이싱하도록 구성되고,
상기 방법은,
상기 중간 계층에서의 상기 적어도 하나의 컴퓨터에서,
상기 클라이언트 계층의 유저 장치로부터 데이터의 적어도 하나의 판독(reading)을 요청하는 제1 유저 요청을 수신하는 것에 응답하여, 상기 복수의 캐시 노드에만 판독 질의(read query)을 송신하는 단계와,
상기 판독 질의에 응답하여 적어도 하나의 캐시 노드로부터 제1 질의 응답 데이터(queried data)를 수신하는 것에 응답하여, 상기 적어도 하나의 데이터 프로세서로, 상기 제1 질의 응답 데이터를 사용하여 상기 제1 유저 요청을 처리하는 단계와,
상기 판독 질의에 응답하여 모든 캐시 노드로부터 미검출(miss)을 수신하는 것에 응답하여, 상기 적어도 하나의 데이터 프로세서로, 상기 제1 유저 요청에 기초하여 상기 하나 이상의 데이터베이스 시스템을 페치하는(fetching) 단계와,
상기 페치하는 것의 결과로서 상기 하나 이상의 데이터베이스 시스템으로부터 제2 질의 응답 데이터를 검색하는 것에 응답하여, 상기 하나 이상의 데이터베이스 시스템으로부터의 상기 제2 질의 응답 데이터를 사용하여 상기 제1 유저 요청을 처리하고, 상기 적어도 하나의 캐시 노드에 상기 제2 질의 응답 데이터를 추가하라는 명령과 상기 제2 질의 응답 데이터를 상기 적어도 하나의 캐시 노드에 송신함으로써, 상기 미검출된 판독 질의에 응답하여 상기 하나 이상의 데이터베이스 시스템으로부터 상기 적어도 하나의 캐시 노드로 상기 제2 질의 응답 데이터를 파퓰레이트하는(populate) 단계와,
상기 하나 이상의 데이터베이스 시스템으로부터 상기 제2 질의 응답 데이터를 페치하는 것과 동시에 업데이트된 데이터의 적어도 하나의 기록(writing)을 요청하는 제2 유저 요청을 수신하는 것에 응답하여, 상기 업데이트된 데이터로 상기 하나 이상의 데이터베이스 시스템을 기록하기 위한 명령을 송신하고, 상기 업데이트된 데이터로 상기 적어도 하나의 캐시 노드를 동시에 기록하기 위한 명령을 송신함으로써, 그에 의해 상기 데이터 저장 시스템의 각 기록 질의(write query)를 상기 복수의 캐시 노드에 파퓰레이트하고, 상기 복수의 캐시 노드에 상기 업데이트된 데이터가 저장되도록, 상기 적어도 하나의 캐시 노드에의 상기 제2 질의 응답 데이터의 후속 추가를 중지하는(aborting) 단계를 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
A method for storing and retrieving data in a data storage system,
The data storage system comprising at least one computer implementing a middle tier, the at least one computer comprising: at least one data processor; and at least one data processor running on the at least one computer Including a software application,
The data storage system further includes a plurality of cache nodes and one or more database systems that implement a storage tier,
Wherein the intermediate layer is configured to interface a client layer and a storage layer of the data storage system,
The method comprises:
At the at least one computer in the middle layer,
Sending a read query to the plurality of cache nodes in response to receiving a first user request to request at least one reading of data from a user device of the client layer;
Responsive to receiving the first queried data from at least one cache node in response to the read query, to the at least one data processor using the first query response data to retrieve the first user request , ≪ / RTI >
Fetching the one or more database systems based on the first user request to the at least one data processor in response to receiving a miss from all cache nodes in response to the read query; Wow,
Processing the first user request using the second query response data from the one or more database systems in response to retrieving second query response data from the one or more database systems as a result of the fetching, Receiving from the one or more database systems in response to the undetected read query a command to add the second query response data to at least one cache node and sending the second query response data to the at least one cache node, Populating the second query response data with at least one cache node;
Responsive to receiving a second user request to fetch at least one of the updated data at the same time as fetching the second question and answer data from the one or more database systems, Sending a command to write a database system and sending a command to simultaneously write the at least one cache node with the updated data thereby causing each write query of the data storage system to be written to the plurality of And aborting subsequent additions of the second query response data to the at least one cache node such that the updated data is stored in the plurality of cache nodes.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 제2 유저 요청은, 상기 데이터베이스 시스템에 데이터를 추가하는 것, 업데이트하는 것, 및 삭제하는 것 중 적어도 하나를 포함하는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the second user request comprises at least one of adding, updating and deleting data to the database system.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 하나 이상의 데이터베이스 시스템으로부터 상기 적어도 하나의 캐시 노드로 상기 제2 질의 응답 데이터를 성공적으로 추가하는 것을 완료했을 때 긍정적인 수신확인(positive acknowledgement)을 수신하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Further comprising receiving a positive acknowledgment when successfully completing adding the second query response data from the one or more database systems to the at least one cache node.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 중간 계층의 상기 적어도 하나의 컴퓨터는, 제1 전용 인터페이스 상에서 상기 하나 이상의 데이터베이스 시스템과 독립적으로 인터페이싱하고,
상기 중간 계층의 상기 적어도 하나의 컴퓨터는, 제2 전용 인터페이스 상에서 상기 복수의 캐시 노드와 인터페이싱하는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the at least one computer in the middle layer interfaces independently with the one or more database systems on a first dedicated interface,
Wherein the at least one computer in the middle layer interfaces with the plurality of cache nodes on a second dedicated interface.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 복수의 캐시 노드의 데이터 모델과 상기 하나 이상의 데이터베이스의 데이터 모델은, 캐시 노드와 데이터베이스 데이터에 액세스하기 위해 동일한 어드레스 키들이 유도될 수 있도록, 일관된(consistent) 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the data model of the plurality of cache nodes and the data model of the one or more databases are consistent so that identical address keys can be derived to access the cache nodes and database data.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 중간 계층의 상기 적어도 하나의 컴퓨터는, 여행 제공자의 인벤토리 시스템인 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the at least one computer of the middle layer is an inventory system of a travel provider,
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 제1 유저 요청은, 여행사, 온라인 여행사, 온라인 고객 중 적어도 하나에 의해 송신되는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the first user request is sent by at least one of a travel agent, an online travel agent,
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 하나 이상의 데이터베이스 시스템에서의 데이터의 기록을 위한 명령과 상기 적어도 하나의 캐시 노드를 동시에 기록하기 위한 명령을 송신하는 것에 응답하여,
상기 기록이 적용되는 현재 저장된 데이터를 상기 하나 이상의 데이터베이스 시스템으로부터 검색하고, 상기 현재 저장된 데이터를 록킹(locking)하는 단계와,
저장될 새로운 데이터를 상기 하나 이상의 데이터베이스 시스템에 기록하는 단계와,
상기 저장될 새로운 데이터를 일시적으로 유지하기 위해 상기 중간 계층의 상기 적어도 하나의 컴퓨터의 캐시 버퍼에 기록하는 단계와,
상기 저장될 새로운 데이터를 상기 적어도 하나의 캐시 노드로 포워딩하고 설정하는 단계와,
상기 하나 이상의 데이터베이스 시스템에 트랜잭션(transaction)을 커미트(commit)하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
In response to transmitting an instruction for writing data in the one or more database systems and an instruction for simultaneously writing the at least one cache node,
Retrieving currently stored data to which the record is applied from the one or more database systems and locking the currently stored data;
Writing new data to be stored to the one or more database systems;
Writing to the cache buffer of the at least one computer of the intermediate layer to temporarily hold new data to be stored;
Forwarding and setting new data to be stored to the at least one cache node;
Further comprising committing a transaction to the one or more database systems.
A method for storing and retrieving data in a data storage system.
청구항 9은(는) 설정등록료 납부시 포기되었습니다.Claim 9 has been abandoned due to the setting registration fee. 제8항에 있어서,
상기 커미트가 실패하는 것에 응답하여, 상기 적어도 하나의 캐시 노드에서 상기 새로운 데이터를 삭제하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
9. The method of claim 8,
Further comprising, in response to the commit failing, deleting the new data at the at least one cache node.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 복수의 캐시 노드 중에서, 상기 제2 질의 응답 데이터를 추가하기 위한 명령 또는 상기 업데이트된 데이터로 상기 적어도 하나의 캐시 노드를 기록하기 위한 명령이 송신되는 상기 적어도 하나의 캐시 노드를 결정하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Determining the at least one cache node to which the second query response data is to be added or the instruction to write the at least one cache node to the updated data is transmitted from among the plurality of cache nodes Including,
A method for storing and retrieving data in a data storage system.
청구항 11은(는) 설정등록료 납부시 포기되었습니다.Claim 11 has been abandoned due to the set registration fee. 제10항에 있어서,
상기 복수의 캐시 노드 중에서의 상기 적어도 하나의 캐시 노드는, 부하 균형(load balancing)에 기초하여 결정되는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
11. The method of claim 10,
Wherein the at least one cache node among the plurality of cache nodes is determined based on load balancing.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
하나 이상의 데이터베이스 시스템이 상기 제1 유저 요청의 요청된 데이터에 연관된 미검출(miss)을 리턴(return)하는 것에 응답하여, 부재 데이터(data of absence)가 모든 후속 판독 질의에 대하여 즉시 이용가능하게 됨으로써, 상기 제1 유저 요청의 요청된 데이터를 검색하기 위한 상기 하나 이상의 데이터베이스 시스템의 후속 페치를 회피하도록, 상기 적어도 하나의 캐시 노드로의 추가를 위한 상기 제1 유저 요청에 대응하는 상기 부재 데이터를 상기 적어도 하나의 캐시 노드로 송신하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
In response to one or more database systems returning a miss associated with the requested data of the first user request, the data of absence is immediately available for all subsequent read queries To avoid the subsequent fetch of the one or more database systems to retrieve the requested data of the first user request, and to store the member data corresponding to the first user request for addition to the at least one cache node To at least one cache node,
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 복수의 캐시 노드 각각은 헤더(header)를 포함하는 레코드(record)를 저장하고,
상기 적어도 하나의 캐시 노드의 헤더는, 상기 요청된 데이터가 상기 적어도 하나의 데이터베이스 시스템에서 미검출된 것 또는 상기 요청된 데이터의 값이 상기 요청된 부재 데이터를 나타내는 값으로 설정된다는 것을 나타내는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein each of the plurality of cache nodes stores a record including a header,
Wherein the header of the at least one cache node indicates that the requested data is not detected in the at least one database system or that the value of the requested data is set to a value representing the requested member data.
A method for storing and retrieving data in a data storage system.
제1항에 있어서,
상기 복수의 캐시 노드의 레코드와 상기 하나 이상의 데이터베이스 시스템의 레코드는 상기 복수의 캐시 노드와 상기 하나 이상의 데이터베이스 시스템의 관련된 레코드가 일관되게 어드레스되도록 저장되는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
The method according to claim 1,
Wherein the records of the plurality of cache nodes and the records of the one or more database systems are stored such that the associated records of the plurality of cache nodes and the one or more database systems are addressed consistently.
A method for storing and retrieving data in a data storage system.
청구항 15은(는) 설정등록료 납부시 포기되었습니다.Claim 15 is abandoned in the setting registration fee payment. 제14항에 있어서,
상기 레코드와 연관된 키(key)는 상기 하나 이상의 데이터베이스 시스템에 저장된 레코드가 록킹되게 하는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
15. The method of claim 14,
Wherein a key associated with the record causes a record stored in the one or more database systems to be locked.
A method for storing and retrieving data in a data storage system.
청구항 16은(는) 설정등록료 납부시 포기되었습니다.Claim 16 has been abandoned due to the setting registration fee. 제14항에 있어서,
상기 복수의 캐시 노드의 각각의 레코드와 상기 하나 이상의 데이터베이스 시스템의 각각의 레코드는 기능 엔티티(functional entity)에 의해 그룹화되고 키(key) - 상기 키는, 상기 하나 이상의 데이터베이스 시스템과 상기 복수의 캐시 노드에서 상기 레코드가 즉시 액세스 가능하게 함 - 에 의해 색인되는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
15. The method of claim 14,
Wherein each record of the plurality of cache nodes and each record of the one or more database systems are grouped by a functional entity and the key is stored in the one or more database systems and the plurality of cache nodes Which makes the record immediately accessible to the user.
A method for storing and retrieving data in a data storage system.
청구항 17은(는) 설정등록료 납부시 포기되었습니다.Claim 17 has been abandoned due to the setting registration fee. 제16항에 있어서,
각 기능 엔티티는 항공편 날짜(flight-date)이고,
각 키는 항공편 날짜 키인 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
17. The method of claim 16,
Each functional entity is a flight-date,
Each key is a flight date key,
A method for storing and retrieving data in a data storage system.
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법에 있어서,
상기 데이터 저장 시스템은, 중간 계층(middle tier)을 구현하는 적어도 하나의 컴퓨터 - 상기 적어도 하나의 컴퓨터는, 적어도 하나의 데이터 프로세서와, 상기 적어도 하나의 데이터 프로세서에 의해 상기 적어도 하나의 컴퓨터 상에서 실행되고 있는 소프트웨어 애플리케이션을 포함함 - 를 포함하고,
상기 데이터 저장 시스템은, 저장 계층(storage tier)을 구현하는 복수의 캐시 노드 및 하나 이상의 데이터베이스 시스템을 더 포함하고,
상기 중간 계층은, 클라이언트 계층과 상기 데이터 저장 시스템의 저장 계층을 인터페이싱하도록 구성되고,
상기 방법은,
상기 중간 계층에서의 상기 적어도 하나의 컴퓨터에서, 데이터의 판독을 요청하는 제1 유저 요청을 수신하는 것에 응답하여, 상기 복수의 캐시 노드에만 판독 질의(read query)을 송신하는 단계와,
상기 판독 질의에 응답하여 적어도 하나의 캐시 노드로부터 제1 질의 응답 데이터(queried data)를 수신하는 것에 응답하여, 상기 제1 질의 응답 데이터로 상기 제1 유저 요청을 처리하는 단계와,
상기 판독 질의에 응답하여 모든 캐시 노드로부터 미검출(miss)을 수신하는 것에 응답하여, 상기 제1 유저 요청에 기초하여 상기 하나 이상의 데이터베이스 시스템을 페치하는(fetching) 단계와,
상기 페치하는 것의 결과로서 상기 하나 이상의 데이터베이스 시스템으로부터 제2 질의 응답 데이터를 검색하는 것에 응답하여, 상기 제1 유저 요청을 처리하고, 상기 제2 질의 응답 데이터와 상기 적어도 하나의 캐시 노드에 상기 제2 질의 응답 데이터를 추가하라는 명령을 상기 적어도 하나의 캐시 노드에 송신함으로써, 상기 미검출된 판독 질의에 응답하여 상기 하나 이상의 데이터베이스 시스템으로부터 상기 적어도 하나의 캐시 노드로 상기 제2 질의 응답 데이터를 파퓰레이트하는(populate) 단계와,
상기 판독 질의에 응답하여 모든 캐시 노드로부터 미검출을 수신하고 상기 하나 이상의 데이터베이스 시스템이 상기 제1 유저 요청의 요청된 데이터와 연관된 미검출을 반환하는 것에 응답하여, 상기 제1 유저 요청의 요청된 데이터를 검색하기 위한 상기 하나 이상의 데이터베이스 시스템의 후속 페치를 회피하도록, 상기 제1 유저 요청의 상기 요청된 데이터가 상기 데이터 저장 시스템의 상기 하나 이상의 데이터베이스 시스템에 저장되어 있지 않음을 나타내는 부재 데이터(data of absence)를 상기 복수의 캐시 노드에 추가하는 단계를 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
A method for storing and retrieving data in a data storage system,
The data storage system comprising at least one computer implementing a middle tier, the at least one computer comprising: at least one data processor; and at least one data processor running on the at least one computer Including a software application,
The data storage system further includes a plurality of cache nodes and one or more database systems that implement a storage tier,
Wherein the intermediate layer is configured to interface a client layer and a storage layer of the data storage system,
The method comprises:
At the at least one computer in the middle layer, sending a read query only to the plurality of cache nodes in response to receiving a first user request to request reading of data,
Processing the first user request with the first query response data in response to receiving first queried data from at least one cache node in response to the read query;
Fetching the one or more database systems based on the first user request in response to receiving a miss from all cache nodes in response to the read query;
Responsive to retrieving second query response data from the one or more database systems as a result of the fetching, processing the first user request, and processing the second query response data and the second query response data to the at least one cache node, Transmitting the query response data from the one or more database systems to the at least one cache node in response to the undetected read query by sending an instruction to the at least one cache node to add query response data a populate step,
In response to the non-detection from all cache nodes in response to the read query and in response to the one or more database systems returning undetected associated with the requested data of the first user request, Absence data indicating that the requested data of the first user request is not stored in the one or more database systems of the data storage system to avoid subsequent fetches of the one or more database systems for retrieving the data ) To the plurality of cache nodes.
A method for storing and retrieving data in a data storage system.
청구항 19은(는) 설정등록료 납부시 포기되었습니다.Claim 19 is abandoned in setting registration fee. 제18항에 있어서,
상기 데이터 저장 시스템은 항공사 인벤토리 시스템이고,
상기 하나 이상의 데이터베이스 시스템은 상기 항공사 인벤토리 시스템에 의해 관리되는 항공편에 대한 이용가능성을 저장하고,
상기 복수의 캐시 노드는 상기 항공사 인벤토리 시스템에 의해 관리되는 항공편에 대한 이용가능성을 저장하고,
상기 제1 유저 요청은 상기 항공사 인벤토리 시스템에 의해 관리되는 적어도 하나의 항공편에 관한 이용가능성에 대한 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
19. The method of claim 18,
Wherein the data storage system is an airline inventory system,
Wherein the one or more database systems store availability for flights managed by the airline inventory system,
The plurality of cache nodes storing availability for a flight managed by the airline inventory system,
Wherein the first user request is for availability regarding at least one flight managed by the airline inventory system,
A method for storing and retrieving data in a data storage system.
청구항 20은(는) 설정등록료 납부시 포기되었습니다.Claim 20 has been abandoned due to the setting registration fee. 제19항에 있어서,
적어도 하나의 항공편에 관한 이용가능성을 수정하기 위한 기록(writing)을 요구하는 제2 유저 요청을 수신하는 것에 응답하여, 상기 하나 이상의 데이터베이스 시스템을 기록하기 위한 명령을 송신하고, 또한 상기 복수의 캐시 노드를 동시에 기록하기 위한 명령을 송신함으로써, 상기 데이터 저장 시스템의 각 기록 질의에 응답하여 상기 복수의 캐시 노드를 파퓰레이트하는 단계를 더 포함하는,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
20. The method of claim 19,
In response to receiving a second user request requesting a write to modify availability for at least one flight, sending a command to write the one or more database systems, Further comprising populating the plurality of cache nodes in response to each record query of the data storage system by sending a command to simultaneously write the plurality of cache nodes.
A method for storing and retrieving data in a data storage system.
청구항 21은(는) 설정등록료 납부시 포기되었습니다.Claim 21 has been abandoned due to the setting registration fee. 제20항에 있어서,
상기 제2 유저 요청은, 좌석을 구매하는 것, 좌석을 취소하는 것, 좌석을 변경하는 것 중 적어도 하나에 대응하는 것인,
데이터 저장 시스템에서 데이터를 저장하고 검색하는 방법.
21. The method of claim 20,
Wherein the second user request corresponds to at least one of purchasing a seat, canceling a seat, changing a seat,
A method for storing and retrieving data in a data storage system.
데이터 저장 시스템에 있어서,
하나 이상의 데이터베이스 시스템;
복수의 캐시 노드;
적어도 하나의 데이터 프로세서; 및
소프트웨어 애플리케이션을 저장하는 메모리를 포함하고,
상기 적어도 하나의 데이터 프로세서에 의한 상기 소프트웨어 애플리케이션의 실행은, 상기 적어도 하나의 프로세서로 하여금,
유저 장치로부터 데이터의 제1 유저 요청을 수신하는 것에 응답하여, 상기 복수의 캐시 노드에 판독 질의(read query)을 송신하고,
상기 판독 질의에 응답하여 상기 복수의 캐시 노드로부터 제1 질의 응답 데이터(queried data)를 수신하는 것에 응답하여, 상기 제1 질의 응답 데이터를 사용하여 상기 제1 유저 요청을 처리하고,
상기 판독 질의에 응답하여 상기 복수의 캐시 노드로부터 미검출(miss)을 수신하는 것에 응답하여, 상기 제1 유저 요청에 기초하여 상기 하나 이상의 데이터베이스 시스템을 페치(fetching)하고,
상기 페치하는 것의 결과로서 상기 하나 이상의 데이터베이스 시스템으로부터 제2 질의 응답 데이터를 검색하는 것에 응답하여, 상기 제2 질의 응답 데이터를 사용하여 상기 제1 유저 요청을 처리하고, 상기 제2 질의 응답 데이터와 상기 복수의 캐시 노드에 상기 제2 질의 응답 데이터를 추가하라는 명령을 상기 복수의 캐시 노드에 송신함으로써, 상기 미검출된 판독 질의에 응답하여 상기 하나 이상의 데이터베이스 시스템으로부터 상기 복수의 캐시 노드로 상기 제2 질의 응답 데이터를 파퓰레이트하는(populate) 단계와,
상기 하나 이상의 데이터베이스 시스템으로부터 상기 제2 질의 응답 데이터를 페치하는 것과 동시에 업데이트된 데이터의 적어도 하나의 기록을 요청하는 제2 유저 요청을 수신하는 것에 응답하여, 상기 업데이트된 데이터로 상기 하나 이상의 데이터베이스 시스템을 기록하기 위한 명령을 송신하고, 상기 업데이트된 데이터로 상기 적어도 하나의 캐시 노드를 동시에 기록하기 위한 명령을 송신함으로써, 상기 데이터 저장 시스템의 각 기록 질의(write query)를 상기 복수의 캐시 노드에 파퓰레이트하고, 상기 복수의 캐시 노드에 상기 업데이트된 데이터가 저장되도록, 상기 복수의 캐시 노드에의 상기 제2 질의 응답 데이터의 후속 추가를 중지하는(aborting) 단계를 포함하는,
데이터 저장 시스템.
In a data storage system,
One or more database systems;
A plurality of cache nodes;
At least one data processor; And
A memory for storing a software application,
Wherein the execution of the software application by the at least one data processor causes the at least one processor to:
In response to receiving a first user request of data from a user device, sending a read query to the plurality of cache nodes,
Processing the first user request using the first query response data in response to receiving first queried data from the plurality of cache nodes in response to the read query,
In response to receiving a miss from the plurality of cache nodes in response to the read query, fetching the one or more database systems based on the first user request,
Processing the first user request using the second query response data in response to retrieving second query response data from the one or more database systems as a result of the fetching, Sending a second query response data to the plurality of cache nodes by sending an instruction to the plurality of cache nodes to the plurality of cache nodes to send the second query response data from the one or more database systems to the plurality of cache nodes in response to the non- Populating the response data;
Responsive to fetching the second query response data from the one or more database systems and receiving a second user request to request at least one record of updated data, Transmitting a write query of the data storage system to the plurality of cache nodes by sending an instruction to write the at least one cache node with the updated data, And aborting subsequent additions of the second query response data to the plurality of cache nodes such that the updated data is stored in the plurality of cache nodes.
Data storage system.
청구항 23은(는) 설정등록료 납부시 포기되었습니다.Claim 23 has been abandoned due to the setting registration fee. 제22항에 있어서,
상기 캐시 노드의 수는 상기 데이터베이스 시스템의 모든 컨텐츠를 보유하도록 구성되는 것인,
데이터 저장 시스템.
23. The method of claim 22,
Wherein the number of cache nodes is configured to hold all content of the database system.
Data storage system.
청구항 24은(는) 설정등록료 납부시 포기되었습니다.Claim 24 is abandoned in setting registration fee. 제22항에 있어서,
상기 데이터 저장 시스템의 일부 데이터는 하나보다 많은 캐시 노드에 저장되는 것인,
데이터 저장 시스템.
23. The method of claim 22,
Wherein some data in the data storage system is stored in more than one cache node.
Data storage system.
청구항 25은(는) 설정등록료 납부시 포기되었습니다.Claim 25 is abandoned in setting registration fee. 제22항에 있어서,
상기 데이터 저장 시스템은 여행 제공자의 인벤토리 시스템에 대응하는 것인,
데이터 저장 시스템.
23. The method of claim 22,
Wherein the data storage system corresponds to an inventory system of a travel provider,
Data storage system.
KR1020157007498A 2012-09-27 2013-09-04 Method and system of storing and retrieving data Active KR101690288B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP12368027.4A EP2713284B1 (en) 2012-09-27 2012-09-27 Method and system of storing and retrieving data
US13/628,517 2012-09-27
US13/628,517 US9037801B2 (en) 2012-09-27 2012-09-27 Method and system of storing and retrieving data
EP12368027.4 2012-09-27
PCT/EP2013/002655 WO2014048540A1 (en) 2012-09-27 2013-09-04 Method and system of storing and retrieving data

Publications (2)

Publication Number Publication Date
KR20150075407A KR20150075407A (en) 2015-07-03
KR101690288B1 true KR101690288B1 (en) 2016-12-28

Family

ID=49150900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157007498A Active KR101690288B1 (en) 2012-09-27 2013-09-04 Method and system of storing and retrieving data

Country Status (8)

Country Link
JP (1) JP6511394B2 (en)
KR (1) KR101690288B1 (en)
CN (1) CN104662539B (en)
AU (1) AU2013324689B2 (en)
CA (1) CA2882498C (en)
IN (1) IN2015DN01332A (en)
SG (1) SG11201501650WA (en)
WO (1) WO2014048540A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846802B (en) * 2017-02-09 2021-01-05 陕西公路交通科技开发咨询公司 Expressway data processing method and device
KR102415155B1 (en) 2018-05-11 2022-06-29 삼성에스디에스 주식회사 Apparatus and method for retrieving data
FR3081238A1 (en) * 2018-05-17 2019-11-22 Amadeus S.A.S. DATABASE BASE CALLING
FR3092920B1 (en) * 2019-02-14 2022-04-01 Amadeus PROCESSING COMPLEX DATABASE QUERIES
CN111125138B (en) * 2019-12-26 2023-08-25 深圳前海环融联易信息科技服务有限公司 Method, device, computer equipment and storage medium for polling query data
SG10202008564PA (en) * 2020-09-03 2021-12-30 Grabtaxi Holdings Pte Ltd Data Base System and Method for Maintaining a Data Base
CN116521969B (en) * 2023-02-28 2023-12-29 华为云计算技术有限公司 Data retrieval method, server, system and related equipment

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147201A (en) * 1994-11-18 1996-06-07 Nippon Telegr & Teleph Corp <Ntt> Traffic data cache method
US6256710B1 (en) * 1995-04-28 2001-07-03 Apple Computer, Inc. Cache management during cache inhibited transactions for increasing cache efficiency
US6067550A (en) * 1997-03-10 2000-05-23 Microsoft Corporation Database computer system with application recovery and dependency handling write cache
US6609126B1 (en) * 2000-11-15 2003-08-19 Appfluent Technology, Inc. System and method for routing database requests to a database and a cache
US7434000B1 (en) * 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7415487B2 (en) * 2004-12-17 2008-08-19 Amazon Technologies, Inc. Apparatus and method for data warehousing
CA2657657A1 (en) * 2005-12-02 2007-06-07 International Business Machines Corporation System for improving access efficiency in database and method thereof
CN101410836B (en) * 2006-06-08 2012-05-30 国际商业机器公司 A method of providing applications with access to data stored in a database
US7711657B1 (en) * 2006-06-26 2010-05-04 Hewlett-Packard Development Company, L.P. Resource-reservation pricing structures based on expected ability to deliver
US8095618B2 (en) * 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
JP5163171B2 (en) * 2008-02-15 2013-03-13 日本電気株式会社 Cache system and server
US8799409B2 (en) * 2009-01-15 2014-08-05 Ebay Inc. Server side data cache system
CN102103523A (en) * 2009-12-22 2011-06-22 国际商业机器公司 Method and device for controlling lock allocation

Also Published As

Publication number Publication date
AU2013324689B2 (en) 2016-07-07
CA2882498C (en) 2020-11-17
WO2014048540A1 (en) 2014-04-03
JP6511394B2 (en) 2019-05-15
JP2015535995A (en) 2015-12-17
CN104662539A (en) 2015-05-27
SG11201501650WA (en) 2015-04-29
AU2013324689A1 (en) 2015-04-09
IN2015DN01332A (en) 2015-07-03
CA2882498A1 (en) 2014-04-03
KR20150075407A (en) 2015-07-03
CN104662539B (en) 2018-02-23

Similar Documents

Publication Publication Date Title
US9037801B2 (en) Method and system of storing and retrieving data
KR101690288B1 (en) Method and system of storing and retrieving data
US10872076B2 (en) Transaction ordering
US11520770B2 (en) System and method for providing high availability data
JP7322184B2 (en) Database change stream caching techniques
CN111727428B (en) Blockchain-based room inventory management system
JP6165729B2 (en) Method and system for maintaining strong consistency of distributed replicated content in a client / server system
US8117153B2 (en) Systems and methods for a distributed cache
EP1840766B1 (en) Systems and methods for a distributed in-memory database and distributed cache
US9922075B2 (en) Scalable distributed transaction processing system
WO2020009737A1 (en) Data replication and data failover in database systems
US20070239790A1 (en) Systems and methods for a distributed in-memory database
US20090037489A1 (en) Method And System For Response Time Optimization
US20230009909A1 (en) Methods and systems for automatically resharding a sharded collection of data
EP2713284B1 (en) Method and system of storing and retrieving data
Kapu Best Practices for Implementing Distributed Caching in Enterprise Applications
Diaz et al. Working with NoSQL Alternatives

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20150324

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20150803

Comment text: Request for Examination of Application

A302 Request for accelerated examination
PA0302 Request for accelerated examination

Patent event date: 20151116

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20160222

Patent event code: PE09021S01D

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

Comment text: Final Notice of Reason for Refusal

Patent event date: 20160630

Patent event code: PE09021S02D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20161128

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20161221

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20161222

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20191213

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20201211

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20211210

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20221209

Start annual number: 7

End annual number: 7