JP6511394B2 - Method and system for data storage and retrieval - Google Patents

Method and system for data storage and retrieval Download PDF

Info

Publication number
JP6511394B2
JP6511394B2 JP2015533468A JP2015533468A JP6511394B2 JP 6511394 B2 JP6511394 B2 JP 6511394B2 JP 2015533468 A JP2015533468 A JP 2015533468A JP 2015533468 A JP2015533468 A JP 2015533468A JP 6511394 B2 JP6511394 B2 JP 6511394B2
Authority
JP
Japan
Prior art keywords
data
cache
database
software application
database systems
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
JP2015533468A
Other languages
Japanese (ja)
Other versions
JP2015535995A (en
Inventor
ジーン−チャールズ リダウティ,
ジーン−チャールズ リダウティ,
ジョエル シンガー,
ジョエル シンガー,
フロレン バラ,
フロレン バラ,
プルドン,フロリアン
ロマン ブートループ,
ロマン ブートループ,
コリン ピトラット,
コリン ピトラット,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
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 Amadeus SAS filed Critical Amadeus SAS
Publication of JP2015535995A publication Critical patent/JP2015535995A/en
Application granted granted Critical
Publication of JP6511394B2 publication Critical patent/JP6511394B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

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)

Description

本発明は一般に、物品およびサービスの大手プロバイダが、自社製品全体の提供および利用可能性のレベルを管理するために用いる種類のデータマネジメントシステムに関する。より具体的には、本発明は、データストレージのリモートユーザからのハイレベルなクエリに対して、遅延なく、またはわずかな遅延のみで答えることができ、データストレージ管理の結果として、内容を常に更新するトランザクションの完了には影響を与えないシステムに関する。   The present invention relates generally to the type of data management system used by the leading providers of goods and services to manage the level of availability and availability of their entire product. More specifically, the present invention can respond to high-level queries from remote users of data storage without delay or with only a slight delay, and constantly updates the content as a result of data storage management Systems that do not affect the completion of the transaction.

内部接続したすべての世界では、すべての物品およびサービスの大手プロバイダは、製品およびサービスの提供の特性、仕様およびコストを保持する大規模なデータベースシステムを今までに築いてきた。データベースマネジメントシステム(DBMS)制御下で操作されると、おそらく世界中から、大勢のオンラインの顧客が内容に同時にアクセスできるようになる。オンラインの顧客には、このように、データベースにクエリ、特定のオンラインソフトウェアアプリケーションを用いて商業トランザクションを完了する機会が提供される。特定のオンラインソフトウェアアプリケーションによって、オンラインの顧客は様々な製品およびサービスを予約し、購入する。   In all the interconnected worlds, the leading providers of all goods and services have built large database systems that retain the characteristics, specifications and costs of providing products and services. Operated under Database Management System (DBMS) control, a large number of online customers will be able to simultaneously access content, perhaps from around the world. Online customers are thus provided the opportunity to query the database and complete a commercial transaction using a particular online software application. Through specific online software applications, online customers reserve and purchase various products and services.

航空業界では、このような非常に巨大なデータベースの例として、航空会社の在庫を記載したデータベースがあげられる。このようなデータベースを用いて、所与の航空会社が操業する実際の座席数、予約の現状と共に、保有飛行機の構成をリアルタイムに追跡する。   In the aviation industry, an example of such a very large database is a database listing airline stocks. Such a database is used to track, in real time, the configuration of owned aircraft, as well as the actual number of seats that a given airline operates and the current status of reservations.

より具体的には、航空会社の在庫は通常、利用可能な座席があるすべての航空便を含有し、一般に、サービスクラス(たとえばファースト、ビジネスまたはエコノミークラス)および異なる値段および予約条件が適用される多くの予約クラスに区別されている。在庫マネジメントの中心となる機能の1つは在庫管理である。在庫管理は、個々の予約クラスの販売を開始および終了することによって、様々な予約クラスにおける利用可能な座席数を操作する。運賃見積もりシステムに保存されている運賃と予約条件を組み合わせて、各販売座席の料金が決定する。ほとんどの場合、在庫管理は航空会社のレベニューマネジメントシステムと接続し、需要の変化に応じて、提供する予約クラスを恒久的に最適化することをサポートする。ユーザは、ディスプレイおよびグラフィカルユーザインターフェースを有する利用可能性を示すアプリケーションを通じて、航空会社の在庫にアクセスする。利用可能性を示すアプリケーションは、具体的な都市までの様々な予約クラスにおいて利用可能な座席と組み合わせて、提供されるすべての航空便を含有する。   More specifically, the inventory of the airline usually contains all the flights with available seats, and generally the service class (eg fast, business or economy class) and different prices and reservation conditions apply It is divided into many booking classes. One of the central functions of inventory management is inventory management. Inventory management manipulates the number of available seats in the various booking classes by starting and ending sales of individual booking classes. The fares stored in the fare estimation system are combined with the reservation conditions to determine the charge for each sales seat. In most cases, inventory management interfaces with the airline's revenue management system and supports permanent optimization of the offered booking classes as demand changes. The user accesses the inventory of the airline through an availability indicating application having a display and a graphical user interface. The application indicating availability contains all the flights provided in combination with the available seats in various booking classes up to the specific city.

航空会社在庫データベースは通常は、航空会社が管理する。航空会社在庫データベースは、旅行サービスを旅行業界の多くの関係者に提供する企業によっても設定される。旅行業界には、航空会社、伝統的な旅行代理店およびあらゆる種類の他のオンライン旅行サービスプロバイダも含まれる。このような企業には、たとえば、スペインのマドリッドに本店を持つ欧州の旅行サービスプロバイダであるAMADEUSがある。在庫管理の中には、直接航空会社が管理し、グローバルディストリビューションシステム(GDS)または中央予約システム(CRS)と接続するものもある。   The airline inventory database is usually managed by the airline. The airline inventory database is also set up by companies that provide travel services to many parties in the travel industry. The travel industry also includes airlines, traditional travel agencies and other types of online travel service providers. Such companies include, for example, AMADEUS, a European travel service provider with a head office in Madrid, Spain. Some inventory controls are directly managed by the airline and connected with the Global Distribution System (GDS) or Central Reservation System (CRS).

この環境では、これらのデータベースの利用は、問い合わせまたは読み込みクエリのレベルが年を追って、大幅に増加してきたことが特徴としてあげられる。実際に、トランザクションのうち、データベースが処理しなければならないオンライン予約率は非常に高くなっている。したがって、旅行サービスプロバイダは、コンピュータ化された必要なリソースを配置し、増え続けるオンラインの顧客が効率的にデータベースに問い合わせ、迅速な答えを得ることができると同時に、予約の完了と、航空会社の場合は旅客への座席の販売の結果として、データベースの更新が同時に進行できるという状況に対処しなければならない。   In this environment, the use of these databases is characterized by a significant increase in the level of queries or reading queries over the years. In fact, of transactions, the online reservation rate that the database has to process is very high. Thus, the travel service provider places the necessary computerized resources, and an increasing number of online customers can efficiently query the database and get quick answers, while at the same time completing the reservation, the airline's The situation must be addressed if updating the database can proceed simultaneously as a result of the sale of seats to the passenger.

このようなデータベースを実装するために利用可能であり、広く使用されている大規模なデータベースシステムは、Oracleのように数社の専門企業から提供されている。Oracleは、アメリカ合衆国、カリフォルニア州、レッドウッドショアに本社を持ち、データベース管理システムの開発を専門としている。ただし、標準的なDBMSだけでは、物品およびサービスの大手サービスプロバイダが、何万もの潜在的な顧客に同時に提供しなくてはならないこともある受容に必要なレベルを処理できない。この目的を実現するために、何らかの方法で、ユーザからの無数のクエリを直接受けないように、データベースを保護しなくてはならない。   Large database systems that are available and widely used to implement such databases are provided by several specialized companies, such as Oracle. Oracle, headquartered in Redwood Shore, California, USA, specializes in the development of database management systems. However, standard DBMSs alone can not handle the level of acceptance that leading service providers of goods and services may have to serve tens of thousands of potential customers simultaneously. In order to achieve this purpose, the database must be protected in some way so as not to directly receive countless queries from the user.

したがって、データベースの内容をキャッシュ化するための多くの解決法が開発されてきた。キャッシュは、アプリケーション階層に位置するアプリケーションキャッシュであってもよく、アプリケーションがデータベースから前もって取得したデータを基本的に再利用する。これは、データベースの内容がその間更新されているかもしれないため、ユーザの別の問い合わせに応答して提供されるデータの品質の問題がすぐに生じる。これは、データベースが常に更新され、高品質のデータを必要とする一部のアプリケーションではかなり問題となることが分かっている。たとえば、航空会社の在庫に関連するアプリケーションの場合は、データが最新であることが、顧客に提供される座席販売の可能性および料金に直接影響を与えるため、データの品質が問題となる。   Therefore, many solutions have been developed to cache the contents of the database. The cache may be an application cache located in the application hierarchy, which basically reuses data previously acquired from the database by the application. This quickly raises the issue of the quality of the data provided in response to another query of the user, as the contents of the database may be updated during that time. This has been found to be a significant problem for some applications where the database is constantly updated and that requires high quality data. For example, in the case of an application related to airline inventory, the quality of the data becomes an issue as the up-to-date data directly affects the availability and fares of the seat sales offered to the customer.

したがって、この種類のキャッシュによって提供されるデータの品質があまり重要ではない場合を除き、また、他の何よりも有益であると考えられない限り、この種類のアプリケーションキャッシュは、データベースとキャッシュの間で高機能の機構を実装することを要求する。それによって、データベースで更新されるとき、以前に取得したデータの無効化および/または交換が可能になり、したがって、アプリケーションキャッシュおよびデータベースの内容が実際に一貫するように維持される。キャッシュはデータベースとアプリケーションとの間のパスに挿入されることが多いため、キャッシュは常にまず、アプリケーションによってクエリされる。クエリされたデータがキャッシュに存在しない場合は、データベースから取得され、アプリケーションに提供される前にキャッシュに取り込まれる。これらのすべての解決法は、キャッシュおよびデータベースが密接に結合することが要求され、お互いを認識する必要があるという共通点がある。結果として、サービスプロバイダがより多くのコンピュータリソースを配備して、トラフィックの増加を処理し、システムの性能を維持しながら、より多くの顧客にサービスを提供しなければならないとき、これらの解決法は容易には拡張可能ではない。   Thus, unless the quality of the data provided by this type of cache is not very important, and unless it is considered to be more useful than anything else, this type of application cache can be used between database and cache Requires implementation of a sophisticated mechanism. Thereby, when updated in the database, invalidation and / or exchange of previously acquired data is possible, thus keeping the contents of the application cache and database practically consistent. The cache is always first queried by the application, as the cache is often inserted into the path between the database and the application. If the queried data does not exist in the cache, it is retrieved from the database and brought into the cache before being provided to the application. All these solutions have in common that caches and databases are required to be tightly coupled and need to be aware of each other. As a result, when the service provider has to deploy more computer resources to handle the increase in traffic and maintain the performance of the system, these solutions should be serviced to more customers. It is not easily extensible.

ただし、特定の解決法によって、かなり良好な拡張性が可能となり、キャッシュとデータベース間の一定の独立性が可能となることが、「データベースリクエストをデータベースおよびキャッシュにルーティングするシステムおよび方法」という特許文献1に記載されている。開示されている解決法では、データベースおよびキャッシュは、アプリケーションの制御下のみで個別に起動されることによって、ある程度独立している。ただし、キャッシュは読み込みクエリに答えるためにのみ用いられ、更新はアプリケーションによって、データベースでのみ実施される。したがって、データベースへの変更をキャッシュに反映するために、特許文献1は、キャッシュを更新する複製部品がデータベースに含有されることを記載している。   However, certain solutions allow fairly good extensibility and allow for some independence between cache and database, as described in "System and Method of Routing Database Requests to Database and Cache". It is described in 1. In the disclosed solution, the database and cache are to some extent independent by being activated individually under control of the application. However, caching is only used to answer read queries, and updates are only implemented in the database by the application. Therefore, in order to reflect changes to the database in the cache, Patent Document 1 describes that the duplicate parts for updating the cache are contained in the database.

前述のすべてのキャッシュに関する解決法は、重大な作業負荷をデータベースに追加する一方、キャッシュおよびデータベースは常に一貫性があることを保証されず、データベースは様々なキャッシュを認識しなければならない。これによって、新規のキャッシュを追加するときに、特定の操作をデータベースで実施することが必要となり、したがって拡張性は容易に実現できない。前述のように、特許文献1はデータベースマネジメントシステムが外部の部品を組み込むことを要求する。これは標準的なDBMSの利用に、実際には適合しない。   While all the caching solutions described above add significant workload to the database, caches and databases are not always guaranteed to be consistent, and the databases must be aware of the various caches. This makes it necessary to perform certain operations on the database when adding a new cache, and thus scalability is not easily realized. As mentioned above, Patent Document 1 requires the database management system to incorporate external parts. This is not really compatible with the use of a standard DBMS.

したがって、本発明の目的として、高トラフィックおよび高拡張性が可能となる一方、ユーザに適切なデータ品質を提供することができる、データベースを備えたコンピュータ化されたデータシステムを記載する。   Thus, for the purpose of the present invention, we describe a computerized data system with a database that can provide users with adequate data quality while allowing high traffic and high scalability.

本発明の別の目的、特徴および有利点は、以下の記載を添付図を参照しながら検証することによって、当業者には明らかとなろう。任意の追加の有利点が本明細書に組み込まれることが意図される。   Other objects, features and advantages of the present invention will become apparent to those skilled in the art by examining the following description with reference to the attached drawings. It is intended that any additional advantages be incorporated herein.

米国特許第6,609,126号U.S. Patent No. 6,609,126

本発明の実施形態によれば、前述の問題および他の問題は克服され、他の有利点が実現される。   According to embodiments of the present invention, the aforementioned and other problems are overcome and other advantages are realized.

