JP7365469B1 - Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム - Google Patents

Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム Download PDF

Info

Publication number
JP7365469B1
JP7365469B1 JP2022125757A JP2022125757A JP7365469B1 JP 7365469 B1 JP7365469 B1 JP 7365469B1 JP 2022125757 A JP2022125757 A JP 2022125757A JP 2022125757 A JP2022125757 A JP 2022125757A JP 7365469 B1 JP7365469 B1 JP 7365469B1
Authority
JP
Japan
Prior art keywords
query
cache
identification information
instruction
server
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
JP2022125757A
Other languages
English (en)
Other versions
JP2024022288A (ja
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.)
Cygames Inc
Original Assignee
Cygames Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cygames Inc filed Critical Cygames Inc
Priority to JP2022125757A priority Critical patent/JP7365469B1/ja
Priority to PCT/JP2023/028150 priority patent/WO2024029534A1/ja
Application granted granted Critical
Publication of JP7365469B1 publication Critical patent/JP7365469B1/ja
Publication of JP2024022288A publication Critical patent/JP2024022288A/ja
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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】RDBの検索や更新を行う特定のシステムにおいて、処理の高速化又は高効率化を実現することが可能なシステムを提供する。【解決手段】本発明の一実施形態のシステムは、所定のRDBの1テーブルの1行に作用する事前に定義されたクエリを生成するクエリ生成部と、クエリ実行部と、オブジェクト管理部と、を備え、クエリ生成部は、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含むクエリを生成し、オブジェクト管理部は、所定の場合に、キャッシュオブジェクトを所定のメモリに記憶又は所定のメモリから削除し、クエリ実行部は、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が所定のメモリに記憶されている場合、所定のRDBに対してクエリを実行せずに、所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得する、システムである。【選択図】図1

Description

本発明は、RDBに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラムに関する。
リレーショナルデータベース(RDB)は、データベースマネジメントシステムとして、多くのサービスにおいて用いられている。一般的にRDBが提供するクエリ処理は、専用のプログラミング言語であるSQLを介したものであり、極めて汎用的かつ幅広いクエリ処理を記述可能であるため、その最適化には膨大な研究開発の努力が投じられてきた(非特許文献1)。
近年、スマートフォン等に代表される通信機能を備える端末装置上で実行されるゲームが数多くリリースされており、このようなゲームサービスでは、極めて高い頻度でデータベース(RDB)の検索や更新が行われるものが多い。
Daniel Abadi, Anastasia Ailamaki, David Andersen, Peter Bailis, Magdalena Balazinska, Philip Bernstein, Peter Boncz, Surajit Chaudhuri, Alvin Cheung, AnHai Doan, Luna Dong, Michael J. Franklin, Juliana Freire, Alon Halevy, Joseph M. Hellerstein, Stratos Idreos, Donald Kossmann, Tim Kraska, Sailesh Krishnamurthy, Volker Markl, Sergey Melnik, Tova Milo, C. Mohan, Thomas Neumann, Beng Chin Ooi, Fatma Ozcan, Jignesh Patel, Andrew Pavlo, Raluca Popa, Raghu Ramakrishnan, Christopher Re, Michael Stonebraker, and Dan Suciu. 2020. The Seattle Report on Database Research. SIGMOD Rec. 48, 4 (December 2019), 44-53.
ゲームシステムは、高い頻度でRDBの検索や更新を要求し、データ操作言語(DML)(例えばSQLのDML)の一部の機能のみを用いるシステムである。一般的に、RDBに関する処理は高速化や高効率化が求められるが、ゲームサービスを提供するゲームシステムにおいても、RDBに関する処理の高速化や高効率化は重要な課題である。ゲームシステムのような、DMLの一部の機能のみを用いるシステムであって、高い頻度でRDBの検索や更新を要求する特定のシステムにおいては、RDBに関する処理の高速化や高効率化を実現する余地が大きいと考えられるが、それを実現する機構やシステムは実現されていない。
本発明は、このような課題を解決するためになされたものであり、RDBの検索や更新を行う特定のシステムにおいて、処理の高速化又は高効率化を実現することが可能なシステム等を提供することを目的とする。
〔1〕本発明の一実施形態のシステムは、
所定のリレーショナルデータベースの1テーブルの1行に作用する事前に定義されたクエリを生成するクエリ生成部であって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、クエリ生成部と、
クエリ生成部が生成したクエリを実行するクエリ実行部と、
前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを管理するオブジェクト管理部と、
を備え、
前記クエリ生成部は、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含むクエリを生成し、
前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶し、クエリ実行部が削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除し、
前記クエリ実行部は、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得する、
システムである。
〔2〕本発明の一実施形態では、
前記クエリ生成部は、与えられた引数に基づいて生成したクエリ識別情報をコメントとして付与したクエリを生成する、〔1〕に記載のシステムである。
〔3〕本発明の一実施形態では、
前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合において、与えられた引数が所定条件を満たす場合、該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶しない、〔2〕に記載のシステムである。
〔4〕本発明の一実施形態では、
前記クエリ生成部が生成するクエリは、SQLクエリであり、
前記クエリ生成部は、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のクエリを生成する、〔1〕から〔3〕のいずれか1つに記載のシステムである。
〔5〕本発明の一実施形態では、
前記オブジェクト管理部は、クエリ実行部がUPDATE命令のクエリを実行してクエリ実行結果を取得した場合、該クエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを前記所定のメモリから削除する、〔4〕に記載のシステムである。
〔6〕本発明の一実施形態では、
前記所定のメモリは、前記システムが含むキャッシュサーバのメモリ又はSSDストレージである、〔1〕から〔5〕のいずれか1つに記載のシステムである。
〔7〕本発明の一実施形態では、
前記システムは、ゲームサーバを含み、
前記所定のリレーショナルデータベースは、ゲームに関する情報を記憶するリレーショナルデータベースである、〔1〕から〔6〕のいずれか1つに記載のシステムである。
〔8〕本発明の一実施形態のキャッシュサーバは、
サービス提供サーバから、所定のリレーショナルデータベースの1テーブルの1行に作用する事前に定義されたクエリを受け取るクエリ受取部であって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、クエリ受取部と、
クエリ受取部が受け取ったクエリを実行するクエリ実行部と、
前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを管理するオブジェクト管理部と、
を備え、
前記クエリ受取部は、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含むクエリを受け取り、
前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶し、クエリ実行部が削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除し、
前記クエリ実行部は、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得する、
キャッシュサーバである。
〔9〕本発明の一実施形態では、
前記クエリ生成部は、与えられた引数に基づいて生成したクエリ識別情報をコメントとして付与したクエリを生成する、〔8〕に記載のキャッシュサーバである。
〔10〕本発明の一実施形態の方法は、
所定のリレーショナルデータベースの1テーブルの1行に作用する事前に定義されたクエリを生成するステップであって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、生成するステップと、
前記生成するステップにおいて生成したクエリを実行するステップと、
前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを記憶又は削除するステップと、
を含み、
前記生成するステップで生成するクエリは、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含み、
前記記憶するステップは、前記実行するステップにおいて挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶することを含み、
前記削除するステップは、前記実行するステップにおいて削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除すること、を含み、
前記実行するステップは、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得することを含む、
方法である。
〔11〕本発明の一実施形態では、
前記クエリを生成するステップでは、与えられた引数に基づいて生成したクエリ識別情報をコメントとして付与したクエリを生成する、〔10〕に記載の方法である。
〔12〕本発明の一実施形態のプログラムは、〔10〕又は〔11〕の方法の各ステップをコンピュータに実行させる、プログラムである。
本発明によれば、RDBの検索や更新を行う特定のシステムにおいて、処理の高速化又は高効率化を実現することができる。
本発明の一実施形態の情報処理システムの全体構成図である。 本発明の一実施形態のサービス提供システムのハードウェア構成を示すブロック図である。 本発明の一実施形態のサービス提供システムの機能ブロック図である。 本発明の一実施形態のサービス提供システムの処理のフローチャートを示す図である。
以下、図面を参照して、本発明の実施形態の情報処理システム1について説明する。本明細書において、アプリは、スマートフォンやタブレット端末にインストールされるアプリを意味することができ、またアプリケーション全般を意味することもできる。本明細書においては、説明の便宜上、必要以上に詳細な説明は省略する場合がある。
図1は、本発明の一実施形態の情報処理システム1の全体構成図である。図1に示すように、情報処理システム1は、サービス提供システム10と、プレイヤ端末50と、を含み、サービス提供システム10とプレイヤ端末50とは、インターネットなどのネットワーク2に接続され、互いに通信可能である。本実施形態の情報処理システム1は、既知のクライアントサーバ型のシステムを想定して説明するが、これに限定されるものではない。
サービス提供システム10は、1又は複数の装置を含んで構成されるシステムである。サービス提供システム10は、仮想マシン又はクラウドシステムにより実現されてもよい。サービス提供システム10は、サービス提供サーバ12と、キャッシュサーバ14と、データベースサーバ(DBサーバ)16と、を含む。サービス提供サーバ12は、ゲームサーバであるか、又はゲームサーバの機能を備える。サービス提供サーバ12は、プレイヤ端末50からのアクセスを受け付けて、ネットワーク2を介して、プレイヤに応じたゲームサービスを提供する。したがって、本実施形態では、サービス提供システム10又は情報処理システム1は、ゲームシステムである。キャッシュサーバ14は、一時的なデータを記憶する機能を備えるサーバである。DBサーバ16は、永続的なデータを記憶する機能を備えるサーバであり、ゲームに関する情報を記憶するリレーショナルデータベースである。1つの例では、DBサーバ16は、MySQLを実装したサーバである。以下では、説明の便宜上、サービス提供システム10は、1つの装置により実現されるものとして説明する。
図2は本発明の一実施形態のサービス提供システム10のハードウェア構成を示すブロック図である。サービス提供システム10は、プロセッサ21、入力装置22、表示装置23、記憶装置24、及び通信装置25を備える。これらの各構成装置はバス26によって接続される。なお、バス26と各構成装置との間には必要に応じてインタフェースが介在しているものとする。
プロセッサ21は、サービス提供システム10全体の動作を制御する。例えばプロセッサ21は、CPUである。プロセッサ21は、記憶装置24に格納されているプログラムやデータを読み込んで実行することにより、様々な処理を実行する。プロセッサ21は、複数のプロセッサから構成されてもよい。
入力装置22は、サービス提供システム10に対するユーザからの入力を受け付けるユーザインタフェースであり、例えばキーボードやマウスである。表示装置23は、プロセッサ21の制御に従って、アプリケーション画面などをサービス提供システム10のユーザに表示するディスプレイである。
記憶装置24は、キャッシュサーバ14又はキャッシュサーバ14の機能を実現するためのプログラム、データ、及び記憶領域を備える。記憶装置24は、DBサーバ16又はDBサーバ16の機能を実現するためのプログラム、データ、及び記憶領域を備える。記憶装置24は、既知の主記憶装置及び補助記憶装置を含むことができる。
通信装置25は、ネットワークを介してユーザ端末又はサーバなどの他のコンピュータとの間でデータの授受を行うことが可能なモジュール、デバイス、又は装置である。通信装置25は、無線通信用のデバイスやモジュールなどとすることもできるし、有線通信用のデバイスやモジュールなどとすることもできる。
プレイヤ端末50は、ゲームサービスを利用するプレイヤが使用するスマートフォンであり、一般的なスマートフォンが備える構成を備えることができる。ただし、プレイヤ端末50は、パーソナルコンピュータ、タブレット端末などの端末とすることができる。プレイヤ端末50は、各部を制御するCPU等の処理装置と、ROMやRAM等の記憶素子等の記憶装置と、タッチパネル等の入出力装置と、無線モジュール等の通信装置とを備える。これらの構成要素はバスを介して接続される。
本実施形態では、プレイヤ端末50は、ゲームアプリAP1がインストールされ、サービス提供サーバ12は、ゲームアプリAP1に対応するサーバ用アプリケーションAP2がインストールされている。プレイヤ端末50上でゲームアプリAP1が起動されると、プレイヤ端末50は、サービス提供サーバ12と通信し、ゲームサービスを提供するために必要なデータをプレイヤ端末50と送受信する。1つの例では、サービス提供サーバ12は、プレイヤ端末50においてゲームアプリAP1が起動している間、該プレイヤ端末50と定期的又は断続的に通信し、該プレイヤ端末50でのゲーム操作入力に応じてゲームを実行し、その実行結果を該プレイヤ端末50に送信する。サービス提供サーバ12は、ゲームの進行に応じて、クエリを生成してDBサーバ16からゲーム情報などのデータを取得し、又は、ゲームの進行に応じて、クエリを生成してDBサーバ16にゲーム情報などのデータを記憶若しくは削除する。1つの例では、サービス提供サーバ12は、ゲームの進行に応じて、クエリを生成して、プレイヤIDと各種のゲーム情報とを関連付けてDBサーバ16に記憶する。
図3は本発明の一実施形態のサービス提供システム10の機能ブロック図である。サービス提供システム10は、クエリ生成部31と、クエリ実行部32と、オブジェクト管理部33とを備える。本実施形態においては、記憶装置24に記憶されるプログラムがプロセッサ11により実行されることによりこれらの機能が実現される。このように、各種機能がプログラム読み込みにより実現されるため、1つのパート(機能)の一部又は全部を他のパートが有していてもよい。ただし、各機能の一部又は全部を実現するための電子回路等を構成することによりハードウェアによってもこれらの機能は実現してもよい。
サービス提供サーバ12は、ゲームの進行に応じて、DBサーバ16のデータベース(RDB)に対してデータを挿入、選択、削除、又は更新するための命令文を送る。クエリ生成部31は、この命令文を生成するものであり、本実施形態では、事前に定義されたSQLクエリ(プリペアドステートメントを用いたクエリ)を生成する。クエリ生成部31が生成するクエリは、1つのクエリが1テーブルの1行のみに作用する事前に定義されたクエリ(Single-Table Row-level Locking (STRL) Prepared Statement)である。本実施形態では、クエリ生成部31は、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のいずれかのクエリ(命令文)であって1テーブルの1行のみに作用する事前に定義されたクエリを生成する。したがって、クエリ生成部31は、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のクエリであっても、1テーブルの複数行に作用するクエリを生成しない。クエリは、変数を含むものであるから、事前に定義されたクエリは、事前に定義されたタイプのクエリを意味することができる。
クエリ実行部32は、クエリ生成部31が生成したクエリを実行する。クエリ実行部32は、クエリ生成部31が生成したクエリをDBサーバ16に対して送り、DBサーバ16からクエリ実行結果を取得することができる。クエリ実行結果は、クエリを実行し、エラーなどが発生せずにクエリが成功した場合に、取得されるクエリ実行結果であるものとする。
オブジェクト管理部33は、クエリ実行部32がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを管理する。本実施形態では、オブジェクトはRDB内の1つのテーブルの1つの行のデータ(クエリ実行結果)を意味し、したがって、1つのテーブルには行の数のオブジェクトが存在する。キャッシュオブジェクトは、オブジェクトを一時的に記憶するためのものであり、オブジェクトのデータを所定の形式のデータ(シリアライズオブジェクト)に変換したものである。
クエリ生成部31は、キャッシュオブジェクトを識別するためのキャッシュIDを含むクエリを生成する。キャッシュIDは、キャッシュオブジェクトを一意に識別可能なキャッシュオブジェクト識別情報の1つの例である。本実施形態では、クエリ生成部31は、ゲームの進行に応じて、1つのクエリが1テーブルの1行のみに作用するINSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のクエリ(プリペアドステートメントを用いたクエリ)であって、更に、このクエリが対象とするオブジェクトに対応するキャッシュオブジェクトに関する情報を含むクエリを生成する。
本実施形態では、クエリ生成部31は、与えられた引数(変数)の一部又は全部に基づいて生成したキャッシュIDをコメントとして付与したクエリを生成する。例えば、ここでの引数は、サービス提供サーバ12が、ゲームの進行に応じて、DBサーバ16のRDBに対してデータを挿入、選択、削除、又は更新するための命令文を送る際にクエリに与えられる可変部分(要素)である。
例えば、クエリ生成部31は、以下の例1に示すようなクエリ(プリペアドステートメントを用いたクエリ)を生成する。
(例1)INSERT INTO person(vid, name, param) VALUES ($1, $2, $3) -- CacheID="person_$1_$2"
例1のクエリは、「vid, name, param」の3つの列を有するテーブル「person」において、各列に対応する変数(要素)「$1, $2, $3」を有する行を追加する命令文である。例1のクエリにおいては、「CacheID="person_$1_$2"」がコメントの部分であり、「person_$1_$2」がキャッシュIDである。例1のクエリにおいては、命令文の「INSERT INTO…VALUES」の部分とコメントの「-- CacheID=」部分を含む、「INSERT INTO…VALUES…-- CacheID=」は、事前に定義されたクエリのうちの1つである。RDBが含むテーブル名と各テーブルに含まれる列に関する情報は予め定められており、例1のクエリにおいては、テーブル名「person」がキャッシュIDを構成する文字列として用いられている。「$1, $2, $3」は、各列に対応する要素(値又は文字列)を変数(可変部分)として表したものであって、例1のクエリにおいては、3つの要素「$1, $2, $3」のうちの2つの要素「$1, $2」がキャッシュIDを構成する文字列として用いられている。このような構成とすることにより、RDB内の1つのテーブルの1つの行のデータ(オブジェクト)を識別可能なキャッシュIDを自動的に生成することが可能となり、キャッシュIDを介してオブジェクトとキャッシュオブジェクトを紐づけることも可能となる。
クエリ実行部32及びオブジェクト管理部33は、クエリ生成部31が生成したクエリのタイプに応じた処理を行う。本実施形態では、クエリは、基本機能(INSERT/SELECT /UPDATE/SELECT FOR UPDATE/DELETE)に応じた5つのタイプを想定している。ただし、同じ基本機能のクエリであっても、(変数の数が異なりうる)参照するテーブルごとに異なるタイプのクエリとして定めてもよい。
クエリ実行部32は、クエリ生成部31が生成したクエリがINSERT命令のクエリQ1である場合、該クエリQ1をDBサーバ16に対して送り、DBサーバ16から結果を受け取る。オブジェクト管理部33は、クエリ実行部32がクエリQ1を実行してクエリ実行結果を取得した場合(INSERT命令が成功した場合)、該クエリ実行結果をキャッシュオブジェクトに変換し、実行されたクエリQ1に含まれるキャッシュIDに対応付けて、該キャッシュオブジェクトをキャッシュサーバ14の所定のメモリ(キャッシュ領域M)に記憶する。
クエリ実行部32は、クエリ生成部31が生成したクエリがSELECT命令のクエリQ2である場合、該クエリQ2に含まれるキャッシュIDがキャッシュサーバ14のキャッシュ領域Mに記憶されているか否かを判定する。
SELECT命令のクエリQ2に含まれるキャッシュIDがキャッシュ領域Mに記憶されていた場合、クエリ実行部32は、該所定のメモリから該キャッシュIDに対応付けられたキャッシュオブジェクトを取得する。この場合、クエリ実行部32は、DBサーバ16に対してクエリQ2を実行しない、すなわち、クエリ生成部31が生成したクエリQ2をDBサーバ16に対して送らない(問い合わせしない)。クエリ実行部32は、取得したキャッシュオブジェクトから、SELECT命令のクエリQ2を実行した場合に取得されるクエリ実行結果を取得することができる。該クエリQ2に含まれるキャッシュIDがキャッシュ領域Mに記憶されていなかった場合、クエリ実行部32は、該クエリQ2をDBサーバ16に対して送り、DBサーバ16から結果を受け取る。オブジェクト管理部33は、クエリ実行部32がクエリQ2を実行してクエリ実行結果を取得した場合(SELECT命令が成功した場合)、該クエリ実行結果をキャッシュオブジェクトに変換し、実行されたクエリQ2に含まれるキャッシュIDに対応付けて、該キャッシュオブジェクトをキャッシュ領域Mに記憶する。
クエリ実行部32は、クエリ生成部31が生成したクエリがDELETE命令のクエリQ3である場合、該クエリQ3をDBサーバ16に対して送り、DBサーバ16から結果を受け取る。オブジェクト管理部33は、クエリ実行部32がDELETE命令のクエリQ3を実行してクエリ実行結果を取得した場合(DELETE命令が成功した場合)、キャッシュサーバ14のキャッシュ領域Mに記憶されている該クエリQ3に含まれるキャッシュIDに対応付けられたキャッシュオブジェクトを、キャッシュIDとともにキャッシュ領域Mから削除する。
クエリ実行部32は、クエリ生成部31が生成したクエリがSELECT FOR UPDATE命令のクエリQ4である場合、該クエリQ4をDBサーバ16に対して送り、DBサーバ16から結果を受け取る。SELECT FOR UPDATE命令の実行時、該クエリQ4が対象とするオブジェクトは一時的にロックされ、オブジェクト管理部33は、該クエリQ4に含まれるキャッシュIDに対応付けられたキャッシュオブジェクトを一時的にロックする。なお、クエリQ4が対象とするオブジェクトがロックされているとき、当該オブジェクトに対する他のクエリからの書き込みとロックはブロックされる。また、クエリQ4の処理が完了したとき、該クエリQ4が対象とするオブジェクトのロックは解除され、該クエリQ4に含まれるキャッシュIDに対応付けられたキャッシュオブジェクトのロックも解除される。
クエリ実行部32は、クエリ生成部31が生成したクエリがUPDATE命令のクエリQ5である場合、該クエリQ5をDBサーバ16に対して送り、DBサーバ16から結果を受け取る。UPDATE命令の実行時、該クエリQ5が対象とするオブジェクトは一時的にロックされ、オブジェクト管理部33は、該実行したクエリQ5に含まれるキャッシュIDに対応付けられたキャッシュオブジェクトを一時的にロックする。クエリ実行部32がUPDATE命令のクエリQ5を実行してクエリ実行結果を取得した場合(UPDATE命令が成功した場合)であって該クエリQ5に含まれるキャッシュIDがキャッシュサーバ14のキャッシュ領域Mに記憶されている場合、オブジェクト管理部33は、該キャッシュIDに対応付けられたキャッシュオブジェクトを、該キャッシュIDとともにキャッシュ領域Mから削除する。なお、クエリQ5が対象とするオブジェクトがロックされているとき、当該オブジェクトに対する他のクエリからの書き込みとロックはブロックされる。また、クエリQ5の処理が完了したとき、該クエリQ5が対象とするオブジェクトのロックは解除され、該クエリQ5に含まれるキャッシュIDに対応付けられたキャッシュオブジェクトのロックも解除される。
本実施形態では、キャッシュサーバ14がクエリを要求するプロキシサーバとして機能し、サービス提供サーバ12がクエリ生成部31の機能を備え、キャッシュサーバ14がクエリ実行部32及びオブジェクト管理部33を備える。キャッシュサーバ14は、サービス提供サーバ12が生成したクエリを受け取るクエリ受取部を備える。キャッシュサーバ14(クエリ実行部32)は、受け取ったクエリの結果として、取得したクエリ実行結果をサービス提供サーバ12に受け渡す。ただし、サービス提供システム10の各機能部をどの構成要素(装置、システムなど)が備えるかについては、発明の要旨を逸脱しない限り、上記に限定されない。例えば、サービス提供サーバ12がクエリ生成部31、クエリ実行部32、及びオブジェクト管理部33を備え、キャッシュサーバ14が所定のメモリ上に一時的にデータを記憶する機能のみを備えるように構成してもよい。
図4は、本発明の一実施形態のサービス提供システム10の処理のフローチャートの一例を説明する図である。
ステップS1で、クエリ生成部31は、クエリを生成する。本実施形態では、クエリ生成部31は、DBサーバ16のRDBの1テーブルの1行のみに作用するINSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のクエリを生成する。以下のステップは、各タイプのクエリについて、それぞれ処理を説明する。
クエリ生成部31が生成したクエリがINSERT命令であった場合、ステップS2で、クエリ実行部32は、該クエリをDBサーバ16に対して送ることで、クエリを実行する。ステップS3で、クエリ実行部32は、実行したクエリが成功したか否か、すなわち、DBサーバ16から正常にクエリ実行結果を取得したか否か(例えばエラーメッセージが発生していないか否か)を判定する。クエリが成功したとき、本フローチャートはステップS4へ進み、クエリが成功しなかったとき、本フローチャートは終了する。ステップS4で、オブジェクト管理部33は、クエリ実行部32が取得したクエリ実行結果をキャッシュオブジェクトに変換し、ステップS2で実行されたクエリに含まれるキャッシュIDに対応付けて、該キャッシュオブジェクトをキャッシュサーバ14の所定のメモリ(キャッシュ領域M)に記憶する。
クエリ生成部31が生成したクエリがSELECT命令であった場合、ステップS2で、クエリ実行部32は、キャッシュサーバ14のキャッシュ領域Mが該クエリに含まれるキャッシュIDを記憶しているか否かを判定する。クエリ実行部32は、キャッシュ領域Mが当該クエリに含まれるキャッシュIDを記憶する場合、キャッシュ領域Mから該キャッシュIDに対応付けられたキャッシュオブジェクトを取得し、キャッシュ領域Mが該キャッシュIDを記憶していない場合、該クエリをDBサーバ16に対して送る。
ステップS3で、クエリ実行部32は、クエリをDBサーバ16に送った場合に、実行したクエリが成功したか否かを判定する。クエリが成功したとき、本フローチャートはステップS4へ進み、クエリをDBサーバ16に送らなかった場合又はクエリが成功しなかったとき、本フローチャートは終了する。ステップS4で、オブジェクト管理部33は、クエリ実行部32が取得したクエリ実行結果をキャッシュオブジェクトに変換し、ステップS2で実行されたクエリに含まれるキャッシュIDに対応付けて、該キャッシュオブジェクトをキャッシュ領域Mに記憶する。
クエリ生成部31が生成したクエリがDELETE命令であった場合、ステップS2で、クエリ実行部32は、該クエリをDBサーバ16に対して送ることで、クエリを実行する。ステップS3で、クエリ実行部32は、実行したクエリが成功したか否かを判定する。クエリが成功したとき、本フローチャートはステップS4へ進み、クエリが成功しなかったとき、本フローチャートは終了する。ステップS4で、オブジェクト管理部33は、ステップS2で実行されたクエリに含まれるキャッシュIDに対応付けられたキャッシュオブジェクトがキャッシュ領域Mに記憶されている場合、該キャッシュオブジェクトを、キャッシュIDとともにキャッシュ領域Mから削除する。
クエリ生成部31が生成したクエリがUPDATE命令であった場合、ステップS2で、クエリ実行部32は、該クエリをDBサーバ16に対して送ることで、クエリを実行する。ステップS3で、クエリ実行部32は、実行したクエリが成功したか否かを判定する。クエリが成功したとき、本フローチャートはステップS4へ進み、クエリが成功しなかったとき、本フローチャートは終了する。ステップS4で、オブジェクト管理部33は、ステップS2で実行されたクエリに含まれるキャッシュIDに対応付けられたキャッシュオブジェクトがキャッシュ領域Mに記憶されている場合、該キャッシュオブジェクトをキャッシュIDとともにキャッシュ領域Mから削除する。
クエリ生成部31が生成したクエリがSELECT FOR UPDATE命令であった場合、ステップS2で、クエリ実行部32は、該クエリをDBサーバ16に対して送ることで、クエリを実行する。SELECT FOR UPDATE命令は、オブジェクトを変更するものではないため、キャッシュオブジェクトを記憶するものでも削除するものでもないため、ステップS3で、ステップS2で実行したクエリがSELECT FOR UPDATE命令であった場合、本フローチャートは終了する。
次に、本発明の実施形態のサービス提供システム10(情報処理システム1)の主な作用効果について説明する。
従来、周辺ソフトウェアであるキャッシュやデータアクセスレイヤを含めて、既存のRDBの高速化、高効率化、さらには信頼性の向上を図ることは、ゲームシステムにおいて重要な課題である。特に、RDBのユースケースにおいて必要不可欠となっている、サーバサイドシステム全体のパフォーマンスを改善しうるクエリキャッシュ機構の改善は重要な課題である。クエリキャッシュとは、一度実行した問い合わせの結果をメモリ上に保存しておき、二度目の問合せの実行をRDB上で実行せずに、メモリ上に蓄積したデータを返却することにより、データベースの負荷を下げながら、システム全体の応答速度を向上させる仕組みを意味する。このクエリキャッシュは、ほぼ全てのアプリケーションに適用できるよう、汎用的に設計されており、特定のSQLのユースケースに適した最適化は行われていない。
本発明の実施形態では、一般的なゲーム運用時のデータベース問い合わせは、1つのクエリが1テーブルの1行のみに作用するクエリのみを用いることに注目した。本実施形態では、クエリ生成部31が生成するクエリは、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のいずれかのクエリであって、1テーブルの1行のみに作用する、プリペアドステートメントを用いたクエリである。このように、ゲームサーバ(サービス提供サーバ12)のゲーム運用時のDBサーバ16のRDBへの問い合わせのすべてが上記のクエリとなるように構成されている。また本実施形態では、クエリ生成部31が、クエリを生成する際に、オブジェクトを特定可能なクエリのパラメータに基づいて、キャッシュオブジェクトを識別可能な文字列を自動生成し、該文字列をアノテーションコメントとして付与する。また本実施形態では、オブジェクト管理部33が、クエリのタイプ(INSERT/SELECT /UPDATE(SELECT FOR UPDATE)/DELETE)毎に、クエリを実行する際の、キャッシュオブジェクトのロックと寿命の管理を行う。
このような構成とすることにより、ゲームシステムにおけるRDBのクエリキャッシュ機構を改善することができるとともに、キャッシュオブジェクトとRDBとの紐付けとキャッシュオブジェクトの寿命管理を、一元的、かつ、自動的に行うことができる。これにより、ゲームシステムにおいて処理の高速化や高効率化を実現することが可能となる。
またこのような自動的なキャッシュオブジェクト管理を行うことにより、アプリケーションから独立したキャッシュオブジェクトの寿命の制御を可能にする。これにより、キャッシュサーバ14は、RDBのオブジェクトをキャッシュオブジェクトとして記憶し、分散型メモリキャッシュシステムを実現することが可能となる。また、RDBの全エントリー(全オブジェクト)を、プログラミング言語(例えば、PHP言語やC#言語)に固有のオブジェクトデータ表現に、透過的に変換する機能をキャッシュサーバ14上に実装することができるため、「分散オンメモリ・シリアライズオブジェクトキャッシュ(Distributed On-Memory Serialized Object Cache)」を実現することができる。これにより、複数のエンジニアがコーディングを行うサーバサイドプログラムにおいて、キャッシュ層の安全で効率的な実装が可能になる。なお、この場合、キャッシュサーバ14が記憶するキャッシュオブジェクトのデータ構造は、シリアライズオブジェクトであるが、シリアライズオブジェクトとは、プログラミング言語が採用するデータ構造を外部に保存するときのバイナリデータ表現のことである。
上記のように、本発明の実施形態では、すべてのクエリは事前に定義されており、プリペアドステートメントとして実装することができる。そのため、本実施形態のキャッシュサーバ14は、キャッシュサーバ起動時に、そのキャッシュサーバが担当するプレイヤIDの範囲内のパラメータを用いて、全てのSELECT文のプリペアドステートメントを実行し、SELECT文に対応するRDBのテーブルの各行のデータ(オブジェクト)を、シリアライズオブジェクトとして保存することができる。このような技術は、従来のWebアプリやクラウドアプリには存在しなかったものである。
上記の作用効果は、特に言及が無い限り、他の実施形態や変形例においても同様である。
本発明の実施形態のシステムは、情報処理システム1とすることもできるし、サービス提供システム10とすることもできる。本発明の1又は複数の実施形態では、サービス提供システム10は、DBサーバ16を備えないものとすることができる。この実施形態では、DBサーバ16は、サービス提供システム10と通信可能に構成される。またキャッシュサーバ14が、プロキシサーバとして機能せず、キャッシュ領域に一時的に記憶する機能のみを備える実施形態においては、サービス提供システム10は、キャッシュサーバ14を備えないものとすることができる。この実施形態では、キャッシュサーバ14は、サービス提供システム10と通信可能に構成される。またこの実施形態では、サービス提供システム10は、サービス提供サーバ12により実現することができる。
本発明の1又は複数の実施形態では、1つのクエリが1テーブルの1行のみに作用するプリペアドステートメントを用いたクエリを生成して実行するゲームシステム以外の所定のサービスを提供するシステムに適用することもできる。この実施形態では、サービス提供サーバ12は、ゲームサービス以外の所定のサービスを提供するアプリケーションサーバであるか、又はアプリケーションサーバの機能を備えることができる。この実施形態では、サービス提供サーバ12は、ゲームサーバではなく、ゲームサーバの機能を備えるものではない。
本発明の1又は複数の実施形態では、上記で説明したサービス提供システム10の各機能部が同様の動作を実行できる場合、クエリ生成部31が生成し、クエリ実行部32が実行するクエリの言語はSQL以外であってもよい。例えば、クエリの言語は、INSERT命令に相当する挿入命令、SELECT命令に相当する選択命令、SELECT FOR UPDATE命令に相当する占有ロック命令、UPDATE命令に相当する更新命令、及びDELETE命令に相当する削除命令を有するものであればよい。
本発明の1又は複数の実施形態では、クエリ生成部31は、INSERT命令、SELECT命令、又はDELETE命令のいずれかのクエリであって1テーブルの1行のみに作用する事前に定義されたクエリを生成するように構成されてもよい。本発明の1又は複数の実施形態では、クエリ生成部31は、INSERT命令、SELECT命令、UPDATE命令、又はDELETE命令のいずれかのクエリであって1テーブルの1行のみに作用する事前に定義されたクエリを生成するように構成されてもよい。本発明の1又は複数の実施形態では、クエリ生成部31は、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、又はDELETE命令のいずれかのクエリであって1テーブルの1行のみに作用する事前に定義されたクエリを生成するように構成されてもよい。
本発明の1又は複数の実施形態では、与えられた引数が所定条件を満たす場合、オブジェクト管理部33は、クエリ実行部32がINSERT命令又はSELECT命令のクエリを実行してクエリ実行結果を取得した場合であっても、該クエリ実行結果をキャッシュオブジェクトに変換しないように構成することができる。したがって、この場合、オブジェクト管理部33は、キャッシュオブジェクトをキャッシュサーバ14のキャッシュ領域Mに記憶しない。1つの例では、クエリ生成部31は、所定条件をコメントとして付与したクエリを生成することができる。
例えば、クエリ生成部31は、以下の例1に示すようなクエリ(プリペアドステートメントを用いたクエリ)を生成する。
(例2)INSERT INTO person(vid, name, param) VALUES ($1, $2, $3) -- CacheID="person_$1_$2", Ignore = $1 lt 0
例2のクエリは、例1のクエリに所定条件「Ignore = $1 lt 0」が付与されたものである。この所定条件は「$1」が0より小さいというものであり、この場合、オブジェクト管理部33は、「$1」が0より小さい場合、キャッシュオブジェクトはキャッシュ領域Mに記憶されない。比較演算子としては、less-than(lt), greater-than(gt), equal(eq), partially equal(pe), AND, OR, NOTなど、さまざまな演算子を実装することができる。
本発明の1又は複数の実施形態では、キャッシュサーバ14は、シリアライズオブジェクトを、キャッシュサーバ14の所定のメモリ又はSSDストレージに、1オブジェクト1ファイルとして保存することができる。1つの例では、ゲームロジックをサーバ側で実行するアプリケーションサーバ(サービス提供サーバ12)の実装にPHP言語を使用している場合は、キャッシュサーバ14は、PHPのシリアライズオブジェクトとして保存する。1つの例では、アプリケーションサーバ(サービス提供サーバ12)の実装にC#言語を使用している場合は、キャッシュサーバ14は、C#で最も扱いやすいProtocol Buffersフォーマットのシリアライズオブジェクトとして保存する。このように、アプリケーションを記述するプログラミング言語毎にシリアライズオブジェクトのフォーマットは異なるものとすることができる。
本発明の1又は複数の実施形態では、キャッシュオブジェクトは、オブジェクトのデータそのものであってもよい。この実施形態では、キャッシュオブジェクトの取得は、クエリ実行結果の取得を意味する。
本発明の実施形態では、プレイヤ端末50は、プレイヤがゲームをプレイする前に予めダウンロード可能なデータをサービス提供サーバ12から受信してゲームアプリAP1に関連するデータとして記憶するように構成されてもよい。この場合、プレイヤ端末50は、プレイヤに関連するデータの更新等のサービス提供サーバ12に実装される必要のある機能を除いたゲームサービスを実現するために必要な機能を備える。或いはプレイヤ端末50は、入出力用のシンクライアント端末として構成されてもよい。この場合、サービス提供サーバ12は、プレイヤ端末50における入出力機能を除いたゲームサービスを実現するために必要な機能を備える。
上記で説明したように、本発明の実施形態は、情報処理システム1又はサービス提供システム10とすることができる。本発明の実施形態は、クエリ実行部32及びオブジェクト管理部33を備えるキャッシュサーバ14とすることもできる。本発明の実施形態は、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムや該プログラムを格納したコンピュータ読み取り可能な記憶媒体とすることもできる。また本発明の実施形態は、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する方法とすることもできる。また本発明の実施形態は、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムをコンピュータに供給することができるサーバとすることもできる。
以上に説明した処理又は動作において、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの処理又は動作上の矛盾が生じない限りにおいて、処理又は動作を自由に変更することができる。また以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
1:情報処理システム、2:ネットワーク、10:サービス提供システム、12:サービス提供サーバ、14:キャッシュサーバ、16:データベースサーバ、21:プロセッサ、22:表示装置、23:入力装置、24:記憶装置、25:通信装置、26:バス、31:クエリ生成部、32:クエリ実行部、33:オブジェクト管理部、50:プレイヤ端末

Claims (12)

  1. システムであって、
    所定のリレーショナルデータベースの1テーブルの1行のみに作用する事前に定義されたクエリのみを生成するクエリ生成部であって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、クエリ生成部と、
    クエリ生成部が生成したクエリを実行するクエリ実行部と、
    前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを管理するオブジェクト管理部と、
    を備え、
    前記クエリ生成部は、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含むクエリを生成し、
    前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶し、クエリ実行部が削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除し、
    前記クエリ実行部は、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得する、
    システム。
  2. 前記クエリ生成部は、与えられた引数に基づいて生成したクエリ識別情報をコメントとして付与したクエリを生成する、請求項1に記載のシステム。
  3. 前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合において、与えられた引数が所定条件を満たす場合、該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶しない、請求項2に記載のシステム。
  4. 前記クエリ生成部が生成するクエリは、SQLクエリであり、
    前記クエリ生成部は、INSERT命令、SELECT命令、SELECT FOR UPDATE命令、UPDATE命令、又はDELETE命令のクエリを生成する、請求項1から3のいずれか1項に記載のシステム。
  5. 前記オブジェクト管理部は、クエリ実行部がUPDATE命令のクエリを実行してクエリ実行結果を取得した場合、該クエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを前記所定のメモリから削除する、請求項4に記載のシステム。
  6. 前記所定のメモリは、前記システムが含むキャッシュサーバのメモリ又はSSDストレージである、請求項1に記載のシステム。
  7. 前記システムは、ゲームサーバを含み、
    前記所定のリレーショナルデータベースは、ゲームに関する情報を記憶するリレーショナルデータベースである、請求項1に記載のシステム。
  8. キャッシュサーバであって、
    サービス提供サーバから、所定のリレーショナルデータベースの1テーブルの1行のみに作用する事前に定義されたクエリのみを受け取るクエリ受取部であって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、クエリ受取部と、
    クエリ受取部が受け取ったクエリを実行するクエリ実行部と、
    前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを管理するオブジェクト管理部と、
    を備え、
    前記クエリ受取部は、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含むクエリを受け取り、
    前記オブジェクト管理部は、クエリ実行部が挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶し、クエリ実行部が削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除し、
    前記クエリ実行部は、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得する、
    キャッシュサーバ。
  9. 前記クエリ受取部は、与えられた引数に基づいて生成したクエリ識別情報コメントとして付与されて生成されたクエリを受け取る、請求項8に記載のキャッシュサーバ。
  10. 方法であって、
    所定のリレーショナルデータベースの1テーブルの1行のみに作用する事前に定義されたクエリのみを生成するステップであって、事前に定義されたクエリは挿入命令、選択命令及び削除命令のクエリを含む、生成するステップと、
    前記生成するステップにおいて生成したクエリをクエリ実行部が実行するステップと、
    前記クエリ実行部がクエリを実行して取得したクエリ実行結果に基づくキャッシュオブジェクトを記憶又は削除するステップと、
    を含み、
    前記生成するステップで生成するクエリは、キャッシュオブジェクトを識別するためのキャッシュ識別情報を含み、
    前記記憶するステップは、前記実行するステップにおいて挿入命令又は選択命令のクエリを実行してクエリ実行結果を取得した場合、実行されたクエリに含まれるキャッシュ識別情報に対応付けて該クエリ実行結果に基づくキャッシュオブジェクトを所定のメモリに記憶することを含み、
    前記削除するステップは、前記実行するステップにおいて削除命令のクエリを実行してクエリ実行結果を取得した場合、該削除命令のクエリに含まれるキャッシュ識別情報に対応付けられたキャッシュオブジェクトを該所定のメモリから削除すること、を含み、
    前記実行するステップは、選択命令のクエリを実行する場合において、該クエリに含まれるキャッシュ識別情報が前記所定のメモリに記憶されている場合、前記所定のリレーショナルデータベースに対してクエリを実行せずに、前記所定のメモリから該キャッシュ識別情報に対応付けられたキャッシュオブジェクトを取得することを含む、
    方法。
  11. 前記クエリを生成するステップでは、与えられた引数に基づいて生成したクエリ識別情報をコメントとして付与したクエリを生成する、請求項10に記載の方法。
  12. 請求項10又は11に記載の方法の各ステップをコンピュータに実行させるプログラム。
JP2022125757A 2022-08-05 2022-08-05 Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム Active JP7365469B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022125757A JP7365469B1 (ja) 2022-08-05 2022-08-05 Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム
PCT/JP2023/028150 WO2024029534A1 (ja) 2022-08-05 2023-08-01 Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022125757A JP7365469B1 (ja) 2022-08-05 2022-08-05 Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP7365469B1 true JP7365469B1 (ja) 2023-10-19
JP2024022288A JP2024022288A (ja) 2024-02-16

Family

ID=88328453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022125757A Active JP7365469B1 (ja) 2022-08-05 2022-08-05 Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム

Country Status (2)

Country Link
JP (1) JP7365469B1 (ja)
WO (1) WO2024029534A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137689A (ja) 1998-11-04 2000-05-16 Hitachi Ltd 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2017220102A (ja) 2016-06-09 2017-12-14 株式会社Cygames 情報処理システム及び方法、並びにプログラム
CN111737564A (zh) 2019-08-29 2020-10-02 北京京东尚科信息技术有限公司 一种信息查询方法、装置、设备及介质
US20210089538A1 (en) 2019-09-24 2021-03-25 International Business Machines Corporation Processing data of a database system
CN112732751A (zh) 2020-12-30 2021-04-30 北京懿医云科技有限公司 一种医学数据处理方法、装置、存储介质及设备
CN113420051A (zh) 2021-06-30 2021-09-21 网易(杭州)网络有限公司 一种数据查询方法、装置、电子设备和存储介质
CN114817294A (zh) 2022-04-07 2022-07-29 中国联合网络通信集团有限公司 数据库访问方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137689A (ja) 1998-11-04 2000-05-16 Hitachi Ltd 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2017220102A (ja) 2016-06-09 2017-12-14 株式会社Cygames 情報処理システム及び方法、並びにプログラム
CN111737564A (zh) 2019-08-29 2020-10-02 北京京东尚科信息技术有限公司 一种信息查询方法、装置、设备及介质
US20210089538A1 (en) 2019-09-24 2021-03-25 International Business Machines Corporation Processing data of a database system
CN112732751A (zh) 2020-12-30 2021-04-30 北京懿医云科技有限公司 一种医学数据处理方法、装置、存储介质及设备
CN113420051A (zh) 2021-06-30 2021-09-21 网易(杭州)网络有限公司 一种数据查询方法、装置、电子设备和存储介质
CN114817294A (zh) 2022-04-07 2022-07-29 中国联合网络通信集团有限公司 数据库访问方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FAMILIAR, Bob,Microservices on Azure,初版,株式会社翔泳社,2016年04月18日,p.132
SCHWARTZ, Baron et al.,実践ハイパフォーマンス MySQL,第2版,株式会社オライリー・ジャパン,2011年01月11日,pp.211-213

Also Published As

Publication number Publication date
JP2024022288A (ja) 2024-02-16
WO2024029534A1 (ja) 2024-02-08

Similar Documents

Publication Publication Date Title
US10552372B2 (en) Systems, methods, and computer-readable media for a fast snapshot of application data in storage
WO2018233364A1 (zh) 索引更新方法、系统及相关装置
US7822710B1 (en) System and method for data collection
EP2653986B1 (en) Client-side caching of a database transaction token.
US9251179B2 (en) Managing record location lookup caching in a relational database
CN116955316A (zh) 对外部驻留数据执行存储器中列分析查询
US20090216789A1 (en) Management of time-variant data schemas in data warehouses
US9632944B2 (en) Enhanced transactional cache
EP4029191B1 (en) Supporting blockchain collections in a database
JP3058672B2 (ja) データベース管理システム
US11797495B2 (en) Simulating data definition triggers in a database system
US9442862B2 (en) Polymorph table with shared columns
US11238035B2 (en) Personal information indexing for columnar data storage format
CN115269631A (zh) 数据查询方法、数据查询系统、设备及存储介质
US11775527B2 (en) Storing derived summaries on persistent memory of a storage device
JP4951138B2 (ja) データベースの管理方法
JP7365469B1 (ja) Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム
US10776363B2 (en) Efficient data retrieval based on aggregate characteristics of composite tables
CN111680036B (zh) 一种基于图存储的配置管理数据库
WO2020192663A1 (zh) 一种数据管理方法及相关设备
CN108376104B (zh) 节点调度方法及装置、计算机可读存储介质
JP2020134961A (ja) データベース管理システム、端末装置及び方法
CN116341560B (zh) 一种针对运输过程安全的监控策略调整方法和系统
US20230342355A1 (en) Diskless active data guard as cache
CN116450682B (zh) 基于数据合并的模型生成方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221208

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20221208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230530

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: 20230807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231006

R150 Certificate of patent or registration of utility model

Ref document number: 7365469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150