本発明の第1の態様は、データをデータストレージシステムに保存し、データをデータストレージシステムから取得する方法を提供する。データストレージシステムは、ソフトウェアアプリケーションと、1または複数のデータベースシステムと、複数のキャッシュノードとを備える。ソフトウェアアプリケーションはユーザリクエストを受信するように構成され、ユーザリクエストは少なくとも1つのデータの読み込みまたはデータの1つの書き込みを要求し、ソフトウェアアプリケーションはさらに、読み込みクエリまたは書き込みクエリをデータストレージシステムに送信して、ユーザリクエストを処理するように構成される。方法は、ソフトウェアアプリケーションが独自に1または複数のデータベースシステムおよび複数のキャッシュノードと接続することと、方法が、少なくとも1つのデータプロセッサを備えるソフトウェアアプリケーションが実施する以下のステップを備えることを特徴とする。
つまり、少なくとも1つのデータの読み込みを要求するユーザリクエストを受信すると、ソフトウェアアプリケーションは、読み込みクエリのみを複数のキャッシュノードに送信する。好ましくは、ソフトウェアアプリケーションがクエリされたデータ(つまり、取得されたデータ)を少なくとも1つのキャッシュノードから、読み込みクエリに応答して受信する場合は、ソフトウェアアプリケーションは、クエリされたデータを用いてユーザリクエストを処理する。好ましくは、ソフトウェアアプリケーションが損失をすべてのキャッシュノードから読み込みクエリに応答して受信する場合は、それによって、データがキャッシュノードで発見されなかったことを意味し、ソフトウェアアプリケーションは1または複数のデータベースシステムを取り出す。クエリされたデータがデータベースに存在する場合は、1または複数のデータベースシステムからクエリされたデータを取得すると、ソフトウェアアプリケーションはクエリされたデータを用いて、ユーザリクエストを処理し、少なくとも1つのキャッシュノードにクエリされたデータを送信し、クエリされたデータを少なくとも1つのキャッシュノードに追加するように指示を送信する。
A first aspect of the present invention provides a method of storing data in a data storage system and acquiring data from the data storage system. The data storage system comprises a software application, one or more database systems, and a plurality of cache nodes. The software application is configured to receive the user request, the user request requests reading of at least one data or writing of one of the data, and the software application further transmits a read query or a write query to the data storage system , Configured to process user requests. The method is characterized in that the software application uniquely connects with one or more database systems and a plurality of cache nodes, and the method comprises the following steps performed by the software application comprising at least one data processor. .
That is, upon receiving a user request requesting to read at least one data, the software application sends only read queries to multiple cache nodes. Preferably, if the software application receives queried data (i.e. acquired data) from at least one cache node in response to a read query, the software application uses the queried data to make a user request. Process Preferably, if the software application receives a loss from all cache nodes in response to a read query, this means that the data was not found at the cache node, and the software application has one or more database systems Take out. When queried data is present in the database, upon obtaining the queried data from one or more database systems, the software application uses the queried data to process the user request to at least one cache node Send the queried data and send an indication to add the queried data to the at least one cache node.

好ましい実施形態によると、少なくとも1つのデータの書き込みを要求するユーザリクエストを受信すると、ソフトウェアアプリケーションは書き込みの指示を1または複数のデータベースシステムに送信し、また、同時に書き込みの指示を複数のキャッシュノードに送信し、それによって、複数のキャッシュノードをデータストレージシステムの各損失された読み込みクエリおよび各書き込みクエリに投入する。各データはしたがって複数のキャッシュノードのうち少なくとも1つのキャッシュノードと1または複数のデータベースシステムに同一に保存されており、それによって、データベースシステムと複数のキャッシュノードが常に完全に同期化されていることを保証する。   According to a preferred embodiment, upon receiving a user request requesting writing of at least one data, the software application sends a writing indication to the one or more database systems, and simultaneously a writing indication to the plurality of cache nodes. Send, thereby injecting multiple cache nodes into each lost read query and each write query of the data storage system. Each piece of data is thus stored identically in at least one cache node and one or more database systems of the plurality of cache nodes, whereby the database system and the plurality of cache nodes are always completely synchronized. To guarantee.

したがって、本発明は、複数のキャッシュから完全に独立したデータベースを持つことが可能となり、キャッシュを更新するために、データベースに一体化された複製の部品に関与する既知の解決法とは反対に、複数のキャッシュノードを備える。既知の解決法では、データベースおよびキャッシュは、完全に独立しているとは言えず、ストレージシステム全体の拡張性が制限され、特定のデータベースが必要となる。   Thus, the invention makes it possible to have a database completely independent of multiple caches, as opposed to the known solutions involving replication components integrated in the database to update the caches, It comprises a plurality of cache nodes. In known solutions, the database and cache are not completely independent, limiting the scalability of the entire storage system and requiring a specific database.

完全に独立し、互いを認識していないデータベースおよびキャッシュを備えるコンピュータ化データシステムによって、したがって、トラフィックの増加を処理することが必要なとき、より多くのコンピュータおよびストレージ収容能力を導入するだけで、制限のない拡張性を持つデータシステムが可能となる。   By computerized data systems with databases and caches that are completely independent and not aware of each other, thus only introducing more computer and storage capacity when it is necessary to handle increased traffic, A data system with unlimited extensibility is possible.

さらに、高拡張性は機器のコストを抑えながら実現可能である。具体的には、本発明は標準的なデータベースおよびDBMSで実装することができる。本発明はまた、維持コストを削減することができる。具体的には、ストレージリソースの増加はデータベース上で何も操作する必要がない。   Furthermore, high extensibility can be achieved while reducing the cost of the device. In particular, the invention can be implemented with standard databases and DBMSs. The invention can also reduce maintenance costs. Specifically, the increase in storage resources does not have to do anything on the database.

ソフトウェアアプリケーションは、データベースのデータの更新およびキャッシュの投入を担当する。これは、データベースの書き込みを反映すること、またはデータベースには存在するが、まだキャッシュにはないクエリされたデータを追加することによって行われる。そのためエンドユーザには、高品質データつまり最新のデータが提供される。さらに、キャッシュは迅速に投入されるため、新規のキャッシュノードをシステムに追加するとすぐに、スループットが増加する。   The software application is responsible for updating and caching data in the database. This is done by reflecting database writes or by adding queried data that exists in the database but is not yet in the cache. The end user is thus provided with high quality data or up-to-date data. In addition, because caches are injected quickly, throughput is increased as soon as new cache nodes are added to the system.

さらに、本発明は、正確かつ顧客に合わせた返答をユーザに提供することができる。   Furthermore, the present invention can provide the user with an accurate and customer-friendly response.

非限定的な実施形態によれば、書き込みクエリは、データベースシステムのデータの追加、更新および削除のうち少なくとも1つを備える。   According to a non-limiting embodiment, the write query comprises at least one of adding, updating and deleting data of the database system.

任意には、本発明による方法は、以下の条件的特徴およびステップのいずれか1つを備えていてもよい。   Optionally, the method according to the invention may comprise any one of the following conditional features and steps:

キャッシュおよびデータベースのデータモデルは同一であってもよいが、厳格に同一である必要はない。唯一の要件は一貫していることであり、それによってキャッシュおよびデータベースの記録にアクセスするために、正確に同一の処理キーを得ることができる。キーはまた、書き込み操作の一貫性のためにデータベースの記録をロックすることができる。したがって、データの記録は、存在するときは、データベースおよびキャッシュに同一に保存されているか、またはキャッシュおよびデータベースの同一のデータの処理の一貫性を保証するような方法で保存される。たとえば、キャッシュデータモデルはデータベースモデルに対して適応されてもよく、データの取得を早める。それによって、2つのエンティティの間で処理が完全に一貫している間、キャッシュのアクセス時間は改善される。   The cache and database data models may be identical, but they do not have to be strictly identical. The only requirement is that it be consistent, so that exactly the same processing key can be obtained to access the cache and database records. The key can also lock database records for consistency of write operations. Thus, the records of the data, when present, are stored identically in the database and cache, or in such a way as to guarantee consistency in the processing of the same data in the cache and database. For example, a cache data model may be adapted to a database model to speed up data acquisition. Thereby, cache access time is improved while processing is completely consistent between the two entities.

非限定的な実施形態によれば、キャッシュノードのデータモデルは同一の1または複数のデータベースのデータモデルと同一である。各キャッシュノードの各データはデータベースシステムに同一に保存されている。データベースシステムの各データは、各キャッシュノードに同一に保存されている。   According to a non-limiting embodiment, the data model of the cache node is identical to the data model of the same database or databases. Each data of each cache node is stored identically in the database system. Each data of the database system is stored identically in each cache node.

1または複数のデータベースシステムへの書き込み指示はソフトウェアアプリケーションから1または複数のデータベースシステムに送信される。   Write instructions to the one or more database systems are sent from the software application to the one or more database systems.

複数のキャッシュノードに同時に書き込む指示は、ソフトウェアアプリケーションから複数のキャッシュノードに送信される。   An instruction to simultaneously write to a plurality of cache nodes is transmitted from the software application to the plurality of cache nodes.

1つの単一ソフトウェアアプリケーションはデータベースシステムおよびキャッシュノードにアクセスする。   One single software application accesses the database system and cache node.

データストレージシステムは、1つの単一データベースシステムを備える。   The data storage system comprises one single database system.

キャッシュはキャッシュノードを備え、非永続的な各データストレージ手段を備える。   The cache comprises cache nodes and comprises non-persistent data storage means.

ソフトウェアアプリケーションは、クエリされたデータを少なくとも1つのキャッシュノードに追加することが無事に完了した時に肯定応答(positive acknowledgement)を受信する。   The software application receives a positive acknowledgment when successfully adding the queried data to the at least one cache node.

データの書き込みが起きるとき、同一のクエリされたデータは同時に1または複数のデータベースから取得され、次に後続してクエリされたデータを少なくとも1つのキャッシュノードに追加することは中断され、否定応答(negative acknowledgement)がソフトウェアアプリケーションに返される。それによって、ソフトウェアアプリケーションは代わりに書き込まれたデータを用いることができる。   When writing of data occurs, the same queried data is retrieved from one or more databases at the same time, and subsequent addition of the queried data to the at least one cache node is aborted and a negative response ( negative acknowledgments are returned to the software application. Thereby, the software application can use the written data instead.

1または複数のデータベースシステムに書き込む指示を送信し、複数のキャッシュノードに同時に書き込む指示を送信すると、以下のステップが実施される。
1または複数のデータベースシステムから、書き込みを適用する現在保存されているデータを取得し、1または複数のデータベースシステムにロックするステップと、
保存すべき新規データをソフトウェアアプリケーションで処理し、1または複数のデータベースシステムに書き込むステップと、
ソフトウェアアプリケーションにキャッシュバッファを書き込み、一時的に保存すべき新規データを保持するステップと、
少なくとも1つのキャッシュノードに保存すべき新規データを転送し、トランザクションを1または複数のデータベースシステムにコミットするステップ。
When sending an instruction to write to one or more database systems and sending an instruction to write simultaneously to multiple cache nodes, the following steps are performed.
Obtaining from the one or more database systems currently stored data to which the write is applied and locking it to the one or more database systems;
Processing the new data to be stored in the software application and writing it to one or more database systems;
Writing a cache buffer to the software application and holding new data to be temporarily stored;
Transferring new data to be stored to at least one cache node and committing the transaction to one or more database systems.

本発明では、キャッシュノードまたはキャッシュはキャッシュバッファとは異なる。キャッシュバッファは、書き込み中に一時的にデータを保存する。いかなるデータも、ユーザリクエストに応答して、キャッシュバッファからは取得されない。キャッシュバッファは書き込み処理専用である。   In the present invention, cache nodes or caches are different from cache buffers. The cache buffer temporarily stores data during writing. No data is retrieved from the cache buffer in response to user requests. The cache buffer is dedicated to write processing.

コミットが失敗すると、次に、アプリケーションソフトウェアは指示を送信して、少なくとも1つのキャッシュノードに以前設定した新規データを削除させる。   If the commit fails, then the application software sends an indication to cause at least one cache node to delete any previously set new data.

新規データを含有する少なくとも1つのキャッシュノードは、その内容から新規データを削除する。複数のキャッシュノードが新規データを含有する場合は、その複数のすべてのキャッシュノードは新規データを削除する。   At least one cache node containing the new data deletes the new data from its contents. If multiple cache nodes contain new data, all multiple cache nodes delete the new data.

ソフトウェアアプリケーションは、どのキャッシュノードまたは複数のキャッシュノードのうちどのキャッシュノードに、データを追加する指示または送信するデータを更新または削除する指示を出すかを決定する。   The software application determines which cache node or cache node among a plurality of cache nodes to issue an instruction to add data or to update or delete data to be sent.

決定は負荷均衡を考慮する。   The decision considers load balancing.

クエリされたデータが1または複数のデータベースシステムまたは少なくとも1つのキャッシュノードのいずれにもない場合は、
1または複数のデータベースシステムを取り出した後、損失がソフトウェアアプリケーションに、クエリされたデータの代わりに返され、
ソフトウェアアプリケーションは少なくとも1つのキャッシュノードに不在のデータを送信し、不在のデータは少なくとも1つのキャッシュノードに対応するクエリされたデータのために追加され、不在のデータはすべての次の読み込みクエリに対して直ちに利用可能となり、
それによって、ソフトウェアアプリケーションが、損失しているクエリされたデータを取得するために、1または複数のデータベースをさらに取り出すことを回避する。
If the queried data is not in either one or more database systems or at least one cache node:
After retrieving one or more database systems, the loss is returned to the software application instead of the queried data,
The software application sends the absent data to at least one cache node, the absent data is added for the queried data corresponding to the at least one cache node, and the absent data is for all subsequent read queries. Immediately available,
Thereby, the software application is prevented from further retrieving one or more databases in order to obtain the lost queried data.

エンドユーザがリクエストし、最終的にデータベースで発見されないデータは、次に「損失しているデータ」としてキャッシュに保存される。それによって、キャッシュの次に問い合わせに対しては、ユーザがリクエストしたデータはキャッシュにもデータベースにもないという情報を直ちに返すことができる。これによって、データベースへのさらなる問い合わせがデータベースシステムをスローダウンさせないようにする。   Data requested by the end user and ultimately not found in the database is then cached as "lost data". Thereby, it is possible to immediately return information that the data requested by the user is neither in the cache nor in the database for the next query after the cache. This prevents further queries to the database from slowing down the database system.

非限定的な実施形態によれば、各データはヘッダと関連し、記録を形成する。ヘッダはデータベースシステムで内容が損失しているかどうかを示す。したがって、記録のヘッダを読み込むだけで、データベースシステムを取り出す価値があるかどうかを知ることができる。   According to a non-limiting embodiment, each data is associated with a header to form a record. The header indicates whether the content is lost in the database system. Therefore, it is possible to know whether it is worth extracting the database system just by reading the header of the record.

別の実施形態によれば、キャッシュノードはデータに関連する特定の値を保存する。この特定の値はデータがデータベースに存在しないことを示す。   According to another embodiment, the cache node stores specific values associated with data. This particular value indicates that the data does not exist in the database.

ソフトウェアアプリケーションは独自に1または複数のデータベースシステムと第1の専用インターフェースで接続し、少なくとも1つのキャッシュノードと第2の専用インターフェースで接続する。   The software application uniquely connects with one or more database systems via a first dedicated interface and connects with at least one cache node via a second dedicated interface.

データモデルは、データベースおよびキャッシュに直接マッピング可能であるように選択される。   Data models are chosen to be directly mappable to databases and caches.

データの各セットは機能エンティティによってグループ分けされ、キーによってインデックスが付けられる。これによって、内容がある程度異なっているとしても、データベースおよびキャッシュノード両方のキーのおかげで、一式のデータに直ちにアクセス可能となる。   Each set of data is grouped by functional entity and indexed by key. This allows immediate access to a set of data thanks to the keys of both the database and cache node, even if the content is somewhat different.

データは、フライト−日付によってグループ分けされ、フライト−日付キーによって特定される。   The data is grouped by flight-date and identified by the flight-date key.

ソフトウェアアプリケーションは旅行プロバイダの在庫のソフトウェアアプリケーションである。   The software application is a travel provider inventory software application.

ソフトウェアアプリケーション、データベースシステムおよびキャッシュノードは旅行プロバイダの在庫に含まれる。   Software applications, database systems and cache nodes are included in the travel provider's inventory.

通常、旅行プロバイダは航空会社である。   Usually, the travel provider is an airline.

ソフトウェアアプリケーションで受信するユーザリクエストは、旅行代理店、オンライン旅行代理店、オンラインの顧客のうち少なくとも1つから送信される。   The user request received by the software application is sent from at least one of a travel agent, an online travel agent, and an online customer.

キャッシュノードのデータモデルおよびデータベースは一貫性を持ち、それによって、まさしく同一の処理キーを得て、キャッシュノードおよびデータベースのデータにアクセスする。   The cache node's data model and database are consistent, thereby obtaining exactly the same processing key and accessing cache node and database data.

データが存在する場合は、データはデータベースおよび少なくとも1つのキャッシュノードに同一に保存されているか、キャッシュおよびデータベースの同一のデータの処理の一貫性を保証するような方法で保存されている。   If the data is present, the data is stored identically in the database and at least one cache node, or in such a way as to ensure consistency in the processing of the same data in the cache and database.

本発明の別の態様では、コンピュータ−プログラム製品または非一時的コンピュータ−は、読み込み可能媒体であり、ソフトウェアプログラム指示を含有する。ソフトウェアプログラム指示を少なくとも1つのデータプロセッサによって実行することは、前述の方法の実行を含む操作性能につながる。   In another aspect of the invention, a computer-program product or non-transitory computer- is a readable medium and contains software program instructions. Execution of the software program instructions by the at least one data processor leads to operating performance which includes the execution of the aforementioned method.

代表的な実施形態はまた、保存データをデータストレージシステムに保存し、データをデータストレージシステムから取得する方法を含有する。データストレージシステムは、ソフトウェアアプリケーション、1または複数のデータベースシステムおよび複数のキャッシュノードを備える。ソフトウェアアプリケーションは、少なくとも1つのデータの読み込みまたはデータの1つの書き込みを要求するユーザリクエストを受信するように構成される。ソフトウェアアプリケーションはさらに、読み込みクエリおよび書き込みクエリをデータストレージシステムに送信して、ユーザリクエストを処理するように構成される。本方法は、ソフトウェアアプリケーションが独自に1または複数のデータベースシステムおよび複数のキャッシュノードと接続することと、本方法が、少なくとも1つのデータプロセッサを備えるソフトウェアアプリケーションが実施する以下のステップを備えることを特徴とする。
少なくとも1つのデータの読み込みを要求するユーザリクエストを受信すると、ソフトウェアアプリケーションは、読み込みクエリのみを複数のキャッシュノードに送信する。
ソフトウェアアプリケーションがクエリされたデータ(つまり、取得されたデータ)を少なくとも1つのキャッシュノードから受信する場合は、ソフトウェアアプリケーションは、クエリされたデータを用いてユーザリクエストを処理する。
ソフトウェアアプリケーションが損失をすべてのキャッシュノードから、読み込みクエリに応答して受信する場合は、ソフトウェアアプリケーションは1または複数のデータベースシステムを取り出し、クエリされたデータがデータベースシステムに存在する場合は、クエリされたデータを1または複数のデータベースシステムから取得した後で、ソフトウェアアプリケーションはクエリされたデータを用いてユーザリクエストを処理し、少なくとも1つのキャッシュノードにクエリされたデータを送信し、クエリされたデータを少なくとも1つのキャッシュノードに追加する指示を送信する。データベース内で見つからない場合は、データが存在しないことを示す情報をキャッシュに追加する。
各データは複数のキャッシュノードのうち少なくとも1つのキャッシュノードおよび1または複数のデータベースシステムに同一に保存されているか、またはキャッシュおよびデータベースの同一のデータの処理の一貫性を保証するような方法で保存される。
The exemplary embodiment also includes a method of storing stored data in a data storage system and obtaining data from the data storage system. The data storage system comprises a software application, one or more database systems and a plurality of cache nodes. The software application is configured to receive a user request requesting reading of at least one data or writing of one of the data. The software application is further configured to send read and write queries to the data storage system to process user requests. The method is characterized in that the software application uniquely connects with one or more database systems and a plurality of cache nodes, and the method comprises the following steps performed by the software application comprising at least one data processor. I assume.
Upon receiving a user request requesting to read at least one data, the software application sends only read queries to multiple cache nodes.
If the software application receives queried data (ie, acquired data) from at least one cache node, the software application processes the user request with the queried data.
If the software application receives losses from all the cache nodes in response to a read query, the software application retrieves one or more database systems, and is queried if the queried data is present in the database system After obtaining the data from the one or more database systems, the software application processes the user request with the queried data, sends the queried data to at least one cache node, and at least the queried data. Send an instruction to add to one cache node. If not found in the database, add information to the cache indicating that the data does not exist.
Each data is stored identically in at least one cache node and one or more database systems of multiple cache nodes, or stored in such a way as to guarantee consistency of processing of the same data in cache and database Be done.

任意だが、有利には、少なくとも1つのデータの書き込みを要求するユーザリクエストを受信すると、ソフトウェアアプリケーションは、1または複数のデータベースシステムに書き込みの指示を送信し、クエリのみを複数のキャッシュノードに送信する。1または複数のデータベースシステムは、データストレージシステムの各損失された読み込みクエリおよび各書き込みクエリの複数のキャッシュノードを投入する指示も送信する。   Optionally, but advantageously, upon receiving a user request requesting writing of at least one data, the software application sends an indication of writing to one or more database systems and sends only queries to multiple cache nodes . The one or more database systems also send instructions to populate each of the lost read queries of the data storage system and multiple cache nodes of each write query.

本発明の別の態様では、航空会社の在庫のデータストレージシステムにデータを保存する方法と、データストレージシステムからデータを取得する方法とが提供される。データストレージシステムは、ソフトウェアアプリケーションと、1または複数のデータベースシステムと、複数のキャッシュノードとを備える。ソフトウェアアプリケーションは、少なくとも以下のうちの1つを要求するユーザリクエストを受信するように構成される。少なくとも1つのフライトに関する利用可能性を知るためにデータを読み込むことと、少なくとも1つのフライトに関する利用可能性を修正するためにデータに書き込むことである。ソフトウェアアプリケーションはさらに、読み込みクエリおよび書き込みクエリをデータストレージシステムに送信して、ユーザリクエストを処理するように構成される。本方法は、ソフトウェアアプリケーションは独自に1または複数のデータベースシステムおよび複数のキャッシュノードと接続することと、方法が少なくとも1つのデータプロセッサを備えるソフトウェアアプリケーションが実施する以下のステップを備えることを特徴とする。
少なくとも1つのフライトに関する利用可能性を知るためにデータを読み込むことを要求するユーザリクエストを受信すると、ソフトウェアアプリケーションは読み込みクエリのみを複数のキャッシュノードに送信する。
ソフトウェアアプリケーションがクエリされたデータ(つまり取得されたデータ)を少なくとも1つのキャッシュノードから受信する場合は、クエリされたデータを用いてユーザリクエストを処理する。
ソフトウェアアプリケーションがすべてのキャッシュノードから損失を受信する場合は、ソフトウェアアプリケーションは1または複数のデータベースシステムを読み出す。クエリされたデータがデータベースシステムにある場合は、クエリされたデータを1または複数のデータベースシステムから取得後、ソフトウェアアプリケーションはクエリされたデータを用いて、ユーザリクエストを処理し、クエリされたデータを少なくとも1つのキャッシュノードに送信し、クエリされたデータを少なくとも1つのキャッシュノードに追加する指示を送信する。
各データは、複数のキャッシュノードのうち少なくとも1つのキャッシュノードおよび1または複数のデータベースシステムに同一に保存されている。
In another aspect of the invention, a method of storing data in an airline inventory data storage system and a method of acquiring data from the data storage system are provided. The data storage system comprises a software application, one or more database systems, and a plurality of cache nodes. The software application is configured to receive a user request requesting at least one of the following: Reading data to know availability for at least one flight and writing data to correct availability for at least one flight. The software application is further configured to send read and write queries to the data storage system to process user requests. The method is characterized in that the software application uniquely connects with one or more database systems and cache nodes, and the method comprises the following steps performed by the software application comprising at least one data processor. .
Upon receiving a user request requesting to read data to know availability for at least one flight, the software application sends only read queries to multiple cache nodes.
If the software application receives queried data (ie, retrieved data) from at least one cache node, then the queried data is used to process the user request.
If the software application receives losses from all cache nodes, the software application reads one or more database systems. If the queried data is in a database system, after obtaining the queried data from one or more database systems, the software application uses the queried data to process the user request and at least the queried data. Send to one cache node and send an indication to add the queried data to at least one cache node.
Each piece of data is stored identically in at least one cache node and one or more database systems among the plurality of cache nodes.

任意ではあるが、有利には、少なくとも1つのフライトに関する利用可能性を修正するために、少なくとも書き込みを要求するユーザリクエストは、座席購入、座席キャンセル、座席変更のいずれかを要求するユーザリクエストである。   Optionally, but preferably, the user request for at least writing is a user request for seat purchase, seat cancellation, or seat change, in order to modify the availability for at least one flight. .

本発明の別の態様では、本発明はデータストレージシステムを提供する。データストレージシステムは、1または複数のデータベースシステムと、少なくとも1つのキャッシュノードと、少なくとも1つのデータプロセッサと、ソフトウェアアプリケーションとを備える。ソフトウェアアプリケーションを少なくとも1つのデータプロセッサで実行すると、前述の方法の任意の1つの実行を含む操作能力につながる。1または複数のデータベースシステムおよび少なくとも1つのキャッシュノードは独自にソフトウェアアプリケーションによって駆動されるように構成される。   In another aspect of the present invention, the present invention provides a data storage system. The data storage system comprises one or more database systems, at least one cache node, at least one data processor, and a software application. Execution of the software application on at least one data processor leads to operating capabilities including execution of any one of the aforementioned methods. The one or more database systems and the at least one cache node are independently configured to be driven by the software application.

有利には、キャッシュノードの数およびソフトウェアアプリケーションを実行するためのコンピュータ化手段の処理動力が適応され、ソフトウェアアプリケーションのすべてのエンドユーザが作成した集約したピークトラフィックに合致する。   Advantageously, the number of cache nodes and the processing power of the computerized means for executing the software application are adapted to match the aggregated peak traffic created by all end users of the software application.

任意には、本発明によるデータストレージシステムは、以下の任意の特徴およびステップのうちいずれか1つを備えていてもよい。   Optionally, the data storage system according to the invention may comprise any one of the following optional features and steps:

キャッシュノードの数およびストレージリソースを適応し、すべてのデータベースシステム内容を保持する。   Adapt the number of cache nodes and storage resources and keep all database system contents.

データベースシステムの一部のデータは、2以上のキャッシュノードに保存される。   Some data of the database system are stored in two or more cache nodes.

すべてのデータベースのシステムの内容が少なくとも1つのキャッシュノードにソフトウェアアプリケーションによって転送された場合は、少なくとも1つのキャッシュノードのヒット率クエリは最終的には100%に到達する。   If the system content of all the databases has been transferred by the software application to at least one cache node, the hit ratio query of at least one cache node will eventually reach 100%.

本発明の別の態様では、本発明のデータストレージシステムを備える旅行プロバイダの在庫を提供する。   Another aspect of the invention is to provide an inventory of travel providers comprising the data storage system of the invention.

本発明によるデータストレージシステムを示す。1 shows a data storage system according to the invention. エンドユーザがリクエストし、まだキャッシュに存在しないデータをアプリケーションで最終的には取得するプロセスを例示する。It illustrates the process of an end-user requesting and eventually acquiring in the application data not yet present in the cache. アプリケーションからデータベースおよびキャッシュに同時に書き込むプロセスを記載する。Describe the process of writing from the application to the database and cache simultaneously. 同時書き込み操作が発生する具体的な事例において、キャッシュデータをデータベースから取得するプロセスを例示する。In the specific case where simultaneous write operations occur, we illustrate the process of acquiring cache data from a database. アプリケーションによってデータベースおよびキャッシュに同時に書き込みが実施されるデータのタイミングの詳細をさらに示す。It further shows details of the timing of the data being written to the database and cache simultaneously by the application. リクエストされたデータがキャッシュにもデータベースにも存在しない事例を例示する。This illustrates the case where the requested data does not exist in either the cache or the database. データベースの書き込みおよびキャッシュが削除される事例を例示する。Illustrate the case where database writes and caches are deleted.

以下の本発明の詳細な説明は、添付図を参照する。説明には代表的な実施形態を含むが、その他の実施形態も可能であり、本発明の精神および範囲から逸脱することなく、記載した実施形態を変更することもある。   The following detailed description of the invention refers to the accompanying drawings. While the description includes representative embodiments, other embodiments are possible, and modifications may be made to the described embodiments without departing from the spirit and scope of the present invention.

図1は本発明によるデータストレージシステム100を説明する。そのソフトウェアアプリケーション10は独自に、一方では、データベースシステム20に接続し、他方では、キャッシュとも称されるキャッシュシステムに接続し、1または複数のキャッシュノード30を備える。   FIG. 1 illustrates a data storage system 100 according to the present invention. The software application 10 uniquely connects to the database system 20 on the one hand and to a cache system, also referred to as a cache, on the other hand, and comprises one or more cache nodes 30.

以下で記載する本発明のデータベースキャッシュシステムは、特定のものであることは注目に値する。それは主に、データベースの内容全体が最終的には一式のキャッシュノードに転送されるためである。このキャッシュノードは、すべての読み込まれるトラフィックを保護するフロントエンド処理層として動作する。キャッシュノードが読み込まれるトラフィックを保護しない場合は、読み込まれるトラフィックはデータベースシステム20に到達してしまうため、データストレージシステム100の性能が大幅に改善される。十分な数のキャッシュノードを次に展開して、トラフィック全体をサポートし、データベースの内容全体を共に処理する。したがって、システムが立ち上がり、かなりの長期間稼働していた場合は、バックエンドデータベースに含有されるすべてのデータエンティティは、最終的には一式のキャッシュノードに転送されるか、キャッシュノードに存在する。それによって、すべての読み込みクエリはキャッシュノードによって取り扱われるため、もはやキャッシュの損失は起こらない。データベースの書き込みは、キャッシュおよびデータベースにおいて、体系的に実施される。そのため、キャッシュおよびデータベース内容は常に、一貫性を持つ。以下で記載するデータストレージシステムが、このように高速フロントエンド保存および処理システムをデータの格納庫として用いる場合であっても、キャッシュという用語は本発明の以下の説明で用いられる。   It is worth noting that the inventive database cache system described below is specific. This is mainly because the entire contents of the database are eventually transferred to a set of cache nodes. This cache node acts as a front end processing layer that protects all read traffic. If the cache node does not protect the traffic being read, then the traffic being read will reach the database system 20, thus significantly improving the performance of the data storage system 100. A sufficient number of cache nodes are then deployed to support the entire traffic and process the entire contents of the database together. Thus, if the system has been up and running for a significant period of time, all data entities contained in the back end database will eventually be transferred to a set of cache nodes or reside in cache nodes. As a result, all read queries are handled by the cache node so that no cache loss occurs anymore. Database writes are systematically implemented in caches and databases. As such, cache and database content are always consistent. Even though the data storage system described below uses such a high speed front end storage and processing system as a repository of data, the term cache is used in the following description of the invention.

データストレージシステム100は、データ処理システムでよく使われる伝統的なツリー階層アーキテクチャを取る。中間階層120はソフトウェアアプリケーション10階層であり、ソフトウェアアプリケーション10階層から、サービスプロバイダのプロプライエタリソフトウェアアプリケーション10が実行される。以前GDSで用いられていた例では、これは通常、航空会社の保有飛行機のすべての予約および座席の予約を管理することを目的とする、任意の航空会社の在庫管理アプリケーションである。   Data storage system 100 takes on the traditional tree hierarchy architecture commonly used in data processing systems. The middle hierarchy 120 is a software application 10 hierarchy, and from the software application 10 hierarchy, the service provider's proprietary software application 10 is executed. In the example used previously in the GDS, this is usually the inventory management application of any airline, whose purpose is to manage the reservations of all airline holdings and reservations of seats.

クライアント階層130は、アプリケーション10の遠隔ユーザ40のすべてからなる。前述の航空会社在庫のように、サービスプロバイダが設定する旅行アプリケーションの事例では、エンドユーザは通常、伝統的な旅行代理店の旅行代理人である。また、エンドユーザには個人もいる。個人は任意の多くの利用可能な旅行ウェブサイトまたはオンライン旅行代理店を使用し、そこから旅行の依頼をだし、場合によってはオンラインで飛行機を使う旅行を予約する。   The client hierarchy 130 comprises all of the remote users 40 of the application 10. In the case of travel applications set up by service providers, such as the aforementioned airline inventory, end users are typically travel agents of traditional travel agencies. End users also have individuals. The individual uses any of the many available travel websites or online travel agencies, from which travel requests are made and in some cases online travel bookings using airplanes.

下階層はストレージ階層110であり、データベースシステム20を備える。本発明はサービスプロバイダが用いるデータベースシステムについて考慮しない。市販の標準的なデータベースマネジメントシステム(DBMS)に基づくことがほとんどであるが、プロプライエタリデータベースシステムであってもよい。どちらのデータベースシステムをサービスプロバイダが用いるとしても、十分な量のハードウェアおよびソフトウェアリソースから実装され、サービスプロバイダのすべてのデータを保持し、処理する。図1では、データストレージシステム100を実装するために必要なすべてのハードウェアリソースは、符号101で全体的に言及する個々のコンピュータのようなマシンとして示される。永続的で、不揮発性のストレージは各個々のコンピュータおよび、必要な場合は、別のデータディスク102から利用可能と考えられ、たとえば恒久的にデータベースの内容を保持する。   The lower tier is a storage tier 110, which comprises a database system 20. The present invention does not consider the database system used by the service provider. Most of them are based on commercially available standard database management systems (DBMS), but they may be proprietary database systems. Which database system is used by the service provider, implemented from a sufficient amount of hardware and software resources, maintains and processes all data of the service provider. In FIG. 1, all hardware resources required to implement data storage system 100 are shown as machines such as the individual computers generally referred to at 101. Persistent, non-volatile storage is considered available from each individual computer and, if necessary, another data disk 102, for example, permanently retaining the contents of the database.

本発明のデータストレージシステムは、ストレージ階層110および中間階層120を備える。   The data storage system of the present invention comprises a storage tier 110 and an intermediate tier 120.

本発明では、「ユーザリクエスト」または「リクエスト」という用語は、ユーザ40からの要望を指し、アプリケーション10まで到達する。ユーザは、旅行者または旅行代理人などの個人であってもよく、リクエストを送信するコンピュータ化されたシステムであってもよい。   In the present invention, the terms "user request" or "request" refer to a request from the user 40 and reach the application 10. The user may be an individual, such as a traveler or a travel agent, or may be a computerized system that sends a request.

本発明では、「データクエリ」または「クエリ」という用語は、アプリケーション10からキャッシュノード30まで、および/またはデータベースシステム20まで送信される要望を指す。クエリは読み込みクエリまたは書き込みクエリであってもよい。   In the present invention, the terms "data query" or "query" refer to a request that is sent from the application 10 to the cache node 30 and / or to the database system 20. The query may be a read query or a write query.

読み込みクエリは、少なくともキャッシュノードから得る指示を含み、またはデータベースシステムからデータを読み込む指示を含む。通常、データをデータベースシステムから取得する行為は、「読み込む」と示され、キャッシュノードからデータを取得する行為は「得る」と示される。クエリされたデータは少なくとも、少なくとも部分的に、ユーザリクエストを実現するために得る、または読み込まねばならないデータである。   The read query includes at least an instruction obtained from the cache node or an instruction to read data from the database system. Usually, the act of acquiring data from a database system is indicated as "read" and the act of acquiring data from a cache node is indicated as "get". The queried data is, at least in part, data that must be obtained or read to fulfill the user request.

書き込みクエリは、データを追加し、更新/設定し、または削除する指示を含む。通常、データベースシステムからのデータを修正するための行為は、「更新する」と表され、キャッシュノードからのデータを修正するための行為は、「設定する」と表される。   The write query includes instructions to add, update / set, or delete data. Usually, the action to modify data from the database system is referred to as "updating" and the action to modify data from the cache node is referred to as "setting up".

したがって、以下の発明では、アプリケーション10はユーザリクエストを受信し、データクエリを送信する。これらのクエリは読み込みクエリまたは書き込みクエリである。   Thus, in the following invention, the application 10 receives a user request and sends a data query. These queries are read or write queries.

どちらのシステムを実際に用いるにしても、本発明はデータベース20がサービスプロバイダの最終的なデータリポジトリであると推定する。データベース20は次に、好ましくはACID(原子性、一貫性、独立性および永続性)の特性一式を守り、したがって、データベーストランザクションが、原子性、一貫性、独立性および永続性に関して確実に処理されることを保証する。   Whichever system is actually used, the present invention deduces that the database 20 is the service provider's ultimate data repository. The database 20 then preferably observes the complete set of ACID (atomicity, consistency, independence and permanence) properties, thus ensuring that database transactions are processed with respect to atomicity, consistency, independence and permanence. Guarantee that.

従来技術で既知の前述したデータベースシステムに関して、本発明のソフトウェアアプリケーション10は、このように独立して、専用インターフェース12を通じてデータベース20に、直接接続したままである。したがって、データベースシステムの動作は、ソフトウェアアプリケーション10との専用インターフェース14を独自に持つ、1または複数のキャッシュノード30によってまったく影響されない。本発明の以下の説明でさらに論じるように、データベースが処理しなければならない必須のトランザクションのみをデータベースに送信するかは、ソフトウェアアプリケーション10次第である。つまり、新規の予約が完了し、一般に、たとえば、キャンセルが発生するなどのために、予約の何らかの状況を変化しなければならない結果として、データベースの内容が恒久的に更新される場合などである。   With respect to the aforementioned database system known in the prior art, the software application 10 of the present invention thus remains directly connected to the database 20 through the dedicated interface 12. Thus, the operation of the database system is not affected at all by one or more cache nodes 30, which have their own dedicated interface 14 with the software application 10. As discussed further in the following description of the invention, it is up to the software application 10 to send only the required transactions that the database has to process to the database. That is, the contents of the database may be permanently updated as a result of having to change some aspect of the reservation, for example, because a new reservation has been completed and, for example, a cancellation occurs.

したがって、キャッシュノード30のいずれもデータベースシステム20と接続しない。メッセージ、指示またはデータはまったく、データベースシステムとキャッシュノード30との間で交換されない。   Therefore, none of the cache nodes 30 connect with the database system 20. No messages, instructions or data are exchanged between the database system and the cache node 30.

データストレージシステム100では、ソフトウェアアプリケーション10が処理するすべてのトラフィックは、次に、専用キャッシュソフトウェアアプリケーション10のインターフェース14を通じてサポートされる。図1に示すように、キャッシュは機能的にデータベースなどのストレージ階層に配置される。インターフェース14および1または複数のキャッシュノード30は、どのようなスループットが目標であっても、ソフトウェアアプリケーション10の階層120で、およびキャッシュノードのためにストレージ階層110で、期待するスループットに見合う十分なハードウェアおよびソフトウェアリソースを提供し、展開することのみによって、データストレージシステム100のすべてのトラフィックを処理できると想定される。したがって、多くのデータを処理することは、多くの計算および保存リソースをリソースに追加することによってのみ実現できる。このようにすると、システムの拡張性は、目標とするスループット、つまりそのコスト、電力損失および占有面積を実現するために展開する必要がある、コンピュータプラットフォームの数以外の構造的考慮によって限定されない。   In the data storage system 100, all traffic that the software application 10 processes is then supported through the interface 14 of the dedicated cache software application 10. As shown in FIG. 1, caches are functionally arranged in storage tiers such as databases. The interface 14 and one or more cache nodes 30 are hard enough to meet the expected throughput in the hierarchy 120 of the software application 10 and in the storage hierarchy 110 for the cache nodes, whatever throughput is the goal It is assumed that all traffic of data storage system 100 can be processed by only providing and deploying hardware and software resources. Thus, processing a large amount of data can only be achieved by adding many computational and storage resources to the resource. In this way, the scalability of the system is not limited by structural considerations other than the number of computer platforms that need to be deployed to achieve the targeted throughput, ie its cost, power loss and footprint.

前述の拡張性を効率的にするために、データストレージシステム100は、キャッシュおよびデータベースで内容が一貫しているグローバルなキー/値データモデルに基づく。そのため、同じキーを用いて両方を取り出すことができる。データモデルは、このように、データベースおよびキャッシュに直接マッピング可能であるように選択される。特に、データの各セットは機能エンティティによってグループ分けされ、共通の一意キーによってインデックスが付けられる。これによって、内容がある程度異なっているとしても、データベースおよびキャッシュ両方の一意キーから全体的にすぐにアクセス可能となる。上記のように動作するためのデータモデルの唯一の要件は以下の通りである。
−キャッシュ内で更新されるべきデータの上位集合をロックするための更新前の能力。
−所与の更新によって影響を受ける、データベース内のすべてのキャッシュキーを更新するために推測する可能性。
In order to make the aforementioned extensibility efficient, the data storage system 100 is based on a global key / value data model that is consistent in cache and database. Therefore, both can be retrieved using the same key. The data model is thus chosen to be directly mappable to the database and cache. In particular, each set of data is grouped by functional entity and indexed by a common unique key. This allows overall immediate access from both the database and cache unique keys, even if the content is somewhat different. The only requirements of the data model to operate as above are:
Pre-update ability to lock the superset of data to be updated in the cache.
-Possibility of guessing to update all cache keys in the database that are affected by a given update.

旅行業界分野での典型的な例は以下の表の通りである。   Typical examples in the travel industry are as follows:

Figure 0006511394
式中、
(*)O&D=出発地と目的地
(**)区間はフライトの一部である。たとえば、ニース(NCE)からニューヨーク(NYC)まで、パリ(CDG)での途中降機があるフライトを例に取る。このフライトには2つの区間がある。NCE−CDGおよびCDG−NYCまでである(フライトが3つのO&Dを有することに注意されたい。O&D:NCE−CDG、NCE−NYCおよびCDG−NYCである。)
Figure 0006511394
During the ceremony
(*) O & D = departure and destination (**) sections are part of the flight. Take, for example, a flight with a stopover in Paris (CDG) from Nice (NCE) to New York (NYC). This flight has two sections. NCE-CDG and CDG-NYC (note that the flight has 3 O & D. O & D: NCE-CDG, NCE-NYC and CDG-NYC)

前述の例では、スケジュール情報は関連するデータベースに保存される。「母」表はフライト−日付の一次キーを有する。「子」表のうち1つは、区間−日付一次キーを有する。一部の書き込み(たとえば更新)は、フライトレベルで行われ、他の書き込みは区間レベルで行われる。フライトレベルでロックすることは両方の事例で行われる。これを用いて、フライトおよびフライトのすべての区間においていかなる修正も行われないようにする。ロックは区間−日付レベルでは設定することはできない。なぜなら、フライトの更新は、次にすべての区間を更新し、同時更新につながることもありえるためである。   In the above example, the schedule information is stored in the associated database. The "Mother" table has flight-date primary keys. One of the "child" tables has an interval-date primary key. Some writes (e.g., updates) occur at the flight level and other writes occur at the interval level. Locking at the flight level is done in both cases. This is used to ensure that no corrections are made on the flight and all sections of the flight. Locks can not be set at the interval-date level. This is because a flight update can update all the segments next and lead to a simultaneous update.

したがって、データベースおよびキャッシュのデータモデルは、まったく同一でない場合は、一貫性がなければならない。それによって、データベース記録がロックされることを許可しながら、キャッシュおよびデータベースの記録にアクセスするために同一の記号キーを導くことができる。   Thus, the database and cache data models must be consistent if not identical. Thereby, the same symbolic key can be derived to access the cache and database records while allowing the database records to be locked.

図1に示すアーキテクチャは、スループット全体をサポートし、またおよびキャッシュデータ一貫性のマネジメントを大幅に単純化する分散キャッシュとして、単一層クライアント側として構成されるキャッシュを用いる。クライアント側分散キャッシュを有することは、キャッシュを構成する様々なキャッシュノード30の間のデータ分散が既知であり、ソフトウェアアプリケーション10階層でクライアント側で計算されることを意味する。結果として、すべてのキャッシュノード30は、したがって、完全に独立し、システムの拡張性は実際に潜在的には無制限である。ただし、実際に、ストレージ階層に新規のキャッシュノード30を追加して処理動力をさらに得ることは、ノード間でのデータの分散もバランスが取れている場合にのみ、実現可能である。分散が実際にバランスが取れるようにするためには、データは分散キープロパティに基づいて分散される。たとえば、フライトに関するデータはフライト番号に基づいて分散される。利用可能なキャッシュノードの数または分散パラメータが変化することよって、分散の変化をもたらす修正は、たとえば、また、正常な再分散手順によってサポートされる。この手順では、キャッシュシステム全体をオンラインに維持し、再分散が起きている間、公称条件で動作する。この目的のため、2つのキャッシュ構成に対する一時的な複式供給については、本発明の以下の説明で後述する。   The architecture shown in FIG. 1 uses a cache configured as a single-tier client side as a distributed cache that supports overall throughput and also greatly simplifies the management of cache data consistency. Having a client-side distributed cache means that the data distribution among the various cache nodes 30 that make up the cache is known and calculated on the client side in the software application 10 hierarchy. As a result, all cache nodes 30 are therefore completely independent and the scalability of the system is practically unlimited. However, in practice, adding a new cache node 30 to the storage tier to further obtain processing power can be realized only when distribution of data among the nodes is also balanced. Data is distributed based on the distribution key properties so that the distribution is actually balanced. For example, data on flights may be distributed based on flight numbers. A modification that results in a change in distribution due to changes in the number of available cache nodes or distribution parameters is also supported, for example, by a normal redistribution procedure. In this procedure, the entire cache system is kept online and operates at nominal conditions while redistribution takes place. To this end, temporary duplex provisioning for two cache configurations will be described later in the following description of the invention.

本発明のデータストレージシステム100は、キャッシュとデータベース間にいかなる同期機構も必要としない。キャッシュはソフトウェアアプリケーション10によって明示的に用いられる。つまり、たとえば、データベースまたはキャッシュが書き込まれなければならないとき、同一のユーザリクエストの間に、2つのデータソース、つまり、データベースまたはキャッシュのどちらか1つを用いるか、または両方を用いるかを決めるのはソフトウェアアプリケーション10階層である。この手法の直接的な結果として、データベースがまったくキャッシュの存在に気づかず、本発明のデータ構造のキャッシュの存在または不在によって影響を受けない。逆も明らかに真である。キャッシュは完全にデータベースから切り離される。こうして、両方の構造は完全に、必要に応じて独自に進化する。   The data storage system 100 of the present invention does not require any synchronization mechanism between cache and database. The cache is explicitly used by the software application 10. That is, for example, when a database or cache must be written, it is decided during the same user request whether to use two data sources, one or both of the database or cache Is a software application 10 hierarchy. As a direct consequence of this approach, the database is not aware of the existence of cache at all and is not affected by the presence or absence of the cache of the data structure of the present invention. The reverse is also obviously true. The cache is completely disconnected from the database. Thus, both structures completely evolve independently, as needed.

キャッシュ内のデータ書き込みは、無効ポリシーを用いないことに留意が必要である。すべての書き込みはデータを直ちにキャッシュと交換する結果となる。データベース全体の内容が最終的にはキャッシュにマッピングされ、すべての利用可能なキャッシュノード30に分散され、非常に高レベルの同時書き込みが発生する場合であっても、ヒット率は100%となる。   It should be noted that data writes in the cache do not use an invalid policy. Every write results in the immediate exchange of data with the cache. The contents of the entire database are eventually mapped to caches and distributed to all available cache nodes 30, and even if very high levels of simultaneous writes occur, the hit ratio is 100%.

キャッシュデータは常に、有効であると考えることができ、有効性を確認するための追加のプロセスが必要ない。実際に、すべてのキャッシュは、失われた値をデータベースからキャッシュに追加するトリガを見逃す。これは最終的に行われ、したがって、データエンティティごとに1回のみ取り出して取得されるデータベースに対して最低限の負荷となるようにする。これは、キャッシュが動作可能となるとき、たとえば、キャッシュノード30追加後にシステムを起動した後、故障またはキャッシュノード30の後、メインテナンス操作の後に起きることが多い。本発明は、分散キャッシュノード30内にデータベースの内容全体を受容する十分な余地があることを前提としている。   Cached data can always be considered valid and does not require an additional process to check its validity. In fact, all caches miss the trigger to add lost values from the database to the cache. This is ultimately done, thus, to minimize the load on the database retrieved only once per data entity. This often occurs after maintenance operations when the cache becomes operational, for example, after booting the system after adding cache node 30, and after a failure or cache node 30. The present invention assumes that there is sufficient room in the distributed cache node 30 to accept the entire contents of the database.

エンドユーザがリクエストしたデータがデータベース内にないこともキャッシュに記録される。エンドユーザがリクエストしたデータがキャッシュに発見できず、データベースからの取得できない場合は、データ不在がキャッシュに記録され、次回キャッシュがクエリを受けるとき、データベースの負荷を制限するために、対応するデータをデータベースから取り出す試みは行われない。   The cache also records that the data requested by the end user is not in the database. If the data requested by the end user can not be found in the cache and can not be retrieved from the database, the data absence will be recorded in the cache and the next time the cache is queried, the corresponding data will be limited to limit the database load. No attempt is made to retrieve from the database.

図1に記載するアーキテクチャは、キー−値方式を取れる任意の種類のデータに拡張可能である。また、キー−値方式を取れる任意のプロセスに適用可能である。具体的には、フライトの利用可能性を確認するように考案される任意のプロセスに適用可能である。   The architecture described in FIG. 1 can be extended to any kind of data that can be key-value based. Also, it is applicable to any process that can take a key-value scheme. In particular, it is applicable to any process designed to confirm the availability of a flight.

以下の図は、データベースとキャッシュとの間で、そのキャッシュを取得するためにソフトウェアアプリケーション10が実行する操作を説明する。キャッシュは、最終的にはソフトウェアアプリケーション10が生成するトラフィック全体をサポートし、すべてのユーザリクエストに対応する。   The following diagram describes the operations that the software application 10 performs to obtain its cache, between the database and the cache. The cache ultimately supports the entire traffic generated by the software application 10 and handles all user requests.

前述のように、システムのキャッシュ部分は、かなり単純であり、基本的なリモートキー/値プロトコルを提供する1または複数の独立したコンピュータからなる。キャッシュ上の3つの基本的な操作が次のように規定される。つまり、ソフトウェアアプリケーション10にキャッシュを更新させること、キャッシュをデータベースから入力させること、およびデータをキャッシュから取得させることである。
設定(キー、値):キーに関連する値を無条件に更新する。
追加(キー、値):キーに関連する値がキャッシュにまだない場合は、追加する。
取得(キー):キーに関連する値をキャッシュから返す。
本発明は、期待するレベルの性能が実現される限り、ソフトウェアアプリケーション10によって実装される方法に関していかなる想定もしない。有利には、バルク操作が規定される。バルク操作によって、複数の基本的な操作を一緒に送信し、処理できるようになる。
As mentioned above, the cache portion of the system is fairly simple and consists of one or more independent computers that provide the basic remote key / value protocol. Three basic operations on the cache are defined as follows. That is, having the software application 10 update the cache, having the cache input from the database, and having the data be obtained from the cache.
Setting (key, value): Update the value associated with the key unconditionally.
Add (key, value): Add the value associated with the key if it is not already in the cache.
Get (key): Return the value associated with the key from the cache.
The present invention makes no assumptions about the method implemented by the software application 10 as long as the expected level of performance is realized. Advantageously, bulk operation is defined. Bulk operations allow multiple basic operations to be sent together and processed.

システムの主要部分はソフトウェアアプリケーション10階層にあり、キャッシュノード30すべてにわたってデータ分散を制御する。キー/値データは、キャッシュを構成するノード間で分散する。すべてのノードにわたってできるだけ均一に分散できるように、キーのプロパティを抽出して、対応するキャッシュノード30を次の計算式で計算する。
ノード_数=数としてキー_プロパティ_MODULOノード数
The main part of the system is in the software application 10 hierarchy, which controls data distribution across cache nodes 30. Key / value data is distributed among the nodes that make up the cache. The properties of the key are extracted and the corresponding cache node 30 is calculated according to the following formula so that it can be distributed as uniformly as possible across all nodes.
Node_number = key as number_property_MODULO node number

フライトに関するデータはプロパティを用いる。連続したフライト番号が通常同一のプロパティを有するフライトに用いられる。この事例では、フライト番号は分散の基礎として直接用いられる。   Data about flight uses properties. Consecutive flight numbers are usually used for flights having the same property. In this case, the flight number is used directly as the basis of the variance.

フライトの出発地と目的地(O&D)に基づくフライトに関するデータに対して、ハッシュ値は単独のO&Dキーで計算される。   The hash value is calculated with a single O & D key, for data about the flight based on the flight origin and destination (O & D).

前述のように、すべての利用可能なノード上で、データ分散のバランスを取ることは、制限のない拡張性を実現するために実際に重要である。   As mentioned above, balancing data distribution on all available nodes is really important to achieve unlimited scalability.

図2および図3は、キャッシュにデータが入力される方法およびソフトウェアアプリケーション10の制御のみで、キャッシュがデータベースの内容と一貫性を保つ方法を示す。   FIGS. 2 and 3 illustrate how the cache is consistent with the contents of the database with only the way data is entered into the cache and the control of the software application 10.

図2はプロセスを記載する。プロセスは、最終的にはソフトウェアアプリケーション10でエンドユーザがリクエストし、キャッシュにまだ存在しないデータを取得することを許可する。この状況がよく起こるのは、たとえば、システムの起動後にキャッシュにデータが入力されるときであり、または新規のノードを挿入したか除去し、キャッシュノード30の内容のバランスを再び取ることが進行中である場合などである。   FIG. 2 describes the process. The process eventually allows the end user to request in the software application 10 to obtain data that is not yet present in the cache. This situation often occurs, for example, when data is entered into the cache after system startup, or a new node has been inserted or removed, and it is in progress to rebalance the contents of cache node 30 And so on.

ソフトウェアアプリケーション10がユーザリクエストに応える必要があるとき、キャッシュはまず、「取得」操作210を通じて読み込まれる。航空会社の在庫データベースの例では、これは、たとえば、データベースのエンドユーザが発する多数のユーザリクエストの1つに答えることである。ユーザリクエストは、特定の日付、特定のクラスなどで具体的なフライトの座席が利用可能かどうかを判別するために行われる。対応するデータがキャッシュにない場合は、つまり、一般的に、対応するデータが以前の読み込みによって、まだキャッシュに取り入れられていない場合は、キャッシュは次に「損失」220をソフトウェアアプリケーション10に返す。そうでない場合は、情報は、「取得」操作を送信するソフトウェアアプリケーション10にキャッシュから単に返送されることは明らかである。ソフトウェアアプリケーション10は、したがってエンドユーザのユーザリクエストを実行することができる。最終的には、ソフトウェアアプリケーション10は、クエリされたデータを追加のデータと集約し、エンドユーザからのリクエストに応じて返送する。追加のデータは通常は、ユーザリクエストを実行するために必ず取得されることもある別のデータである。たとえば、一部のデータはキャッシュノードから得ることができるが、同一のユーザリクエストを実行するために必要な別のデータも他のキャッシュノードから取得し、および/またはデータベースシステム20から読み込まねばならない。   When the software application 10 needs to respond to a user request, the cache is first read through a "get" operation 210. In the example of an airline inventory database, this is, for example, to answer one of a number of user requests issued by end users of the database. A user request is made to determine if a particular flight seat is available for a particular date, a particular class, etc. If the corresponding data is not in the cache, that is, generally, if the corresponding data has not yet been incorporated into the cache by a previous read, then the cache then returns a "loss" 220 to the software application 10. If this is not the case, it is clear that the information is simply returned from the cache to the software application 10 sending the "get" operation. The software application 10 can thus execute the end user's user request. Finally, software application 10 aggregates the queried data with additional data and returns it in response to requests from end users. The additional data is usually another data that may or may not be obtained to fulfill the user request. For example, some data may be obtained from a cache node, but other data needed to perform the same user request may also be obtained from other cache nodes and / or read from database system 20.

クエリされたデータがキャッシュにはないという情報を受信すると、ソフトウェアアプリケーション10は、データベースに「読み込む」操作230で問い合わせる。損失情報は次に240でソフトウェアアプリケーション10に返送される。データベースからのデータの読み込みは、前述したように、データベース専用インターフェース12で行われる。これは、ソフトウェアアプリケーション10から、対応するクエリを本発明のデータストレージシステム100が用いるデータベースマネジメントシステム(DBMS)に発行することによって行われる。   Upon receiving information that the queried data is not in the cache, the software application 10 queries the database in a "read" operation 230. The loss information is then returned 240 to the software application 10. Reading of data from the database is performed by the database dedicated interface 12 as described above. This is done by issuing the corresponding query from the software application 10 to a database management system (DBMS) that the data storage system 100 of the present invention uses.

データベースからキャッシュにないデータを受信すると、ソフトウェアアプリケーション10は次に、「追加」操作250を実施して、データをキャッシュに保存する。この時点以降、キャッシュが動作可能であり、再構成されない限り、データはキャッシュ内に存在する270。この操作が終了すると、肯定応答(OK)260がソフトウェアアプリケーション10に返送される。 Upon receiving non-cached data from the database, software application 10 then performs an "add" operation 250 to cache the data. From this point on, data is in the cache 270, unless the cache is operational and reconfigured. When this operation is completed, an acknowledgment (OK) 260 is sent back to the software application 10.

このプロセスは、データベースおよびキャッシュノード30同一に保存される、または一貫性を持つ任意の所与のデータに対してキャッシュが更新され、動作している間に1回のみ行われることに留意したい。これは、データがソフトウェアアプリケーション10によってリクエストされたが、キャッシュにまだ存在していないときにまず起こる。この後、たとえば、航空会社座席が販売されて、データベースの内容を変更する必要がある場合は、対応するデータが更新されることもある。この事例では、後述するように、ソフトウェアアプリケーション10は、キャッシュおよびデータベースの両方を更新するため、図2のプロセスを再実行する必要はまったくない。   It should be noted that this process is performed only once while the cache is updated and operating for any given data that is stored identically or consistent with the database and cache node 30. This first occurs when data has been requested by the software application 10 but is not yet present in the cache. After this, for example, if the airline seat is sold and the contents of the database need to be changed, the corresponding data may be updated. In this case, as described below, the software application 10 does not have to re-execute the process of FIG. 2 in order to update both the cache and the database.

図3は、ソフトウェアアプリケーション10から同時にデータベースおよびキャッシュを更新するプロセスを記載する。   FIG. 3 describes the process of updating the database and cache from software application 10 simultaneously.

一貫したデータベースおよびキャッシュ内容を維持するために、ソフトウェアアプリケーション10は常にキャッシュおよびデータベースの両方を更新する。キャッシュの更新は次に、前述の通り「設定」操作310で行われる。同時に、データベースの「更新」305は仕様しているDBMSのクエリ言語を用いて実施される。アプリケーションによってデータベースに対して操作がコミットされた後、更新320は効率的である。   To maintain consistent database and cache content, software application 10 constantly updates both cache and database. The cache update is then performed in the "set" operation 310 as described above. At the same time, database "update" 305 is implemented using the query language of the DBMS being specified. Update 320 is efficient after the application commits the operation to the database.

より具体的には、更新がデータベースで行われているときには、設定は行われないが、コミットが行われているときには設定が行われる。アプリケーションによって、データはコミットが終わるまで、メモリに設定されたままとなる。更新305と設定310との間に多数のステップがあることもある。ただし、設定310およびコミット320は続いて実施されるように意図される。   More specifically, settings are not performed when the update is performed in the database, but are performed when the commit is performed. Depending on the application, the data remains in memory until it is committed. There may be multiple steps between update 305 and configuration 310. However, configuration 310 and commit 320 are intended to be implemented subsequently.

安定状態では、つまりシステムが起動されて、長期間稼働した後で、データベースのすべての内容をすべてのキャッシュノード30にわたって最終的に取り入れて、分散する。次に、更新操作、つまり内容更新、挿入および削除は、データベースインターフェース上で実施する必要があるが唯一の操作である。このため、データベース負荷が大幅に減少する。削除操作の場合は、図7に記載するキャッシュ内で対応するデータの無効化をトリガする。   In steady state, i.e. after the system has been started up and running for a long time, all the contents of the database are eventually taken over and distributed across all cache nodes 30. Next, update operations, ie content updates, inserts and deletes, are the only operations that need to be performed on the database interface. As a result, the database load is significantly reduced. In the case of a delete operation, invalidation of corresponding data is triggered in the cache described in FIG.

また、本発明のキャッシュは、図3のプロセスはキャッシュに書き込むために実行すべき任意の具体的な条件を想定していないため、読み込みおよび書き込み操作の両方から入力されることに留意しなければならない。これによって、キャッシュ入力のために読み込みのみを用いるシステムと比較して、起動後のキャッシュノード30の入力を大幅に早めることができる。これは可能であり、このように単純に行われる。前述したように、データベースおよびキャッシュが保存するデータエンティティは、両方とも更新され続ける。データベースおよびキャッシュの内容が一般に大きく異なる他のキャッシュソリューションでは更新はされ続けない。これは、キャッシュストレージ要件を最小にしようとするためであり、またはソフトウェアアプリケーション10に提供されるキャッシュデータエンティティが様々な部分のデータベースから抽出されたデータを解体して構成されているためである。   Also note that the cache of the present invention is input from both read and write operations, as the process of FIG. 3 does not assume any specific conditions to be performed to write to the cache. It does not. This allows the input of the cache node 30 after startup to be significantly faster than in a system that uses read only for cache input. This is possible and is done simply as such. As mentioned above, the data entities stored by the database and cache both continue to be updated. Updates do not continue to be made in other caching solutions where the contents of the database and cache generally differ widely. This is to try to minimize cache storage requirements, or because the cache data entities provided to the software application 10 are constructed by disassembling data extracted from various parts of the database.

図4は、図2のプロセスを記載する。具体的には、データベースの同時書き込み(たとえば更新)がソフトウェアアプリケーション10からリクエストされ、したがってその実行に干渉する事例である。   FIG. 4 describes the process of FIG. Specifically, the case is the simultaneous writing (e.g. updating) of the database is requested from the software application 10 and thus interferes with its execution.

図2に記載した方式と同様に、プロセスはデータをキャッシュから「取得」する210から開始する。その後「損失」220が続き、損失しているデータをデータベースから取り出すこと230をトリガする。ただし、損失しているデータは通常は、ソフトウェアアプリケーション10に戻される240。同一のデータに対する書き込みクエリ410もまた、ソフトウェアアプリケーション10から受信される。書き込みは図3に説明するように行われる。キャッシュ内で、「設定」操作310およびデータベース内で「更新」操作305を用いて書き込みは行われる。「設定」がキャッシュに対して発行され、データベースにおいて、「コミット」320が送信されるとき、対応するデータは、直ちに利用可能420となる。設定がトリガされる前に、アプリケーションはデータをメモリに保持する(「メモリ内に設定」)。   Similar to the scheme described in FIG. 2, the process starts at 210 "getting" data from the cache. This is followed by a "loss" 220, triggering retrieval 230 of the data being lost from the database. However, the lost data is typically returned 240 to the software application 10. Write queries 410 for the same data are also received from software application 10. Writing is performed as described in FIG. In the cache, writes are done using the "set" operation 310 and the "update" operation 305 in the database. When a "set" is issued to the cache and a "commit" 320 is sent in the database, the corresponding data becomes immediately available 420. The application holds the data in memory ("set in memory") before the configuration is triggered.

次に、この具体的な事例では、キャッシュ内容は以下の「追加」250によってさらに更新されてはならない。これは損失しているデータをデータベースから取り出す230行為の結果であり、データベースはその間に更新されているためである。「追加」252は次に、実際に中断される。否定応答(KO)262が戻され、ソフトウェアアプリケーション10にキャッシュの更新が「追加」操作によって実際には行われていないことを通知する。   Second, in this particular case, the cache content should not be further updated by the "Add" 250 below. This is the result of the act of retrieving 230 the lost data from the database, as the database has been updated in the meantime. "Add" 252 is then actually interrupted. A negative acknowledgment (KO) 262 is returned, notifying software application 10 that a cache update is not actually being performed by the "add" operation.

したがって、キャッシュをデータベースに読み取ったデータで更新するために、本発明は追加コマンドを用いる。それによって、データをデータベースにロックせずに、データをキャッシュに送信することができる。実際に、データを追加しようとするときに、データがまだキャッシュにない場合は、効率的に追加される。更新プロセスによって、その間更新されていた場合は、追加は失敗するが、予想されていることである。更新プロセスはデータベース上にロックを持ち、このキーに対して更新する優先順位を持つ。したがって、これがキャッシュに留まることは通常のことである。   Thus, in order to update the cache with data read into the database, the present invention uses additional commands. Thereby, the data can be sent to the cache without locking the data to the database. In fact, when trying to add data, it is efficiently added if the data is not yet in the cache. If it has been updated by the update process, the addition will fail but is expected. The update process has a lock on the database and has a priority to update on this key. Therefore, it is normal for this to remain in the cache.

本発明のこれらの特徴によって、特に、データベースシステムおよびキャッシュは、お互いの性能に対してロックもできず、影響を与えることもできないため、更新プロセスと非常にスムーズに一体化することが可能となる。同時に、データは1度しかデータベースで読み取られないため、データベースに対する負荷は最大限低くなる。   These aspects of the invention allow, among other things, the database system and the cache to integrate very smoothly with the update process, as they can neither lock nor affect the performance of each other. . At the same time, the load on the database is maximally reduced, as the data is read in the database only once.

図5は、ソフトウェアアプリケーション10によってデータベースおよびキャッシュで同時に実施されるデータ更新のタイミングをさらに詳細に記載する。   FIG. 5 describes in more detail the timing of data updates simultaneously implemented in the database and cache by the software application 10.

ソフトウェアアプリケーション10は、対応するクエリ510をデータベースに発行して、現在保存されている値を取得することによって、更新トランザクションを開始する。同時に、同時更新が別のソフトウェアアプリケーション10から行われないように、データベースマネジメントシステム(DBMS)は、現在保存されている値をロックする。ソフトウェアアプリケーション階層内で、データはソフトウェアアプリケーション10によって処理される。データがDBMSによって、更新される用意ができると530、バッファキャッシュ540の更新がソフトウェアアプリケーション10でも実施され、キャッシュに転送され保存されるべき新規データを保持する。   Software application 10 initiates an update transaction by issuing a corresponding query 510 to the database to obtain the currently stored values. At the same time, the database management system (DBMS) locks the currently stored values so that simultaneous updates are not made from another software application 10. Within the software application hierarchy, data is processed by software application 10. Once the data is ready to be updated by the DBMS 530, an update of the buffer cache 540 is also implemented in the software application 10 to hold the new data to be transferred and stored in the cache.

次に、ソフトウェアアプリケーション10は、変更550をコミットすることができ、変更550はキャッシュ552で「設定」操作で直ちに実施され、また、データベース554にコミットされる。このように、新規データは、実際にデータベースにコミットされ、利用可能558となるより少し前556にキャッシュで利用可能となることに気づくであろう。参照556は、データベースシステム20ではまだ利用できないときに、更新が行われて、エンドユーザがキャッシュで利用可能となる時間枠を示す。   Software application 10 may then commit change 550, which is immediately implemented in a “set” operation at cache 552 and committed to database 554. Thus, it will be noted that the new data is actually committed to the database and becomes available to the cache 556 shortly before it becomes available 558. The reference 556 indicates the time frame that will be updated and available to the end user in the cache when it is not yet available to the database system 20.

たとえば、ハードウェアおよび/またはソフトウェアの故障など何らかの理由で、コミットするが通常通り終了しなかった場合は、以前のキャッシュへの書き込み操作、つまり「設定」操作552はロールバックされるため、キャッシュ内容は変更されない。したがって、コミットが失敗すると、「コミットKO」560がアプリケーションに送られ、次に削除562をキャッシュに対して発行し、追加されたデータを削除する。その結果として、その期間564内に、誤った値が、キャッシュに存在することになる。   For example, if you commit for some reason, such as a hardware and / or software failure, but do not finish normally, the previous cache write operation, the "set" operation 552, is rolled back, so the cache contents Will not change. Thus, if the commit fails, a "commit KO" 560 is sent to the application, which then issues a delete 562 to the cache to delete the added data. As a result, during that period 564, an incorrect value will be present in the cache.

したがってデータベースに関連せず最高性能の、影響の大きいデータ品質がキャッシュに提供される。更新はキャッシュに、ライトアヘッドコミットを用いて「コミット依頼」データで伝達される。相違する制約がキャッシュされたデータに禁じられている場合は、データベースと比較して、キャッシュ内のデータを「悪くても」前もって形成するが、具体的には、非常に高コストな通常の2段階のコミットアーキテクチャを用いずに、任意の追加のコストは発生しない。このような品質は、利用可能リクエストのためのデータ品質要件を満たし、最終的なクライアントの観点からの優位点としても考えられえる。   Thus, the highest performance, high impact data quality is provided to the cache, regardless of database. Updates are communicated to the cache with "commit request" data using write-ahead commit. If different constraints are barred by cached data, then the data in the cache will be "prepared" to be "pre-formed" in comparison to the database, but in particular the very expensive normal 2 Without the staged commit architecture, there is no additional cost incurred. Such quality meets the data quality requirements for available requests and can also be considered as an advantage from the perspective of the final client.

図6は、クエリされたデータがキャッシュにもデータベースにもない事例を記載する。これは、データベースが保持していない情報をエンドユーザがリクエストしている場合を扱う。   FIG. 6 describes the case where the queried data is neither in cache nor in the database. This deals with the case where the end user requests information that the database does not hold.

このような状況が発生すると、データベースへのさらなる問い合わせを避けるために、対応するデータ不在もキャッシュに記録される。すると、次回キャッシュがソフトウェアアプリケーション10から問い合わせを受けるとき、クエリされたデータがデータベースに不在であるという情報が直接キャッシュ自体によって提供され、したがってさらにデータベース負荷が減少する。   When such a situation occurs, the corresponding data absences are also cached to avoid further queries to the database. The next time the cache is queried from the software application 10, the information that the queried data is absent in the database is provided directly by the cache itself, thus further reducing the database load.

プロセスは図2に記載のものと類似している。キャッシュに対して発行された「取得」操作210が「損失」220を返答すると、データベースの対応するデータの読み込み230もまた、ソフトウェアアプリケーション10にデータベース「損失」640を返答する。次に、データ不在がキャッシュに追加される650。データと同様に、データ不在はキャッシュで直ちに利用可能270になり、キャッシュは応答260をソフトウェアアプリケーション10に返答する。 The process is similar to that described in FIG. When the "get" operation 210 issued to the cache returns a "loss" 220, the reading 230 of the corresponding data in the database also returns the database "loss" 640 to the software application 10. Next, data absences are added to the cache 650. Similar to the data, the data absence is immediately available 270 in the cache, which returns a response 260 to the software application 10.

非限定的な実施形態によれば、各データはヘッダと関連し、記録を形成する。ヘッダはデータベースシステム20で内容が損失しているかどうかを示す。したがって、記録のヘッダを読み込むだけで、データベースシステムを取り出す価値があるかどうかを知ることができる。代替的実施形態によれば、キャッシュノードはデータに関連する特定の値を保存する。この特定の値はデータがデータベースに存在しないことを示す。したがって、記録の値を読み込むだけで、データベースシステムを取り出す価値があるかどうかを知ることができる。   According to a non-limiting embodiment, each data is associated with a header to form a record. The header indicates whether or not the content is lost in the database system 20. Therefore, it is possible to know whether it is worth extracting the database system just by reading the header of the record. According to an alternative embodiment, the cache node stores specific values associated with the data. This particular value indicates that the data does not exist in the database. Therefore, it is possible to know whether it is worth retrieving the database system simply by reading the value of the record.

図7は、図3で前述した事例を例示する。この事例では、アプリケーションからの特定の更新操作がデータ705をデータベースから削除する。この操作は図3で説明するように全体的に実施されるが、削除されたデータは実際にはキャッシュから削除されず、「データ不在」として表示することによって示される。削除がアプリケーションによってデータベースコミットされる320と、対応する情報は特定の「設定」操作310でキャッシュに保存される。「データ不在」は直ちに利用可能330となる。したがって、前述したように、キャッシュが後ほど問い合わせを受ける場合は、リクエストされたデータはもはやキャッシュにもデータベースにもないという情報を直接提供することができる。   FIG. 7 illustrates the case described above in FIG. In this case, a particular update operation from the application removes data 705 from the database. This operation is generally performed as described in FIG. 3, but the deleted data is not actually deleted from the cache, but is indicated by displaying as "data absent". As the deletion is database committed 320 by the application, the corresponding information is cached in a particular "set" operation 310. "Data not available" is immediately available 330. Thus, as mentioned above, if the cache is later queried, it can provide information directly that the requested data is no longer in the cache or in the database.

以下では、たとえば、トラフィック増加に対応するために、本発明のデータベースシステムの構成を修正することが必要となる事例を論じる。図1に示すシステム構成を拡張するために、さらに多くのキャッシュストレージ収容能力を提供し、さらに多数の処理ノードに増加するトラフィックを分散するために、追加のキャッシュノードを追加しなければならない。ただし、多数のノードを用いて、一般にいうと、アクティブノードの数を変更しなければならないときはいつも、ノードで一意にデータに取り組むキーを再計算して、実際にすべてのトラフィックが均等に新規の完全なノードの組にわたって広がることができるようにしなければならない。   In the following, we will discuss, for example, the cases where it is necessary to modify the configuration of the database system of the invention in order to cope with traffic increase. In order to extend the system configuration shown in FIG. 1, additional cache nodes have to be added to provide more cache storage capacity and to distribute increasing traffic to more processing nodes. However, with a large number of nodes, and generally speaking, whenever you have to change the number of active nodes, recalculate the key to work on the data uniquely at the nodes and in fact all traffic is equally new It should be able to spread over the complete set of nodes.

本発明は、データベースおよびキャッシュから同一に保存され、取得されるデータエンティティからの計算キーの任意の具体的な方法を想定していない。ほとんどの場合、特定のアプリケーションによって処理されるデータの種類に応じて、一部のハッシュ機能を用いて、次にノードの数のモジューロを取ってさらに計算することによって、ノード処理をハッシュされたキーから単に引き出す。したがって、ノードの数が変更されると、違う結果が特定のデータエンティティを取得するために得られる。特定のデータエンティティは、新規の構成の違うノードで探す必要があるかもしれない。構成の更新はではなく、データベースシステムは完全に動作可能である間に透過的に実施されなければならないという事実から問題が発生する。すべてのキャッシュクライアントが同時に新規の構成を意識するわけではない。これは、データの一部の書き込みが、新規の構成に基づいて行いえるが、他の書き込みは古い構成を用いえることを意味する。結果として、キャッシュとデータベースとの間でデータセットが一貫しないことになりえる。   The present invention does not envisage any specific way of calculating keys from data entities stored and retrieved identically from databases and caches. In most cases, depending on the type of data being processed by a particular application, a key that has been hashed node processing by using some hashing functions and then taking modulo the number of nodes and further calculating Simply pull it out. Thus, when the number of nodes is changed, different results are obtained to obtain a particular data entity. Specific data entities may need to be located at different nodes in the new configuration. The problem arises from the fact that the configuration is not updated and the database system has to be implemented transparently while fully operational. Not all cache clients are simultaneously aware of the new configuration. This means that writing of part of the data may be done based on the new configuration, while other writing may use the old configuration. As a result, data sets may be inconsistent between the cache and the database.

本発明は、「複式供給」と呼ばれる手順を可能にすることでこの問題を処理する。複式供給とは、キャッシュに通常用いられる構成に追加して、1つの追加構成を維持するため、「複式供給」と呼ばれる。追加の構成はデフォルトではないが、構成変更時に起動可能である。起動されると、すべての書き込み操作は標準的な構成および複式構成の両方に送信される。生存時間(TTL)はキャッシュの各アイテムに関連するプロパティである。名称が示唆するように、生存時間は、アイテムが有効である期間に対応する。生存時間が切れると、アイテムをもはやキャッシュから取得することができず、データが損失したかのように、キャッシュ損失につながる。これは、標準的な構成に1つ、複式構成に1つ等、構成によって設定可能である。生存時間が設定しないと、アイテムは失効しない。   The present invention addresses this problem by enabling a procedure called "dual delivery". Dual delivery is referred to as "double delivery" in order to maintain one additional configuration in addition to the configuration typically used for caches. The additional configuration is not the default, but can be launched on configuration change. Once activated, all write operations are sent to both standard and duplex configurations. Time to live (TTL) is a property associated with each item in the cache. As the name implies, the survival time corresponds to the time the item is valid. When the lifetime expires, the item can no longer be retrieved from the cache, leading to a cache loss as if data had been lost. This can be set by the configuration such as one in the standard configuration or one in the multiple configuration. The item does not expire unless the lifetime is set.

複式構成の起動もまた原子性ではないため、短い生存時間でまず起動されなければならない。複式供給構成が完全に起動されると、生存時間を削除することができる。生存時間が失効すると1度のみ、標準的な構成および複式構成を交換することができる。構成変更が終了すると、複式供給を停止することができる。構成が伝搬されているステップの間(複式の起動/停止)、一部の「無効」データは書き込まれるが、読み込まれていない場所でのみ書き込まれる。このように、手順は以下の通りである。
−短いTTLを持つ複式供給構成の作成。
−複式構成の起動、その伝搬を待機。
−複式供給構成から短いTTLを削除。
−標準的構成と複式供給構成との交換。伝搬を待機。
−複式の停止。
The activation of duplex configurations is also not atomic, so it must first be activated with a short survival time. Once the dual feed configuration is fully activated, the survival time can be deleted. Standard and duplex configurations can be exchanged only once the lifetime expires. Once the configuration change is complete, the dual supply can be stopped. During the step in which the configuration is being propagated (dual start / stop), some "invalid" data is written but only at unread locations. Thus, the procedure is as follows.
-Creation of dual supply configurations with short TTL.
-Start of duplex configuration, wait for its propagation.
Removed a short TTL from a dual supply configuration.
-Exchange of standard and dual delivery configurations. Wait for propagation.
-Stop of compounding.

システム上の任意の変更をオンラインで行うことができる手順一式を以下に記載する。   The complete set of procedures that can make any changes on the system online is described below.

提案されたアーキテクチャは、すべてのシステムが後でキャッシュなしでは適切に動作しない立場にならないような拡張性を提供する。このようは状況に対処するために、本発明の実施形態によれば、すべての維持操作はオンラインで行われるように意図され、最大でも1つのノード(またはトラフィックの等しい割合)を同時に(たとえばキャッシュノードアップグレードまたは1つずつ交換、複式供給機構を用いて実施されるグローバルなキャッシュ変更)行い、データベースへの影響を少なくする。
−キャッシュノードアップグレードまたは交換は1つずつ行われる。システムは、好ましくは、データベースを用いてこのノードがホストすべきであったデータを取得する。
−グローバルなキャッシュ変更は、通常、複数のキャッシュノードの追加または削除または変更であり、グローバルなディストリビューションの大幅な変更を引き起こし、前段落で述べたように複式供給機構を用いて実施される。
The proposed architecture provides extensibility so that not all systems later get into a position not to work properly without a cache. To address such situations, according to embodiments of the present invention, all maintenance operations are intended to be performed online, and at most one node (or equal proportion of traffic) at the same time (e.g. cache) Upgrade nodes or replace them one by one, global cache changes implemented using a dual-supply mechanism, and reduce the impact on the database.
Cache node upgrades or exchanges occur one by one. The system preferably uses a database to obtain the data that this node was to host.
-Global cache modification is usually the addition or deletion or modification of multiple cache nodes, causing a significant change of global distribution, and implemented using a dual supply mechanism as described in the previous paragraph.

前述した記載から、本発明がデータをキャッシュとデータベースとの間で一貫性を保つことができることは明らかである。これは、厳密にはACIDに遵守していないが、高度に拡張可能であり、データベースには影響を与えず、100%のヒット率を可能にし、何よりも、完全にデータ品質のニーズを満たす機構のおかげである。さらに、本発明によって、キャッシュは、高度に動的データとなり、つまり、キャッシュの負荷が減る効果の恩恵を得ながら、通常は、一元化データごとに1秒あたり数十の書き込みが可能となる。
From the foregoing, it is apparent that the present invention can maintain data consistency between cache and database. It does not strictly adhere to ACID, but is highly extensible, does not affect the database, allows 100% hit rate, and above all, a mechanism that fully meets the data quality needs Thanks to Furthermore, the present invention allows caches to be highly dynamic data, ie, typically dozens of writes per second per unified data, while benefiting from the benefit of reduced cache load.

Claims (14)

データをデータストレージシステム(100)に保存し、データを前記データストレージシステム(100)から取得する方法であって、前記データストレージシステム(100)は、ソフトウェアアプリケーション(10)と、1または複数のデータベースシステム(20)と、複数のキャッシュノード(30)とを備え、前記ソフトウェアアプリケーションはユーザリクエストを受信するように構成され、前記ユーザリクエストは少なくとも1つのデータの読み込みまたはデータの1つの書き込みを要求し、前記ソフトウェアアプリケーションはさらに、読み込みクエリまたは書き込みクエリを前記複数のキャッシュノード(30)に送信して、前記ユーザリクエストを処理するように構成され、前記方法は、前記ソフトウェアアプリケーションが独自に前記1または複数のデータベースシステムおよび前記複数のキャッシュノード(30)と接続することと、前記方法が、少なくとも1つのデータプロセッサを備える前記ソフトウェアアプリケーションが実施する以下のステップを備えることを特徴とし、前記ステップは、
少なくとも1つのデータの読み込みを要求するユーザリクエストを受信すると、前記ソフトウェアアプリケーション(10)は読み込みクエリのみ(210)を前記複数のキャッシュノード(30)に送信するステップと、
前記ソフトウェアアプリケーション(10)がクエリされたデータを少なくとも1つのキャッシュノード(30)から、前記読み込みクエリに応答して受信する場合は、前記ソフトウェアアプリケーション(10)は、前記クエリされたデータを用いて前記ユーザリクエストを処理するステップと、
前記ソフトウェアアプリケーション(10)が損失(220)をすべてのキャッシュノード(30)から、前記読み込みクエリに応答して受信する場合は、前記ソフトウェアアプリケーション(10)は前記1または複数のデータベースシステム(20)からデータを取り出し(230)、前記クエリされたデータを前記1または複数のデータベースシステム(20)から取得すると、前記ソフトウェアアプリケーション(10)は前記クエリされたデータを用いて、前記ユーザリクエストを処理し、少なくとも1つのキャッシュノード(30)に、前記クエリされたデータと、前記クエリされたデータを前記少なくとも1つのキャッシュノード(30)に追加する(250)ための指示とを送信するステップであり、
少なくとも1つのデータの書き込みを要求するユーザリクエストを受信すると、前記ソフトウェアアプリケーション(10)は書き込みの指示を前記1または複数のデータベースシステム(20)に送信し、また、同時に書き込みの指示を前記複数のキャッシュノード(30)に送信し、それによって、前記データストレージシステム(100)の各損失された読み込みクエリおよび各書き込みクエリにおいて、前記複数のキャッシュノード(30)にデータを追加し、
前記キャッシュノードの数およびストレージリソースは、前記すべてのデータベースシステムの内容を保持するように適応される、
方法。
A method of storing data in a data storage system (100) and acquiring data from said data storage system (100), said data storage system (100) comprising a software application (10) and one or more databases. A system (20) and a plurality of cache nodes (30), the software application being configured to receive a user request, the user request requesting at least one read of data or a write of one of the data The software application is further configured to send a read query or a write query to the plurality of cache nodes (30) to process the user request, the method comprising: That the connection uniquely connects with the one or more database systems and the plurality of cache nodes (30), and the method comprises the following steps performed by the software application comprising at least one data processor: Characterized in that said step is
Said software application (10) transmitting only a read query (210) to said plurality of cache nodes (30) upon receipt of a user request requesting read of at least one data;
If the software application (10) receives queried data from at least one cache node (30) in response to the read query, the software application (10) uses the queried data Processing the user request;
If the software application (10) receives losses (220) from all cache nodes (30) in response to the read query, the software application (10) may be the one or more database systems (20) And retrieve the data from the database 230 and obtain the queried data from the one or more database systems (20), the software application (10) processes the user request using the queried data. Sending to the at least one cache node (30) the said queried data and an indication to add (250) the said queried data to the at least one cache node (30),
Upon receiving a user request requesting writing of at least one data, the software application (10) sends a writing indication to the one or more database systems (20) and, simultaneously, the plurality of writing indications. Transmitting to the cache node (30), thereby adding data to the plurality of cache nodes (30) in each lost read query and each write query of the data storage system (100);
The number of cache nodes and storage resources are adapted to maintain the content of all the database systems
Method.
書き込みクエリは、前記データベースシステム(20)のデータの追加、更新および削除のうち少なくとも1つを備える、請求項1に記載の方法。 The method according to claim 1, wherein the write query comprises at least one of addition, update and deletion of data of the database system (20). 前記ソフトウェアアプリケーション(10)は、前記クエリされたデータを前記少なくとも1つのキャッシュノードに追加することが無事終了したことに関する肯定応答(260)を受信する、請求項1〜2のうちいずれか1項に記載の方法。   The software application (10) receives an acknowledgment (260) as to the successful completion of adding the queried data to the at least one cache node. The method described in. データの書き込み(410)が同一のクエリされたデータを前記1または複数のデータベースシステムから同時に取得する間に発生する場合は、前記クエリされたデータを前記少なくとも1つのキャッシュノードに後で追加(252)することは中断され、否定応答(262)が前記ソフトウェアアプリケーション(10)に戻され、それによって、前記ソフトウェアアプリケーションが前記書き込まれたデータを代わりに(420)用いることができる、請求項1〜3のうちいずれか1項に記載の方法。   If the writing of data (410) occurs while simultaneously obtaining the same queried data from the one or more database systems, the queried data may be added later to the at least one cache node (252) ) Is interrupted and a negative acknowledgment (262) is returned to the software application (10), whereby the software application can use the written data instead (420). The method according to any one of 3. データを前記1または複数のデータベースシステム(20)に書き込むための指示を送信し、前記複数のキャッシュノード(30)に同時に書き込むための指示を送信すると、
前記1または複数のデータベースシステムから、前記書き込みを適用する現在保存されているデータを取得(510)し、前記現在保存されているデータをロックするステップと、
前記1または複数のデータベースシステムに、保存すべき新規データを書き込む(530)ステップと、
ソフトウェアアプリケーション(10)にキャッシュバッファを書き込み(540)、保存すべき前記新規データを一時的に保持するステップと、
前記少なくとも1つのキャッシュノードに保存すべき前記新規データを転送し、設定する(552)ステップと、
トランザクションを前記1または複数のデータベースシステムにコミットする(554)ステップと、
が実施される、請求項1〜4のうちいずれか1項に記載の方法。
Sending an indication to write data to the one or more database systems (20) and sending an indication to simultaneously write the plurality of cache nodes (30),
Obtaining (510) currently stored data to which the writing is applied from the one or more database systems, and locking the currently stored data;
Writing 530 new data to be stored in the one or more database systems;
Writing (540) a cache buffer to the software application (10) and temporarily holding the new data to be stored;
Forwarding 552 the set of new data to be stored in the at least one cache node;
Committing a transaction to the one or more database systems (554);
The method according to any one of the preceding claims, wherein is performed.
前記コミットが失敗すると、前記ソフトウェアアプリケーション(10)は指示を前記少なくとも1つのキャッシュノードに送信し、前もって設定された前記新規データを削除する、請求項5に記載の方法。   The method according to claim 5, wherein if the commit fails, the software application (10) sends an indication to the at least one cache node to delete the previously set new data. 前記クエリされたデータが前記1または複数のデータベースシステムまたは前記複数のキャッシュノード(30)のいずれにもない場合は、
前記1または複数のデータベースシステム(20)からデータを取り出した(30)後、損失(640)が前記ソフトウェアアプリケーションに、前記クエリされたデータの代わりに戻され、
前記ソフトウェアアプリケーション(10)は少なくとも1つのキャッシュノード(30)に不在のデータ(650)を送信し、前記不在のデータ(650)は前記少なくとも1つのキャッシュノード(30)に前記クエリされたデータのために追加され、前記不在のデータはすべての次の読み込みクエリに対して直ちに利用可能(270)となり、
それによって、前記ソフトウェアアプリケーション(10)が、前記損失しているクエリされたデータを取得するために、前記1または複数のデータベースシステム(20)からデータをさらに取り出すことを回避する、請求項1〜6のうちいずれか1項に記載の方法。
If the queried data is not in either the one or more database systems or the plurality of cache nodes (30):
After retrieving (30) data from the one or more database systems (20), a loss (640) is returned to the software application in place of the queried data.
The software application (10) transmits absent data (650) to at least one cache node (30), and the absent data (650) is transmitted to the at least one cache node (30) And the absent data is immediately available (270) for all subsequent read queries,
A method according to claim 1, wherein the software application (10) avoids further retrieving data from the one or more database systems (20) in order to obtain the lost queried data. The method according to any one of 6.
前記ソフトウェアアプリケーション(10)は独自に前記1または複数のデータベースシステム(20)と第1の専用インターフェース(12)で接続し、前記複数のキャッシュノード(30)と第2の専用インターフェース(14)で接続する、請求項1〜7のうちいずれか1項に記載の方法。   The software application (10) is uniquely connected to the one or more database systems (20) by the first dedicated interface (12), and the plurality of cache nodes (30) and the second dedicated interface (14) The method according to any one of the preceding claims, wherein the connection is made. 前記キャッシュノードおよび前記データベースシステムのデータモデルは一貫しており、それによって、キャッシュノードおよびデータベースシステムのデータにアクセスするために、正確に同一の処理キーが得られる、請求項1〜8のうちいずれか1項に記載の方法。 The data model of the cache node and the database system is consistent, whereby exactly the same processing key is obtained to access data of the cache node and the database system. Or the method described in paragraph 1. データが存在するときは、同一のデータが前記データベースシステムおよび少なくとも1つのキャッシュノードに保存され、またはキャッシュおよびデータベースシステムの前記同一のデータの前記処理の一貫性を保証するような方法で保存される、請求項1〜9のうちいずれか1項に記載の方法。   When data is present, the same data is stored in the database system and at least one cache node, or in such a way as to guarantee the consistency of the processing of the same data of cache and database system The method according to any one of claims 1 to 9. ソフトウェアプログラム指示を含有するコンピュータプログラム製品であって、前記ソフトウェアプログラム指示を少なくとも1つのデータプロセッサによって実行する場合は、請求項1〜10のいずれか1つに記載の前記方法を実行することを含む、操作の実施につながる、プログラム。   A computer program product containing software program instructions, wherein said software program instructions are executed by at least one data processor, comprising performing said method according to any one of claims 1 to 10. , Leading to the implementation of the operation, the program. 1または複数のデータベースシステム(20)と、少なくとも1つのキャッシュノード(30)と、少なくとも1つのデータプロセッサと、ソフトウェアアプリケーション(10)とを備えるデータストレージシステム(100)であって、前記ソフトウェアアプリケーションを前記少なくとも1つのデータプロセッサによって実行することは、請求項1〜10のいずれか1つに記載の前記方法を実行することを含む操作の実施につながり、前記1または複数のデータベースシステム(20)および前記少なくとも1つのキャッシュノード(30)は、独自に前記ソフトウェアアプリケーション(10)によって起動される、システム。   A data storage system (100) comprising one or more database systems (20), at least one cache node (30), at least one data processor, and a software application (10), said software application 11. Execution by the at least one data processor leads to the performance of operations including performing the method according to any one of claims 1 to 10, wherein the one or more database systems (20) and The system, wherein the at least one cache node (30) is independently launched by the software application (10). 請求項12に記載のデータストレージシステム(100)であって、前記データベースシステム(20)の一部のデータは、2以上のキャッシュノード(30)に保存される、システム。   The data storage system (100) according to claim 12, wherein part of data of the database system (20) is stored in two or more cache nodes (30). 請求項12または13に記載のデータストレージシステムを備える旅行プロバイダの在庫管理システムA travel provider inventory management system comprising a data storage system according to claim 12 or 13.
JP2015533468A 2012-09-27 2013-09-04 Method and system for data storage and retrieval Active JP6511394B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/628,517 2012-09-27
EP12368027.4A EP2713284B1 (en) 2012-09-27 2012-09-27 Method and system of storing and retrieving data
EP12368027.4 2012-09-27
US13/628,517 US9037801B2 (en) 2012-09-27 2012-09-27 Method and system of storing and retrieving data
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
JP2015535995A JP2015535995A (en) 2015-12-17
JP6511394B2 true JP6511394B2 (en) 2019-05-15

Family

ID=49150900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015533468A Active JP6511394B2 (en) 2012-09-27 2013-09-04 Method and system for data storage and retrieval

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
EP1962195A4 (en) * 2005-12-02 2009-01-21 Ibm System for enhancing access efficiency to data base and its method
WO2007141068A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation A method for providing access to data stored in a database to an application
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
CN104662539B (en) 2018-02-23
WO2014048540A1 (en) 2014-04-03
KR20150075407A (en) 2015-07-03
JP2015535995A (en) 2015-12-17
CN104662539A (en) 2015-05-27
KR101690288B1 (en) 2016-12-28
IN2015DN01332A (en) 2015-07-03
SG11201501650WA (en) 2015-04-29
AU2013324689B2 (en) 2016-07-07
CA2882498A1 (en) 2014-04-03
AU2013324689A1 (en) 2015-04-09
CA2882498C (en) 2020-11-17

Similar Documents

Publication Publication Date Title
JP6511394B2 (en) Method and system for data storage and retrieval
US9037801B2 (en) Method and system of storing and retrieving data
US10250693B2 (en) Idempotence for database transactions
JP5841177B2 (en) Method and system for synchronization mechanism in multi-server reservation system
JP6220851B2 (en) System and method for supporting transaction recovery based on strict ordering of two-phase commit calls
US11010267B2 (en) Method and system for automatic maintenance of standby databases for non-logged workloads
US11132350B2 (en) Replicable differential store data structure
US9990225B2 (en) Relaxing transaction serializability with statement-based data replication
US9621409B2 (en) System and method for handling storage events in a distributed data grid
KR20210135477A (en) Systems and methods for augmenting database applications with blockchain technology
EP3714372A1 (en) Data replication and data failover in database systems
US20130036136A1 (en) Transaction processing system, method and program
US10025710B2 (en) Pattern for integrating primary and secondary data stores in a sharded data domain
EP2590087A1 (en) Database log parallelization
US10949413B2 (en) Method and system for supporting data consistency on an active standby database after DML redirection to a primary database
KR20140068916A (en) Method and system to maintain strong consistency of distributed replicated contents in a client/server system
CN102831156A (en) Distributed transaction processing method on cloud computing platform
US10191936B2 (en) Two-tier storage protocol for committing changes in a storage system
US20210073198A1 (en) Using persistent memory and remote direct memory access to reduce write latency for database logging
JP5331050B2 (en) Data synchronization system, data synchronization method, information processing apparatus, information processing method, and program
US20120254104A1 (en) Maintaining client data integrity in a distributed environment using asynchronous data submission
EP2713284B1 (en) Method and system of storing and retrieving data
JP2001265635A (en) Method for updating database by sql statement

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170626

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180402

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181002

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190408

R150 Certificate of patent or registration of utility model

Ref document number: 6511394

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250