(57)【要約】【課題】データ処理を高速で実行することを可能にしつつ、アプリケーションでシリアライズを行う場合であっても、テーブル構造を変更することが容易である、大規模データ処理の技術を提供する。【解決手段】ＫＶＳデータ処理部は、索引データと実データとをペアで保存するデータベース方式のＫＶＳ型コマンドを受け取ると、当該コマンドに応じて記憶手段に記憶されたデータを操作する。ＳＱＬコマンド実行部は、ＳＱＬコマンドを受け取ると、このコマンドをシリアライズさせて、ＫＶＳ型データを生成させ、このデータをＫＶＳデータ処理部に渡す。ＫＶＳコマンド処理部は、ＫＶＳコマンドを受け取ると、このコマンドをシリアライズさせて、このデータをＫＶＳデータ処理部に送信させる。【選択図】図２
2015153014.tif 000002
【特許請求の範囲】
【請求項１】
索引データと実データとをペアで保存するデータベース方式でデータを記憶する記憶手段と、
索引データと実データとをペアで保存するデータベース方式のためのデータベース言語である第１のデータベース言語で記述された第１のコマンドを受け取ると、当該第１のコマンドに応じて前記記憶手段に記憶されたデータを操作するデータ処理手段と、
前記第１のデータベース言語とは別のデータベース言語である第2のデータベース言語で記述された第２のコマンドを受け取ると、この第２のコマンドをシリアライズさせて、索引データと実データとからなるデータを生成させ、このデータを前記データ処理手段に渡す第２コマンド実行手段と、
前記第１のデータベース言語で記述された第１のコマンドを受け取ると、前記第１のコマンドをシリアライズさせて、索引データと実データとからなるデータを生成させ、このデータを前記データ処理手段に送信させる第１コマンド処理手段と、
前記第１のデータベース言語で記述された第１のコマンドをアプリケーションから受け取った場合、この第１のコマンドを前記第１コマンド処理手段に渡し、前記第２のデータベース言語で記述された第２のコマンドを受け取ると、当該第２のコマンドを前記第２コマンド実行手段に送信させるインタフェース手段と、
を有するデータベース装置。
【請求項２】
前記インタフェース手段から第2のコマンドを受け取ると、当該第2のコマンドが前記第１コマンド処理手段により処理可能か否かを判定し、処理可能と判定した場合、当該第２のコマンドを前記第１コマンド処理手段に渡す判定手段を
さらに有する請求項１に記載のデータベース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の実施の形態は、データベース装置に関する。
【背景技術】
【０００２】
インターネットの普及や、コンピュータの処理速度の向上などに伴い生成される、大容量のデジタルデータであるビッグデータが注目されている。ビッグデータは、単に大容量であるだけでなく、非定型でかつリアルタイム性が高い。従来のデータベース管理システムでは、データを定型化して蓄積し、その後で処理分析するため、相反する性質を持つビッグデータを扱うことは困難とされていた。しかし、近年、ビッグデータを高速かつ簡単に分析できる技術が登場し、ビッグデータを活用すれば、これまで予想できなかった新たなパターンやルールを発見できることが明らかとなった。そこで、ビッグデータなどの大規模データ処理を高速に行いたいという技術的要請が高まっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１６５１４８号公報
【特許文献２】特開２０１１−２９０５号公報
【特許文献３】特開２００５−１５７７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
大規模データ処理を高速に行う技術の一つとしてRDBMS（Relational DataBase Management System）があるが、RDBMSは内部処理が複雑なため、処理を高速に行うことができないという問題がある。
【０００５】
SQLでのデータ取得や操作は、通常、RDBMSであるため高速に実行できない。一方、KVS （Key Value Store）型データベースでは処理を高速に行うことができるが、通常はSQLを解釈できないため、既存のSQLアプリケーションから使用することができないという問題がある。
【０００６】
KVS型データベースで複数valueを持たせる場合、アプリケーション側でvalueのシリアライズを行うことになるが、アプリケーションでシリアライズを行う場合、アプリケーションとデータベースでそれぞれテーブル構造を持つことになるため、テーブル構造を変更することが難しいという問題がある。
【０００７】
本発明の目的は、データ処理を高速で実行することを可能にしつつ、アプリケーションでシリアライズを行う場合であっても、テーブル構造を変更することが容易である、大規模データ処理の技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の実施の形態はデータベース装置として提案される。このデータベース装置は、記憶手段と、データ処理手段と、第２コマンド実行手段と、第１コマンド処理手段と、インタフェース手段とを有する。
記憶手段は、索引データと実データとをペアで保存するデータベース方式でデータを記憶する。
【０００９】
データ処理手段は、索引データと実データとをペアで保存するデータベース方式のためのデータベース言語である第１のデータベース言語で記述された第１のコマンドを受け取ると、当該第１のコマンドに応じて記憶手段に記憶されたデータを操作する。
【００１０】
第２コマンド実行手段は、第１のデータベース言語とは別のデータベース言語である第2のデータベース言語で記述された第２のコマンドを受け取ると、この第２のコマンドをシリアライズさせて、索引データと実データとからなるデータを生成させ、このデータをデータ処理手段に渡す。
【００１１】
第１コマンド処理手段は、第１のデータベース言語で記述された第１のコマンドを受け取ると、第１のコマンドをシリアライズさせて、索引データと実データとからなるデータを生成させ、このデータをデータ処理手段に送信させる。
【００１２】
インタフェース手段は、第１のデータベース言語で記述された第１のコマンドをアプリケーションから受け取った場合、この第１のコマンドを第１コマンド処理手段に渡し、第２のデータベース言語で記述された第２のコマンドを受け取ると、当該第２のコマンドを第２コマンド実行手段に送信させる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態にかかるデータベース装置を含む情報処理システムの構成例を示す機能ブロック図
【図２】データベース装置の構成例を示す機能ブロック図
【図３】テーブル作成処理の一例を示すフローチャート
【図４】図３のフローチャートに続くフローチャート
【図５】図３及び図４のフローチャートに対応する、テーブル作成処理のシーケンス図
【図６】テーブル内容等変更通知処理の一例を示すフローチャート
【図７】図６のフローチャートに対応する、テーブル内容等変更通知処理のシーケンス図
【図８】テーブル削除処理の一例を示すフローチャート
【図９】図８のフローチャートに続くフローチャート
【図１０】図８及び図９に示したフローチャートに対応する、テーブル削除処理のシーケンス図
【図１１】KVS用APIデータ登録処理の一例を示すフローチャート
【図１２】図１１に続くフローチャート
【図１３】図１１及び図１２に示したフローチャートに対応する、KVS用APIデータ登録処理のシーケンス図
【図１４】テーブルスキーマ情報取得処理の一例を示すフローチャート
【図１５】図１４のフローチャートに対応する、テーブルスキーマ情報取得処理のシーケンス図
【図１６】SQLデータ登録処理の一例を示すフローチャート
【図１７】図１６に続くフローチャート
【図１８】図１６及び図１７に示したフローチャートに対応する、SQLデータ登録処理のシーケンス図
【図１９】KVS用APIデータ取得処理の一例を示すフローチャート
【図２０】図１９に示したフローチャートに対応する、KVS用APIデータ取得処理のシーケンス図
【図２１】SQLデータ取得処理の一例を示すフローチャート
【図２２】図２１のフローチャートに続くフローチャート
【図２３】図２１及び図２２のフローチャートに対応する、SQLデータ取得処理のシーケンス図
【図２４】第2の実施の形態にかかるデータベース装置の構成例を示す機能ブロック図
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態にかかるデータベース装置を説明する。
[０．用語の定義]
本明細書中で使用する用語の定義を述べる。
【００１５】
［０．１．データベース言語］
「データベース言語」とは、データベースを扱うためのコンピュータ言語のことをいう。
【００１６】
［０．２．SQL］
「SQL」とは、リレーショナルデータベース管理システム (RDBMS) において、データの操作や定義を行うためのデータベース言語（問い合わせ言語）をいう。主にリレーショナルデータベースで使用される。
【００１７】
［０．３．KVS(Key Value Store)］
KVS(Key Value Store)とは、Keyとなる索引データと、Valueとなる実データをペアで保存するデータベース方式をいう。Keyによる検索が高速に実行できる。
【００１８】
［０．４．テーブルスキーマ情報］
「テーブルスキーマ情報」とは、データベースにおいて、テーブル作成時などに指定した、各フィールド名や属性など、テーブルの構造に関する情報をいう。
【００１９】
［０．５．シリアライズ］
「シリアライズ」とは、テキストや数値などの複数データを、一つの文字列に変換する処理をいう。
【００２０】
［０．６．デシリアライズ］
「デシリアライズ」とは、シリアライズされたデータを、元の複数データに戻す処理をいう。
【００２１】
［１．第1の実施の形態］
本発明の第1の実施の形態は、データベース装置として提案される。このデータベース装置は、SQLと、KVS用APIという複数のデータ操作手段を備え、KVS用APIにより、速度が遅いというSQLの課題を解決し、既存のアプリケーションで使用される場合が多いSQLでも操作できる装置である。KVS用APIは本実施の形態の第１のデータベース言語に相当し、SQLは本実施の形態の第２のデータベース言語に相当する。
【００２２】
データベース装置は、コンピュータ、ワークステーション、サーバなどの情報処理装置であって、この情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読み出し専用メモリ（ROM）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
【００２３】
[１．１．構成例]
本発明の実施の形態にかかるデータベース装置の構成について説明する。図１は、本実施の形態にかかるデータベース装置を含む情報処理システムの構成例を示す機能ブロック図である。情報処理システム１は、データベース装置１０と、データベース装置１０にネットワーク２０を介して接続可能な端末装置３０とを有する。
【００２４】
端末装置３０は、パーソナルコンピュータ、タブレットコンピュータ、携帯端末などの情報処理装置であって、データベース装置１０と通信可能な装置であればどのようなものでもよい。端末装置３０は、データベース装置１０に対してデータの検索、データの登録、データの更新などの処理要求をネットワークを介して送信し、この処理要求に応じてデータベース装置１０が処理を行った結果を、ネットワークを介して受信する。
【００２５】
データベース装置１０は、アプリケーションサーバ１００と、アプリケーションサーバ１００に接続されたデータベースサーバ２００を有している。なお、図１に示す構成例では、アプリケーションサーバ１００とデータベースサーバ２００はネットワーク２０ではなく、専用通信線を介して接続されている構成として図示したが、ネットワーク２０若しくはネットワーク２０とは別のネットワークを介して接続される構成としてもかまわない。
【００２６】
図２に、データベース装置１０の構成例を示す機能ブロック図を掲げる。なお、機能ブロック図中に示す構成要素は、データベース装置の機能を機能ごとにまとめてブロックとして捉えたものであり、データベース装置が各構成要素に対応する基板、装置、回路、部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続」とは、データ、情報、命令などの送信及び／又は受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の構成要素の機能ブロック図の説明についても同様である。
【００２７】
本発明の実施の形態にかかるデータベース装置は、アプリケーションサーバ１００と、アプリケーションサーバ１００に接続されたデータベースサーバ２００を有している。アプリケーションサーバ１００はネットワーク２０に接続されており、ネットワーク２０を介して端末装置３０と通信可能である。
【００２８】
［１．１．１．アプリケーションサーバ］
アプリケーションサーバ１００は、データベースサーバ２００が提供するデータベースを利用して、サービスを端末装置３０に提供する機能を有する。
アプリケーションサーバ１００は、アプリケーション部４００と、アプリケーション部４００に接続されたデータベースクライアント３００を有する。
アプリケーション部４００は、端末装置３０から受信した処理要求に基づいて、KVS用APIを呼び出すか、又はSQL文を生成する。
【００２９】
データベースクライアント３００は、アプリケーション部４００からKVS用APIの呼び出しを受けた場合は、アプリケーション部４００から渡されたデータのシリアライズを実行し、シリアライズ後のデータを含むKVS型コマンドを生成してデータベースサーバ２００に送信する。また、データベースクライアント３００は、アプリケーション部４００からSQL文を受信した場合は、そのSQL文が簡単なSQL文か否かを判断し、簡単なSQL文であると判断した場合は、そのSQL文に基づいてKVS型コマンドを生成してデータベースサーバ２００に送信し、一方、簡単なSQL文ではないと判断した場合は、そのSQL文をデータベースサーバに送信する。
【００３０】
［１．１．１．１．データベースクライアント］
図２を参照しながら、データベースクライアント３００の構成例を説明する。データベースクライアント３００は、インタフェース部３０１と、インタフェース部３０１に接続された処理一次判断部３０２と、処理一次判断部３０２に接続されたクライアント側送受信部３０６及びKVS型コマンド処理部３０３と、KVS型コマンド処理部３０３に接続されたクライアント側シリアライズ処理部３０４及びスキーマ情報キャッシュ３０５とを有する。なお、インタフェース部３０１は、アプリケーション部４００と接続されており、クライアント側送受信部３０６は後述するサーバ側送受信部２０１に接続されている。
【００３１】
インタフェース部３０１は、アプリケーション部４００からSQL文若しくはKVS用API呼び出しを受信し、受信した内容がSQL文である場合はそのSQL文を処理一次判断部３０２に渡し、一方受信した内容がKVS用API呼び出しである場合は、KVS用API呼び出しからKVS型コマンドを生成して、このKVS型コマンドをKVS型コマンド処理部３０３に渡す。インタフェース部３０１は、本実施の形態のインタフェース手段に相当する。
【００３２】
KVS型コマンド処理部３０３は、スキーマ情報キャッシュ３０５からテーブルスキーマ情報を取得し、クライアント側シリアライズ処理部３０４にテーブルスキーマ情報とKVS型コマンドを渡し、シリアライズされたデータを含むKVS型コマンドを生成させる。KVS型コマンド処理部３０３は、実施の形態の第１コマンド処理手段に相当する。
【００３３】
クライアント側シリアライズ処理部３０４は、受け取ったKVS型コマンドに含まれる複数の要素（数値、文字列など）を、スキーマ情報キャッシュ３０５に記憶されたテーブルスキーマ情報を参照して、シリアライズし、シリアライズした後のKVS型コマンドを出力する。
【００３４】
処理一次判断部３０２は、インタフェース部３０１から受け取ったSQL文が簡単なSQL文か否かを判断し、簡単なSQL文であると判断した場合は、そのSQL文に基づいてKVS型コマンドを生成し、そのKVS型コマンドをKVS型コマンド処理部３０３に渡し、一方、受け取ったSQL文が簡単なSQL文でないと判断した場合は、そのSQL文をクライアント側送受信部３０６に渡す。処理一次判断部３０２は、本実施の形態の判断手段に相当する。
【００３５】
ここでいう「簡単なSQL文」とは、基本的には、同等の処理を行うKVS用APIが存在するかどうかという基準で判断する。同等の処理を行うKVS用APIが存在するSQL文は、「簡単なSQL文」である。
なお、簡単なSQL文の例としては、「SELECT * FROM table1」のようなSQL文であり、簡単でないSQL文の例:としては、「SELECT * FROM table1 WHERE value >20;」のようなSQL文である。
クライアント側送受信部３０６は、後述するサーバ側送受信部２０１と協働してデータの送受信を行う。
【００３６】
［１．１．１．２．データベースサーバ］
データベースサーバ２００は、データベースクライアント３００の要求に応じて、データベースへのデータの登録、取得、削除、更新、等を実行する。データベースサーバ２００は、KVS用API及びSQLの双方を扱える。データベースサーバ２００は、SQLのパラメータをシリアライズ、デシリアライズする。データベースサーバ２００は、データはシリアライズしてKVS形式でレコード単位で保存する。
【００３７】
データベースサーバ２００は、サーバ側送受信部２０１と、サーバ側送受信部２０１に接続されたSQL字句解釈部２０２と、SQL字句解釈部２０２に接続されたSQLコマンド実行部２０３と、SQLコマンド実行部２０３に接続されたKVSデータ処理部２０６、サーバ側シリアライズ処理部２０４、スキーマ情報管理部２０５と、KVSデータ処理部２０６に接続されたキャッシュメモリ２０７、ストレージ２０８とを有しているKVSデータ処理部２０６及びSQLコマンド実行部２０３はサーバ側送受信部２０１に接続されている。サーバ側送受信部２０１は、クライアント側送受信部３０６に接続されている。
サーバ側送受信部２０１は前述したクライアント側送受信部３０６と協働してデータの送受信を行う。
SQL字句解釈部２０２は、SQL文であるテキストデータを解析して、構文木を出力する。
【００３８】
SQLコマンド実行部２０３は、SQL字句解釈部２０２より出力された構文木に含まれるSQLコマンドを実行し、実行結果を出力する。このSQLコマンド実行部２０３がSQLコマンドをＫＶＳ型コマンドに変換してＫＶＳ型データ処理部に渡す。SQLコマンド実行部２０３は、本実施の形態の第２コマンド実行手段に相当する。
【００３９】
サーバ側シリアライズ処理部２０４は、SQL文から、Key及びvalueに相当する要素を取り出し、当該SQL文に対応する、シリアライズされたデータであるKVS形式のデータを生成し、出力する。
【００４０】
スキーマ情報管理部２０５は、ストレージ２０８及びキャッシュメモリ２０７に記憶されているテーブルの各フィールド名や属性などのテーブルスキーマ情報を記憶し、テーブルの構成が変更された場合は、変更後のテーブルスキーマ情報に更新する。
【００４１】
KVSデータ処理部２０６は、KVS型コマンドに応じてストレージ２０８又はキャッシュメモリ２０７にデータの登録、更新、変更、削除を行い、ストレージ２０８又はキャッシュメモリ２０７から指定された条件に合うデータを読み出す。KVSデータ処理部２０６は、本実施の形態のデータ処理手段に相当する。
ストレージ２０８は、KVS型データからなるテーブルを非揮発的に記憶する。
キャッシュメモリ２０７はKVS型データからなるテーブルの全部又は一部を一時的に記憶する。
【００４２】
［１．２．KVS用APIとSQLそれぞれのデータ登録フローの具体例］
KVS用APIとSQLそれぞれのデータ登録フローの具体例を以下に示す。
[１．２．１．KVS用APIのデータ登録]
アプリケーション部４００が以下のメッセージをＫＶＳ用APIとしてデータベースクライアント３００に渡した例を述べる。
set tbl1 “coffee”, 280, 1126, “drink”
【００４３】
上記メッセージを受け取ったデータベースクライアント３００、より詳しくはクライアント側シリアライズ処理部３０４は、データベースサーバ２００がＫＶＳ形式でこのデータを保存できるように、上記メッセージ中のデータのシリアライズを行う。
データのシリアライズは、所定の書き換え規則を用いて行う。書き換え規則の例を以下に示す。
（１）データが整数である場合、 「i***」（*は数字）と書き変える
（２）データが文字列である場合、「 t文字数-***」（*は文字）と書き換える
なお、データの属性はスキーマ情報キャッシュ３０５に格納されているテーブルスキーマ情報を参照して決定する。
【００４４】
上記「set tbl1 “coffee”, 280, 1126, “drink”」をこの書き換え期し奥によって書き換えてシリアライズしたデータは以下のようになる。
set tbl1 “coffee”, “i280i1126t5-drink”
【００４５】
データベースクライアント３００は、シリアライズしたデータをデータベースサーバ２００に送信し、データベースサーバ２００はシリアライズしたデータを記憶する。
【００４６】
上記シリアライズされたデータにおいて、"coffee"がKeyであり、“i280i1126t5-drink”がvalueである。データベースサーバ２００は、上記のようなKeyとvalueが対となっているレコードの集合であるテーブルを記憶する。
【００４７】
テーブルの例を以下に示す。
「Key」     「Value」
coffee   i280i1126t5-drink 
tea     i280i1024t5-drink 
pasta   i800i0543t4-food
【００４８】
[１．２．２．SQLのデータ登録]
上記「set tbl1 “coffee”, 280, 1126, “drink”」と同一の内容をSQLを用いてデータベースサーバ２００に登録させる例を示す。
アプリケーション部４００は、以下のSQLコマンドをデータベースクライアント３００に渡す。
INSERT INTO tbl1 VALUES (‘coffee’, 280, 1126, ‘drink’);
【００４９】
上記SQLコマンドを受け取ったデータベースクライアント３００は、このSQLコマンドが高速処理可能か否かを判断し、高速処理が不可であると判定した場合、このSQLコマンドをそのままデータベースサーバ２００に送信する。
【００５０】
上記SQLコマンドを受信したデータベースサーバ２００は、SQLコマンドに含まれるデータをシリアライズして、Keyとvalueの対からなるレコードを生成し、このレコードを格納する。データのシリアライズは、所定の書き換え規則を用いて行い、書き換え規則はKVS用APIについて用いる書き換え規則と同一である。
上記SQLコマンドを書き換え規則を用いてシリアライズしたデータは以下のとおりである。
“coffee”, “i280i1126t5-drink”
このデータはKVS用APIの場合に生成されたシリアライズされたデータと同一内容となる。
データベースサーバ２００は、上記データを一つのレコードとしてテーブルにつけくわえることにより、データ登録を行う。
【００５１】
［２．動作例］
本実施の形態にかかるデータベース装置の動作を説明する。
［２．１．テーブル作成処理］
データベース装置が実行するテーブル作成処理を説明する。テーブル作成処理は、データベースサーバ２００に新たにテーブルを作成させ、これを記憶させる処理である。図３は、テーブル作成処理の一例を示すフローチャートであり、図４は、図３のフローチャートに続くフローチャートである。以下、これらフローチャートを参照しながらテーブル作成処理を説明する。
【００５２】
テーブル作成処理において、まず、データベース装置１０、より詳しくはアプリケーション部４００は、データベースクライアント３００のインタフェース部にSQLコマンドを入力する（Ｓ１０）。
【００５３】
次にデータベース装置１０、より詳しくはインタフェース部３０１は、受け取ったSQLコマンドを処理一次判断部３０２に渡し、処理一次判断部３０２は、このSQLコマンドは高速処理が可能かどうか判断する（Ｓ１１）。この説明では高速処理が不可であると判断したものとして、以下の説明を行う。なお、前述の「簡単なSQL文」は高速処理可能であると判断し、「簡単なSQL文」でない場合は高速処理可能でないと判断する。
高速処理が不可であると判断した処理一次判断部３０２は、このSQLコマンドをクライアント側送受信部３０６に渡す。
【００５４】
次にデータベース装置１０、より詳しくはデータベースクライアント３００のクライアント側送受信部３０６は、SQLコマンドをデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ１２）。
【００５５】
次に、データベース装置１０、より詳しくはデータベースサーバ２００のサーバ側送受信部２０１は、クライアント側送受信部３０６からSQLコマンドを受信する（Ｓ１３）。
【００５６】
次に、データベース装置１０、より詳しくはサーバ側送受信部２０１はSQL字句解釈部２０２にSQLコマンドを渡す。SQLコマンドを受け取ったSQL字句解釈部２０２はこのSQLコマンドを解釈し、解釈結果をSQLコマンド実行部２０３に渡す（Ｓ１４）。
【００５７】
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３は、SQLコマンドの解釈結果からテーブルスキーマ情報を生成し、これをスキーマ情報管理部２０５に渡す（Ｓ１５）。
【００５８】
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３は、SQLコマンドの解釈結果から、テーブルに登録するデータのKey、valueを取り出し、これらをサーバ側シリアライズ処理部２０４に渡す。サーバ側シリアライズ処理部２０４は受け取ったKey、valueをシリアライズ処理し、シリアライズされたデータであるKVSデータを生成してSQLコマンド実行部２０３に返す（Ｓ１６）。KVSデータを受け取ったSQLコマンド実行部２０３はこのKVSデータをKVSデータ処理部２０６に渡す。
【００５９】
データベース装置１０、より詳しくはKVSデータ処理部２０６は、受け取ったKVSデータをキャッシュメモリ２０７又はストレージ２０８に記憶させ、データ登録を実行する（Ｓ１７）。
【００６０】
上記データ登録が完了すると、データベース装置１０、より詳しくはKVSデータ処理部２０６は、SQLコマンド実行部２０３に実行結果を通知する（Ｓ１８）。
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３はサーバ側送受信部２０１に実行結果を通知する（Ｓ１９）。
次にデータベース装置１０、より詳しくはサーバ側送受信部２０１は、接続中の各データベースクライアント３００にテーブル作成を通知する（Ｓ２０）。
【００６１】
また、データベース装置１０、より詳しくはサーバ側送受信部２０１は、SQLコマンド発行元のデータベースクライアント３００のクライアント側送受信部３０６に実行結果を通知する（Ｓ２１）。クライアント側送受信部３０６は実行結果を受け取ると、この実行結果をインタフェース部３０１に通知する。
【００６２】
データベース装置１０、より詳しくはデータベースクライアント３００のインタフェース部３０１は、アプリケーション部４００に実行結果を通知する（Ｓ２２）。アプリケーション部４００は、自らが発行したSQLコマンドに応じてテーブル登録が完了したことを知る。
以上でテーブル登録処理が終了する。
【００６３】
図５に、上記図３及び図４のフローチャートに対応する、テーブル作成処理のシーケンス図を示す。
アプリケーション部４００がSQLコマンド「CREATE TABLE」を、データベースクライアント３００のインタフェース部３０１に送信する（Ｓ１０１）と、インタフェース部３０１はこのSQLコマンド「CREATE TABLE」を処理一次判断部３０２に送信し（Ｓ１０２）、処理一次判断部３０２はクライアント側送受信部３０６に送信する（Ｓ１０３）。クライアント側送受信部３０６はこのSQLコマンド「CREATE TABLE」をデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ１０４）。
【００６４】
このSQLコマンド「CREATE TABLE」を受信したデータベースサーバ２００のサーバ側送受信部２０１はSQL字句解釈部２０２にSQLコマンド「CREATE TABLE」送信する（Ｓ１０５）。
【００６５】
SQLコマンド「CREATE TABLE」を受信したSQL字句解釈部２０２は、SQLコマンド「CREATE TABLE」の字句解釈を実行し（Ｓ１０６）、字句解釈の結果に基づいてテーブル作成実行命令をSQLコマンド実行部２０３に送信する（Ｓ１０７）。
【００６６】
テーブル作成実行命令を受信したSQLコマンド実行部２０３は、テーブル作成実行命令からテーブルスキーマ情報を生成し、このテーブルスキーマ情報をスキーマ情報管理部２０５に送信する（Ｓ１０８）。
【００６７】
テーブルスキーマ情報を受信したスキーマ情報管理部２０５は、このテーブルスキーマ情報を記憶し、テーブルスキーマ情報の記憶を行ったことをSQLコマンド実行部２０３に通知する（Ｓ１０９）。
【００６８】
テーブルスキーマ情報の記憶を行った通知を受け取ったSQLコマンド実行部２０３は、サーバ側シリアライズ処理部２０４に生成させたシリアライズ化されたデータを登録する要求をKVSデータ処理部２０６に送信する（Ｓ１１０）。
【００６９】
前記要求を受信したKVSデータ処理部２０６は、シリアライズ化されたデータを格納させる要求を、キャッシュメモリ２０７又はストレージ２０８に送信する（Ｓ１１１）。キャッシュメモリ２０７又はストレージ２０８は、この要求に応じて、シリアライズ化されたデータを格納する。データの格納を完了したキャッシュメモリ２０７又はストレージ２０８は、データの登録が完了した通知をKVSデータ処理部２０６に送信する（Ｓ１１２）。KVSデータ処理部２０６はデータの登録が完了した通知をSQLコマンド実行部２０３に送信する（Ｓ１１３）。
【００７０】
このデータの登録が完了した通知はSQL字句解釈部２０２、サーバ側送受信部２０１、クライアント側送受信部３０６、処理一次判断部３０２、インタフェース部３０１を順に経由してアプリケーション部４００へ送信される（Ｓ１１４〜Ｓ１１９）。
以上で、テーブル作成処理は終了する。
【００７１】
［２．２．テーブル内容等変更通知処理］
データベース装置１０のテーブル内容等の変更があった場合、データベースサーバ２００からデータベースクライアント３００へ通知する処理である、テーブル内容等変更通知処理を説明する。図６は、テーブル内容等変更通知処理の一例を示すフローチャートである。また、図７に、上記図６のフローチャートに対応する、テーブル内容等変更通知処理のシーケンス図を示す。以下、図６及び図７を参照しながらテーブル内容等変更通知処理を説明する。
【００７２】
テーブル内容の変更が発生すると、テーブル作成等を実行したデータベースサーバ２００は、接続中の各データベースクライアント３００に変更内容を通知するメッセージを送信する（Ｓ３０）。
【００７３】
データベース装置１０、より詳しくはデータベースクライアント３００のクライアント側送受信部３０６は、上記変更内容を通知するメッセージを受信する（Ｓ３１）。
【００７４】
クライアント側送受信部３０６は、変更内容を通知するメッセージをKVSコマンド処理部３０３に渡し、KVSコマンド処理部３０３は変更内容を通知するメッセージを取得する（Ｓ３２）。
変更内容を通知するメッセージを取得したKVSコマンド処理部３０３は、変更内容をスキーマ情報キャッシュ３０５に保存させる（Ｓ３３）。
【００７５】
その後、スキーマ情報キャッシュ３０５からKVSコマンド処理部３０３、クライアント側送受信部３０６を経由してサーバ側送受信部２０１に実行結果を送信する（Ｓ３４、Ｓ３５、Ｓ３６）。
以上でテーブル内容等変更通知処理が終了する。
【００７６】
［２．３．テーブル削除処理］
データベース装置１０が実行するテーブル削除処理を説明する。テーブル削除処理は、データベースサーバ２００からテーブルを削除させる処理である。図８は、テーブル削除処理の一例を示すフローチャートであり、図９は図８のフローチャートに続くフローチャートである。以下、このフローチャートを参照しながらテーブル削除処理を説明する。
【００７７】
テーブル削除処理において、まず、データベース装置１０、より詳しくはアプリケーション部４００は、データベースクライアント３００のインタフェース部３０１にテーブル削除を要求するSQLコマンド「DROP TABLE 」を入力する（Ｓ４０）。
【００７８】
次にデータベース装置１０、より詳しくはインタフェース部３０１は、受け取ったSQLコマンド「DROP TABLE 」を処理一次判断部３０２に渡し、処理一次判断部３０２は、このSQLコマンドは高速処理が可能かどうか判断する（Ｓ４１）。この説明では高速処理が不可であると判断したものとして、以下の説明を行う。なお、前述の「簡単なSQL文」は高速処理可能であると判断し、「簡単なSQL文」でない場合は高速処理可能でないと判断する。
なお、ステップＳ４１において高速処理が可能と判断した場合は、処理一次判断部３０２は当該SQLコマンドに対応するKVS型コマンドを生成し、このKVS型コマンドをKVSコマンド処理部３０３に渡し、当該KVS型コマンドを実行させる。
【００７９】
さて、ステップＳ４１において高速処理が不可であると判断した処理一次判断部３０２は、このSQLコマンド「DROP TABLE 」をクライアント側送受信部３０６に渡す。次にデータベース装置１０、より詳しくはデータベースクライアント３００のクライアント側送受信部３０６は、SQLコマンド「DROP TABLE 」をデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ４２）。
【００８０】
次に、データベース装置１０、より詳しくはデータベースサーバ２００のサーバ側送受信部２０１は、クライアント側送受信部３０６からSQLコマンド「DROP TABLE 」を受信する（Ｓ４３）。
【００８１】
次に、データベース装置１０、より詳しくはサーバ側送受信部２０１はSQL字句解釈部２０２にSQLコマンド「DROP TABLE 」を渡す。SQLコマンド「DROP TABLE 」を受け取ったSQL字句解釈部２０２はこの。SQLコマンド「DROP TABLE 」を解釈し、解釈結果をSQLコマンド実行部２０３に渡す（Ｓ４４）。
【００８２】
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３は、SQLコマンドの解釈結果からステーブルスキーマ情報を生成し、これをスキーマ情報管理部２０５に渡す（Ｓ４５）。
【００８３】
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３は、KVSデータ処理部２０６にテーブル削除を要求し、KVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８にアクセスしてテーブル削除を実行する（Ｓ４６）。
上記データ削除が完了すると、データベース装置１０、より詳しくはKVSデータ処理部２０６は、SQLコマンド実行部２０３に実行結果を返す（Ｓ４７）。
次にデータベース装置１０、より詳しくはSQLコマンド実行部２０３はサーバ側送受信部２０１に実行結果を渡す（Ｓ４８）。
【００８４】
次にデータベース装置１０、より詳しくはサーバ側送受信部２０１は、接続中の各データベースクライアント３００のクライアント側送受信部３０６にテーブル削除の通知を送信する（Ｓ４９）。
【００８５】
また、データベース装置１０、より詳しくはサーバ側送受信部２０１は、前述したSQLコマンド「DROP TABLE 」発行元のデータベースクライアント３００のクライアント側送受信部３０６に実行結果を送信する（Ｓ５０）。クライアント側送受信部３０６は実行結果を受信すると、この実行結果をインタフェース部３０１に渡す。
【００８６】
データベース装置１０、より詳しくはデータベースクライアント３００のインタフェース部３０１は、アプリケーション部４００に実行結果を通知する（Ｓ５１）。アプリケーション部４００は、自らが発行したSQLコマンド「DROP TABLE 」に応じてテーブル削除が完了したことを知る。
以上でテーブル削除処理が終了する。
図１０に、上記図８及び図９に示したフローチャートに対応する、テーブル削除処理のシーケンス図を示す。
【００８７】
アプリケーション部４００がSQLコマンド「DROP TABLE」を、データベースクライアント３００のインタフェース部３０１に送信する（Ｓ２０１）と、インタフェース部３０１はこのSQLコマンド「DROP TABLE」を処理一次判断部３０２に送信し（Ｓ２０２）、処理一次判断部３０２はこのSQLコマンド「DROP TABLE」をクライアント側送受信部３０６に送信する（Ｓ２０３）。クライアント側送受信部３０６はこのSQLコマンド「DROP TABLE」をデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ２０４）。
【００８８】
このSQLコマンド「DROP TABLE」を受信したデータベースサーバ２００のサーバ側送受信部２０１はSQL字句解釈部２０２にSQLコマンド「DROP TABLE」を渡す（Ｓ２０５）。
【００８９】
SQLコマンド「DROP TABLE」を受信したSQL字句解釈部２０２は、SQLコマンド「DROP TABLE」の字句解釈を実行し（Ｓ２０６）、字句解釈の結果に基づいてテーブル削除実行命令をSQLコマンド実行部２０３に渡す（Ｓ２０７）。
SQLコマンド実行部２０３は、テーブル削除の要求をKVSデータ処理部２０６に渡す（Ｓ２０８）。
【００９０】
前記要求を受信したKVSデータ処理部２０６は、キャッシュメモリ２０７又はストレージ２０８にアクセスし、テーブルの削除を命令する（Ｓ２０９）。キャッシュメモリ２０７又はストレージ２０８は、この命令に応じて、指定されたテーブルを削除する。テーブルの削除を完了したキャッシュメモリ２０７又はストレージ２０８は、実行結果をKVSデータ処理部２０６に返す（Ｓ２１０）。
KVSデータ処理部２０６は実行結果をSQLコマンド実行部２０３に渡す（Ｓ２１１）。
【００９１】
テーブル削除の実行結果を受け取ったSQLコマンド実行部２０３は、スキーマ情報管理部２０５に、削除したテーブルに対応するテーブルスキーマ情報の削除要求を渡す（Ｓ２１２）。
【００９２】
テーブルスキーマ情報削除要求を受信したスキーマ情報管理部２０５は、テーブルスキーマ情報を削除し、テーブルスキーマ情報削除の実行結果をSQLコマンド実行部２０３に返す（Ｓ２１３）。
【００９３】
テーブルスキーマ情報削除の実行結果及びテーブル削除の実行結果は、SQL字句解釈部２０２、サーバ側送受信部２０１、クライアント側送受信部３０６、処理一次判断部３０２、インタフェース部３０１を順に経由してアプリケーション部４００に送信される（Ｓ２１４〜Ｓ２１９）。これにより、アプリケーション部４００は自らが発したSQLコマンドの実行結果を知る。
以上で、テーブル削除処理は終了する。
【００９４】
［２．４．KVS用APIデータ登録処理］
データベース装置１０が実行するKVS用APIデータ登録処理を説明する。KVS用APIデータ登録処理は、KVS用APIを用いてデータベースサーバ２００にデータ登録をさせる処理である。図１１は、KVS用APIデータ登録処理の一例を示すフローチャートであり、図１２は図１１に続くフローチャートである。以下、このフローチャートを参照しながらKVS用APIデータ登録処理を説明する。
【００９５】
KVS用APIデータ登録処理において、データベース装置１０、より詳しくはアプリケーション部４００がデータベースクライアント３００のインタフェース部３０１にKVS用コマンドを送信する（Ｓ６０）。
【００９６】
データベース装置１０、より詳しくはKVS型コマンド処理部３０３は、KVS用コマンドを受信する（Ｓ６１０）と、スキーマ情報キャッシュ３０５に当該KVS用コマンドに対応するテーブルのテーブルスキーマ情報が有るか否かを判定する（Ｓ６２）。
【００９７】
スキーマ情報キャッシュ３０５に当該KVS用コマンドに対応するテーブルのテーブルスキーマ情報が無いと判定した場合（Ｓ６２、Ｎｏ）、KVS型コマンド処理部３０３は、データベースサーバ２００に当該KVS用コマンドに対応するテーブルスキーマ情報を要求する（Ｓ６３）。その後KVS型コマンド処理部３０３は、データベースサーバ２００に当該KVS用コマンドに対応するテーブルスキーマ情報を取得できたか否かを判定する（Ｓ６４）。
【００９８】
データベースサーバ２００から当該KVS用コマンドに対応するテーブルスキーマ情報を取得できなかったと判定した場合（Ｓ６４，Ｎｏ）、KVS用APIデータ登録処理はエラーとなり終了する。一方、データベースサーバ２００から当該KVS用コマンドに対応するテーブルスキーマ情報を取得できたと判定した場合（Ｓ６４，Ｙｅｓ）、後述するステップＳ６５に進む。
【００９９】
前述のステップＳ６２に戻ってKVS用APIデータ登録処理の説明を続ける。ステップＳ６２においてスキーマ情報キャッシュ３０５に当該KVS用コマンドに対応するテーブルのテーブルスキーマ情報があると判定した場合（Ｓ６２、Ｙｅｓ）、KVS型コマンド処理部３０３は、クライアント側シリアライズ処理部３０４にKVS用コマンドに含まれているvalueをシリアライズさせる（Ｓ６５）。クライアント側シリアライズ処理部３０４はシリアライズされたデータをKVS型コマンド処理部３０３に返す。KVS型コマンド処理部３０３はシリアライズされたデータを受け取ると、このシリアライズされたデータを含むKVS用コマンドを生成し、このKVS用コマンドをクライアント側送受信部３０６に渡す。
クライアント側送受信部３０６は、データベースサーバ２００のサーバ側送受信部２０１にこのKVS型コマンドを送信する（Ｓ６６）。
【０１００】
データベースサーバ２００のサーバ側送受信部２０１はKVS型コマンドを受信する（Ｓ６７）と、サーバ側送受信部２０１はこのKVS型コマンドをKVSデータ処理部２０６に渡す。
【０１０１】
KVSデータ処理部２０６は、このKVS型コマンドに応じて、キャッシュメモリ２０７又はストレージ２０８にデータ登録を実行するよう命令する（Ｓ６８）。
【０１０２】
キャッシュメモリ２０７又はストレージ２０８は、上記命令に応じてデータ登録を実行し、実行後にKVSデータ処理部２０６を経由してサーバ側送受信部２０１にデータ登録の実行結果を渡す（Ｓ６９）。
サーバ側送受信部２０１は、データベースクライアント３００のクライアント側送受信部３０６に実行結果を送信する（Ｓ７０）。
【０１０３】
クライアント側送受信部３０６は、データベースクライアント３００のインタフェース部３０１に実行結果を渡し、インタフェース部３０１はアプリケーション部４００に実行結果を送信する（Ｓ７１）。これによりアプリケーション部４００は、KVS用APIデータ登録の実行結果を知る。
以上で、KVS用APIデータ登録処理は終了する。
図１３に、上記図１１及び図１２に示したフローチャートに対応する、KVS用APIデータ登録処理のシーケンス図を示す。
【０１０４】
まず、データベース装置１０、より詳しくはアプリケーション部４００がデータベースクライアント３００のインタフェース部３０１にKVS用コマンドを渡す（Ｓ３０１）。
【０１０５】
データベース装置１０、より詳しくはKVS型コマンド処理部３０３は、インタフェース部からこのKVS用コマンドを受け取ると、スキーマ情報キャッシュ３０５に当該KVS用コマンドに対応するテーブルのテーブルスキーマ情報を読み出すように要求する（Ｓ３０３）。
スキーマ情報キャッシュ３０５は、要求されたテーブルスキーマ情報があればそのテーブルスキーマ情報をKVS型コマンド処理部３０３に渡す（Ｓ３０４）。
【０１０６】
スキーマ情報キャッシュ３０５に要求されたテーブルスキーマ情報が無い場合、データベースクライアント３００は、データベースサーバ２００からそのテーブルスキーマ情報の取得を試みる（Ｓ３０５）。このステップＳ３０５の処理内容については別途後述する。
【０１０７】
さて、ステップＳ３０４において、スキーマ情報キャッシュ３０５が要求されたテーブルスキーマ情報を有し、そのテーブルスキーマ情報をKVS型コマンド処理部３０３に渡した場合、KVS型コマンド処理部３０３は、クライアント側シリアライズ処理部３０４にKVS用コマンドに含まれているvalueをシリアライズするよう要求する（Ｓ３０６）。
【０１０８】
ステップＳ３０６の要求に応じて、クライアント側シリアライズ処理部３０４はシリアライズされたデータを生成し、これをKVS型コマンド処理部３０３に返す（Ｓ３０７）。
KVS型コマンド処理部３０３はシリアライズされたデータを受け取ると、このシリアライズされたデータを含むKVS用コマンドを生成し、このKVS用コマンドをクライアント側送受信部３０６に渡す（Ｓ３０８）。
クライアント側送受信部３０６は、データベースサーバ２００のサーバ側送受信部２０１にこのKVS型コマンドを送信する（Ｓ３０９）。
【０１０９】
データベースサーバ２００のサーバ側送受信部２０１は、クライアント側送受信部３０６からKVS型コマンドを受信すると、このKVS型コマンドをKVSデータ処理部２０６に渡す（Ｓ３１０）。
【０１１０】
KVSデータ処理部２０６は、このKVS型コマンドに応じて、キャッシュメモリ２０７又はストレージ２０８にデータ登録を実行するように命令する（Ｓ３１１）。
キャッシュメモリ２０７又はストレージ２０８はステップＳ３１１の命令に応じてデータ登録（書き込）を実行し、KVSデータ処理部２０６を経由してサーバ側送受信部２０１にデータ登録の実行結果を渡す（Ｓ３１２、Ｓ３１３）。
サーバ側送受信部２０１は、データベースクライアント３００のクライアント側送受信部３０６に実行結果を送信する（Ｓ３１４）。
【０１１１】
サーバ側送受信部２０１から実行結果を受信したクライアント側送受信部３０６は、データベースクライアント３００のKVSコマンド処理部を経由してインタフェース部３０１に実行結果を渡し（Ｓ３１５、Ｓ３１６）、この実行結果を受け取ったインタフェース部３０１はアプリケーション部４００に実行結果を送信する（Ｓ３１７）。これにより、アプリケーション部４００はKVS用APIデータ登録の実行結果を知る。
以上で、図１３に示したKVS用APIデータ登録処理のシーケンス図の説明を終了する。
【０１１２】
［２．５．テーブルスキーマ情報取得処理］
前掲の図１３であるKVS用APIデータ登録処理のシーケンス図において、スキーマ情報キャッシュ３０５に要求されたテーブルスキーマ情報が無い場合、データベースクライアント３００は、データベースサーバ２００からそのテーブルスキーマ情報の取得を試みる（Ｓ３０５）処理であるテーブルスキーマ情報取得処理を行う。このステップＳ３０５のテーブルスキーマ情報取得処理について述べる。
【０１１３】
図１４は、テーブルスキーマ情報取得処理の一例を示すフローチャートである。図１４のフローチャートを参照しながら、テーブルスキーマ情報取得処理の一例を説明する。なお、この例ではスキーマ情報キャッシュ３０５に該当するテーブルスキーマ情報が記憶されていないことを前提として説明を行う。
【０１１４】
テーブルスキーマ情報取得処理において、データベース装置１０、より詳しくはKVS型コマンド処理部３０３は、データベースクライアント３００のスキーマ情報キャッシュ３０５に該当テーブルに対応するテーブルスキーマ情報が無いことを確認する（Ｓ８０）。
【０１１５】
次にデータベース装置１０、より詳しくはデータベースクライアント３００のクライアント側送受信部３０６は、データベースサーバ２００にテーブルスキーマ情報を要求するメッセージを送信する（Ｓ８１）。
【０１１６】
次にデータベース装置１０、より詳しくはデータベースサーバ２００のサーバ側送受信部２０１は、上記メッセージを受信すると、スキーマ情報管理部２０５に上記メッセージにおいて指定されたテーブルスキーマ情報の読出しを要求する（Ｓ８２）。
【０１１７】
スキーマ情報管理部２０５は、上記テーブルスキーマ情報を記憶しているか否かを判定する（Ｓ８３）。上記テーブルスキーマ情報を記憶していると判定した場合（Ｓ８３、Ｙｅｓ）、
【０１１８】
KVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８から当該テーブルスキーマ情報を読み出し、KVSデータ処理部２０６はテーブルスキーマ情報を取得する（Ｓ８４）。この後、後述するステップＳ８５に進む。
【０１１９】
一方、ステップＳ８３において上記テーブルスキーマ情報を記憶していないと判定した場合（Ｓ８３、Ｎｏ）、スキーマ情報管理部２０５はサーバ側送受信部２０１を経由してクライアント側送受信部３０６にテーブルスキーマ情報取得の実行結果を送信する。なお、ステップＳ８４において、テーブルスキーマ情報の取得が成功している場合は、上記実行結果とともにテーブルスキーマ情報がクライアント側送受信部３０６に送信され、クライアント側送受信部３０６は実行結果（存在した場合はテーブルスキーマ情報を伴う）を受信する（Ｓ８５）。クライアント側送受信部３０６は実行結果をKVS型コマンド処理部３０３に実行結果を渡す。
【０１２０】
なお、クライアント側送受信部３０６がテーブルスキーマ情報を受信した場合は、KVS型コマンド処理部３０３はそのテーブルスキーマ情報をスキーマ情報キャッシュ３０５に渡し、スキーマ情報キャッシュ３０５はそのテーブルスキーマ情報を記憶する（Ｓ８６）。
以上で、テーブルスキーマ情報取得処理は終了する。
図１５に、上記図１４のフローチャートに対応する、テーブルスキーマ情報取得処理のシーケンス図を示す。
【０１２１】
テーブルスキーマ情報取得処理において、まずデータベースクライアント３００のKVS型コマンド処理部３０３は、スキーマ情報キャッシュ３０５に該当するテーブルスキーマ情報を要求する（Ｓ４０１）。
【０１２２】
スキーマ情報キャッシュ３０５は、要求されたテーブルスキーマ情報の読出し結果をKVS型コマンド処理部３０３に渡す（Ｓ４０２）。なお、以降の説明は、スキーマ情報キャッシュ３０５が要求されたテーブルスキーマ情報を記憶していないものとして行う。
【０１２３】
スキーマ情報キャッシュ３０５から要求されたテーブルスキーマ情報を記憶していない通知を受けたKVS型コマンド処理部３０３は、クライアント側送受信部３０６にテーブルスキーマ情報取得要求を渡す（Ｓ４０３）。クライアント側送受信部３０６はテーブルスキーマ情報取得要求をサーバ側送受信部２０１に送信する（Ｓ４０４）。
【０１２４】
サーバ側送受信部２０１は、テーブルスキーマ情報取得要求を受信すると、スキーマ情報管理部２０５にテーブルスキーマ情報の有無の問い合わせを渡す（Ｓ４０５）。スキーマ情報管理部２０５は、要求されたテーブルスキーマ情報の有無をサーバ側送受信部２０１に返す（Ｓ４０６）。なお、以降の説明は、スキーマ情報管理部２０５が要求されたテーブルスキーマ情報有りとの情報をサーバ側送受信部２０１に返した場合を説明する。スキーマ情報管理部２０５が要求されたテーブルスキーマ情報無しとの情報をサーバ側送受信部２０１に返した場合は後述するステップＳ４１１に直ちに進む。
【０１２５】
スキーマ情報管理部２０５から要求されたテーブルスキーマ情報有りとの情報を受け取ったサーバ側送受信部２０１は、KVSデータ処理部２０６に当該テーブルスキーマ情報取得要求を渡す（Ｓ４０７）。
【０１２６】
テーブルスキーマ情報取得要求を受け取ったKVSデータ処理部２０６は、キャッシュメモリ２０７又はストレージ２０８に当該テーブルスキーマ情報の読出しを要求する（Ｓ４０８）。
【０１２７】
テーブルスキーマ情報の読出しの要求を受け取ったキャッシュメモリ２０７又はストレージ２０８は、当該テーブルスキーマ情報を読み出し、これをKVSデータ処理部２０６に返す（Ｓ４０９）。
【０１２８】
キャッシュメモリ２０７又はストレージ２０８からテーブルスキーマ情報を受け取ったKVSデータ処理部２０６は、このテーブルスキーマ情報をサーバ側送受信部２０１に渡す（Ｓ４１０）。
【０１２９】
サーバ側送受信部２０１はこのテーブルスキーマ情報をクライアント側送受信部３０６に送信する（Ｓ４１１）。なお、スキーマ情報管理部２０５が要求されたテーブルスキーマ情報無しとの情報をサーバ側送受信部２０１に返した場合は、サーバ側送受信部２０１は該当するテーブルスキーマ情報は無い旨のメッセージをクライアント側送受信部３０６に送信する。
【０１３０】
要求にかかるテーブルスキーマ情報、又は当該テーブルスキーマ情報は無い旨のメッセージを受信したクライアント側送受信部３０６は、これらをKVS型コマンド処理部３０３に渡す（Ｓ４１２）。
【０１３１】
テーブルスキーマ情報を受け取った場合、KVS型コマンド処理部３０３は当該テーブルスキーマ情報をスキーマ情報キャッシュ３０５に渡す（Ｓ４１３）。当該テーブルスキーマ情報は無い旨のメッセージを受信した場合は、そのままテーブルスキーマ情報取得処理は終了する。
【０１３２】
テーブルスキーマ情報を受け取ったスキーマ情報キャッシュ３０５は、当該テーブルスキーマ情報を記憶し、記憶した結果をKVS型コマンド処理部３０３に返す（Ｓ４１４）。
以上で、図１５に示す、テーブルスキーマ情報取得処理のシーケンス図の説明を終了する。
【０１３３】
［２．６．SQLデータ登録処理］
SQLデータ登録処理について述べる。SQLデータ登録処理は、アプリケーション部４００がデータ登録を要求するSQLコマンドを、データベースクライアント３００へ渡した場合に、これに応じてデータベース装置１０がデータ登録を行う処理である。
【０１３４】
図１６は、SQLデータ登録処理の一例を示すフローチャートであり、図１７は図１６に続くデータ登録処理のフローチャートである。以下、図１６及び図１７のフローチャートを参照しながらSQLデータ登録処理の一例を説明する。
【０１３５】
SQLデータ登録処理において、まず最初にアプリケーション部４００はデータベースクライアント３００のインタフェース部３０１にデータ登録を要求するSQLコマンドを送信する（Ｓ９０）。インタフェース部３０１は、このSQLコマンドを処理一次判断部３０２に渡す。
このSQLコマンドを受け取った処理一次判断部３０２は、当該SQLコマンドが高速処理可能か否かを判定する（Ｓ９１）。
【０１３６】
ステップＳ９１において当該SQLコマンドが高速処理可能であると判定した場合（Ｓ９１、可能）、処理一次判断部３０２は当該SQLコマンドに対応するKVS型コマンドを生成し、このKVS型コマンドをKVS型コマンド処理部３０３に渡す（Ｓ９２）。その後前述したKVS用APIデータ登録処理と同様の処理が実行され、SQLデータ登録処理は終了する。
【０１３７】
一方、ステップＳ９１において当該SQLコマンドが高速処理可能でないと判定した場合（Ｓ９１、不可）、処理一次判断部３０２は当該SQLコマンドをクライアント側送受信部３０６に渡し、クライアント側送受信部３０６はこのSQLコマンドをサーバ側送受信部２０１に送信する（Ｓ９３）。
データベースサーバ２００のサーバ側送受信部２０１はSQLコマンドを受信する（Ｓ９４）と、このSQLコマンドをSQL字句解釈部２０２に渡す。
SQL字句解釈部２０２はこのSQLコマンドを解釈し、解釈結果をSQLコマンド実行部２０３に渡す（Ｓ９５）。
【０１３８】
SQLコマンド実行部２０３はスキーマ情報管理部２０５からSQLコマンドで指定されたテーブルのテーブルスキーマ情報をスキーマ情報管理部２０５に要求し、これを取得する。SQLコマンド実行部２０３はテーブルスキーマ情報とSQLコマンドに含まれるデータをサーバ側シリアライズ処理部２０４に渡す（Ｓ９６）。サーバ側シリアライズ処理部２０４はテーブルスキーマ情報とSQLコマンドに含まれるデータからシリアライズされたデータを生成し、これをSQLコマンド実行部２０３に返す（Ｓ９７）。
【０１３９】
SQLコマンド実行部２０３はシリアライズされたデータをKVSデータ処理部２０６に渡す。KVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８にアクセスし、シリアライズされたデータをキャッシュメモリ２０７又はストレージ２０８に書き込む（Ｓ９８）。
【０１４０】
キャッシュメモリ２０７又はストレージ２０８は、キャッシュメモリ２０７又はストレージ２０８に書き込んだ結果である実行結果をSQLコマンド実行部２０３に渡す（Ｓ９９）。
【０１４１】
SQLコマンド実行部２０３はサーバ側送受信部２０１にこの実行結果を渡す（Ｓ１００＿１）。サーバ側送受信部２０１は、クライアント側送受信部３０６この実行結果を送信する（Ｓ１００＿２）。
【０１４２】
クライアント側送受信部３０６は、処理一次判断部３０２、インタフェース部３０１を経由してこの実行結果をアプリケーション部４００に渡す（Ｓ１００＿３）。アプリケーション部４００は要求したデータ登録の実行結果を取得する。
以上で、SQLデータ登録処理は終了する。
【０１４３】
図１８に、上記図１６及び図１７に示したフローチャートに対応する、SQLデータ登録処理のシーケンス図を示す。なお、本シーケンス図では、処理一次判断部３０２で高速処理が不可であると判定された場合の流れを説明する。
【０１４４】
SQLデータ登録処理において、アプリケーション部４００は、データ登録を要求するSQLコマンド「INSERT」をインタフェース部３０１に渡す（Ｓ５０１）。このSQLコマンド「INSERT」を受け取ったインタフェース部３０１は、SQLコマンド「INSERT」を処理一次判断部３０２に渡す（Ｓ５０２）。このSQLコマンド「INSERT」を受け取った処理一次判断部３０２は、高速処理が不可であると判定し、このSQLコマンド「INSERT」をクライアント側送受信部３０６に渡す（Ｓ５０３）。
【０１４５】
クライアント側送受信部３０６は、このSQLコマンド「INSERT」をデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ５０４）。SQLコマンドを受信したサーバ側送受信部２０１はこのSQLコマンドをSQL字句解釈部２０２に渡す（Ｓ５０５）。このSQLコマンドを受け取ったSQL字句解釈部２０２は、SQL文の字句解釈を実行する（Ｓ５０６）。
SQL文の字句解釈を実行したSQL字句解釈部２０２は、SQLコマンド実行部２０３へ解釈結果を渡す（Ｓ５０７）。
【０１４６】
SQLコマンド実行部２０３はSQLコマンドで指定されたテーブルのテーブルスキーマ情報をスキーマ情報管理部２０５に要求する（Ｓ５０８）。スキーマ情報管理部２０５は、当該テーブルスキーマ情報がデータベースサーバ２００内に記憶されている場合は、当該テーブルスキーマ情報をSQLコマンド実行部２０３に返す（Ｓ５０９）。
【０１４７】
テーブルスキーマ情報を取得したSQLコマンド実行部２０３は、SQLコマンドに含まれるデータ（Key,  value）とテーブルスキーマ情報をサーバ側シリアライズ処理部２０４に渡す（Ｓ５１０）。
【０１４８】
データ（Key,  value）とテーブルスキーマ情報を受け取ったサーバ側シリアライズ処理部２０４は、これらをシリアライズし、シリアライズされたデータをSQLコマンド実行部２０３に返す（Ｓ５１１）。
シリアライズされたデータを受け取ったSQLコマンド実行部２０３は、シリアライズされたデータをKVSデータ処理部２０６に渡す（Ｓ５１２）。
【０１４９】
シリアライズされたデータを受け取ったKVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８にアクセスし、シリアライズされたデータをキャッシュメモリ２０７又はストレージ２０８に書き込ませる（Ｓ５１３）。
【０１５０】
キャッシュメモリ２０７又はストレージ２０８は、書き込んだ結果を示す実行結果をKVSデータ処理部２０６に渡す（Ｓ５１４）。実行結果を受け取ったKVSデータ処理部２０６は、この実行結果をSQLコマンド実行部２０３に渡す（Ｓ５１５）。SQLコマンド実行部２０３は、この実行結果をSQL字句解釈部２０２に渡す（Ｓ５１６）。実行結果を受け取ったSQL字句解釈部２０２は、サーバ側送受信部２０１にこの実行結果を渡す（Ｓ５１７）。サーバ側送受信部２０１は、データベースクライアント３００のクライアント側送受信部３０６この実行結果を送信する（Ｓ５１８）。
【０１５１】
実行結果を受信したクライアント側送受信部３０６は、処理一次判断部３０２、インタフェース部３０１を順に経由してこの実行結果をアプリケーション部４００に渡す（Ｓ５１９、Ｓ５２０、Ｓ５２１）。
以上で、図１８に示すSQLデータ登録処理のシーケンス図の説明を終了する。
【０１５２】
［２．７．KVS用APIデータ取得処理］
KVS用APIデータ取得処理について述べる。KVS用APIデータ取得処理は、アプリケーション部４００がデータ取得（読出し）を要求するKVSコマンドを、データベースクライアント３００へ渡した場合に、これに応じてデータベース装置１０がデータ取得を行う処理である。
【０１５３】
図１９は、KVS用APIデータ取得処理の一例を示すフローチャートである。図１９のフローチャートを参照しながらKVS用APIデータ取得処理の一例を説明する。
【０１５４】
KVS用APIデータ取得処理において、まず最初にデータベースクライアント３００のアプリケーション部４００はデータ取得を要求するKVSコマンドをインタフェース部３０１に渡す（Ｓ１１０＿１）。
【０１５５】
インタフェース部３０１はデータベースクライアントのクライアント側送受信部３０６にこのKVSコマンドを渡し、クライアント側送受信部３０６はデータベースサーバ２００のサーバ側送受信部２０１にKVSコマンドを送信する（Ｓ１１０＿２）。
【０１５６】
データベースサーバ２００のサーバ側送受信部２０１は、このKVSコマンドを受信すると、KVSコマンド処理部３０３にこのKVSコマンドを渡す（Ｓ１１０＿３）。
【０１５７】
KVSデータ処理部２０６は、キャッシュメモリ２０７又はストレージ２０８にアクセスし、キャッシュメモリ２０７又はストレージ２０８から、KVSコマンドで要求されているデータを取得する（Ｓ１１０＿４）。
【０１５８】
KVSデータ処理部２０６は、データ取得処理の実行結果（取得したデータを含む）をサーバ側送受信部２０１に渡す（Ｓ１１０＿５）。サーバ側送受信部２０１はこの実行結果をクライアント側送受信部３０６に送信する（Ｓ１１０＿６）。
クライアント側送受信部３０６は、受信した実行結果をKVS型コマンド処理部３０３に渡す（Ｓ１１０＿７）。
【０１５９】
KVS型コマンド処理部３０３は、実行結果に含まれるデータに対応するテーブルスキーマ情報をスキーマ情報キャッシュ３０５から読み出す（Ｓ１１０＿８）。
【０１６０】
KVS型コマンド処理部３０３は、実行結果に含まれるデータ及びステップＳ１１０＿８で取得したテーブルスキーマ情報をクライアント側シリアライズ処理部３０４に渡す。実行結果に含まれるデータ及びステップＳ１１０＿８で取得したテーブルスキーマ情報をクライアント側シリアライズ処理部３０４は、データをデシリアライズしてデータからvalueを生成し、生成したvalueをKVS型コマンド処理部３０３返す（Ｓ１１０＿９）。
【０１６１】
KVS型コマンド処理部３０３は、上記value及び実行結果をインタフェース部３０１に渡し、インタフェース部３０１は上記value及び実行結果をアプリケーション部４００に渡す（Ｓ１１０＿１０）。
以上でKVS用APIデータ取得処理が終了する。
図２０に、上記図１９に示したフローチャートに対応する、KVS用APIデータ取得処理のシーケンス図を示す。
データベースクライアント３００のアプリケーション部４００はデータ取得を要求するKVSコマンドをインタフェース部３０１に渡す（Ｓ６０１）。
インタフェース部３０１はKVS型コマンド処理部３０３にこのKVSコマンドを渡す（Ｓ６０２）。
【０１６２】
KVS型コマンド処理部３０３はクライアント側送受信部３０６にこのKVSコマンドを渡す（Ｓ６０３）。KVSコマンドを受け取ったクライアント側送受信部３０６はデータベースサーバ２００のサーバ側送受信部２０１にこのKVSコマンドを送信する（Ｓ６０４）。
【０１６３】
データベースサーバ２００のサーバ側送受信部２０１は、このKVSコマンドを受信すると、KVSコマンド処理部３０３にこのKVSコマンドを渡す（Ｓ６０５）。
【０１６４】
KVSデータ処理部２０６は、キャッシュメモリ２０７又はストレージ２０８にアクセスし、キャッシュメモリ２０７又はストレージ２０８から、KVSコマンドで要求されているデータの読出しを要求する（Ｓ６０６）。
キャッシュメモリ２０７又はストレージ２０８は、データの読出し要求に応じて、KVSデータ処理部２０６にデータを返す（Ｓ６０７）。
【０１６５】
データを取得したKVSデータ処理部２０６は、データ取得処理の実行結果（取得したデータを含む）をサーバ側送受信部２０１に渡す（Ｓ６０８）。サーバ側送受信部２０１はこの実行結果をクライアント側送受信部３０６に送信する（Ｓ６０９）。
クライアント側送受信部３０６は、受信した実行結果をKVS型コマンド処理部３０３に渡す（Ｓ６１０）。
【０１６６】
KVS型コマンド処理部３０３は、実行結果に含まれるデータに対応するテーブルスキーマ情報をスキーマ情報キャッシュ３０５に要求し（Ｓ６１１）、スキーマ情報キャッシュ３０５は要求されたテーブルスキーマ情報をKVS型コマンド処理部３０３に渡す（Ｓ６１２）。
【０１６７】
KVS型コマンド処理部３０３は、実行結果に含まれるデータ及びステップＳ６１１，Ｓ６１２で取得したテーブルスキーマ情報をクライアント側シリアライズ処理部３０４に渡す（Ｓ６１３）。実行結果に含まれるデータ及びステップＳ６１１，Ｓ６１２で取得したテーブルスキーマ情報を受け取ったクライアント側シリアライズ処理部３０４は、データをデシリアライズしてデータからvalueを生成し、生成したvalueをKVS型コマンド処理部３０３に返す（Ｓ６１４）。
【０１６８】
KVS型コマンド処理部３０３は、上記value及び実行結果をインタフェース部３０１に渡す（Ｓ６１５）。インタフェース部３０１は上記value及び実行結果をアプリケーション部４００に渡す（Ｓ６１６）。
以上で、図２０に示す、KVS用APIデータ取得処理のシーケンス図の説明を終了する。
【０１６９】
［２．８．SQLデータ取得処理］
SQLデータ取得処理について述べる。SQLデータ取得処理は、アプリケーション部４００がデータ取得（読出し）を要求するSQLコマンドを、データベースクライアント３００へ渡した場合に、これに応じてデータベース装置１０がデータ取得を行う処理である。
【０１７０】
図２１は、SQLデータ取得処理の一例を示すフローチャートであり、図２２は図２１のフローチャートに続くフローチャートである。図２１及び図２２のフローチャートを参照しながらSQLデータ取得処理の一例を説明する。
【０１７１】
SQLデータ取得処理において、最初にアプリケーション部４００はデータベースクライアント３００のインタフェース部３０１にデータ登録を要求するSQLコマンドを送信する（Ｓ１２０＿１）。インタフェース部３０１は、このSQLコマンドを処理一次判断部３０２に渡す。
このSQLコマンドを受け取った処理一次判断部３０２は、当該SQLコマンドが高速処理可能か否かを判定する（Ｓ１２０＿２）。
【０１７２】
ステップＳ１２０＿２において当該SQLコマンドが高速処理可能であると判定した場合（Ｓ１２０＿２、可能）、処理一次判断部３０２は当該SQLコマンドに対応するKVS型コマンドを生成し、このKVS型コマンドをKVS型コマンド処理部３０３に渡す（Ｓ１２０＿３）。その後前述したKVS用APIデータ取得処理と同様の処理が実行され、SQLデータ取得処理は終了する。
【０１７３】
一方、ステップＳ１２０＿２において当該SQLコマンドが高速処理可能でないと判定した場合（Ｓ１２０＿２、不可）、処理一次判断部３０２は当該SQLコマンドをクライアント側送受信部３０６に渡し、クライアント側送受信部３０６はこのSQLコマンドをサーバ側送受信部２０１に送信する（Ｓ１２０＿４）。
データベースサーバ２００のサーバ側送受信部２０１はSQLコマンドを受信すると、SQLコマンドをSQL字句解釈部２０２に渡す（Ｓ１２０＿５）。
SQL字句解釈部２０２はこのSQLコマンドを解釈し、解釈結果をSQLコマンド実行部２０３に渡す（Ｓ１２０＿６）。
【０１７４】
SQLコマンド実行部２０３はSQLコマンドで指定されたテーブルのテーブルスキーマ情報をスキーマ情報管理部２０５に要求し、これを取得する。SQLコマンド実行部２０３はテーブルスキーマ情報とSQLコマンドに含まれるデータをKVSデータ処理部２０６に渡す（Ｓ１２０＿７）。
【０１７５】
KVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８にアクセスし、シリアライズされたデータをキャッシュメモリ２０７又はストレージ２０８から読み出す（Ｓ１２０＿８）。キャッシュメモリ２０７又はストレージ２０８は、シリアライズされたデータをKVSデータ処理部２０６に渡す。KVSデータ処理部２０６はシリアライズされたデータを含む実行結果をSQLコマンド実行部２０３に返す（Ｓ１２０＿９）。
【０１７６】
SQLコマンド実行部２０３は、受け取ったシリアライズされているデータをサーバ側シリアライズ処理部２０４に渡す。サーバ側シリアライズ処理部２０４は、シリアライズされているデータをデシリアライズしてデシリアライズされたデータを生成する（Ｓ１２０＿１０）、
【０１７７】
サーバ側シリアライズ処理部２０４は、デシリアライズされたデータをSQLコマンド実行部２０３に返す。デシリアライズされたデータを受け取ったSQLコマンド実行部２０３は、サーバ側送受信部２０１にデータ取得の実行結果（デシリアライズされたデータを含む）を渡す（Ｓ１２０＿１１）。
【０１７８】
実行結果（デシリアライズされたデータを含む）を受け取ったサーバ側送受信部２０１は、クライアント側送受信部３０６この実行結果を送信する（Ｓ１２０＿１２）。
【０１７９】
実行結果を受信したクライアント側送受信部３０６は、処理一次判断部３０２、インタフェース部３０１を経由してこの実行結果をアプリケーション部４００に渡す（Ｓ１２０＿１３）。
以上で、SQLデータ取得処理は終了する。
【０１８０】
図２３に、上記図２１及び図２２のフローチャートに対応する、SQLデータ取得処理のシーケンス図を示す。なお、本シーケンス図では、処理一次判断部３０２で高速処理が不可であると判定された場合の流れを示すこととする。
【０１８１】
SQLデータ取得処理において、アプリケーション部４００は、データ取得（読出し）を要求するSQLコマンドをインタフェース部３０１に渡す（Ｓ７０１）。このSQLコマンドを受け取ったインタフェース部３０１は、このSQLコマンドを処理一次判断部３０２に渡す（Ｓ７０２）。このSQLコマンドを受け取った処理一次判断部３０２は、高速処理が不可であると判定し、このSQLコマンドをクライアント側送受信部３０６に渡す（Ｓ７０３）。
【０１８２】
クライアント側送受信部３０６は、このSQLコマンドをデータベースサーバ２００のサーバ側送受信部２０１に送信する（Ｓ７０４）。SQLコマンドを受信したサーバ側送受信部２０１はこのSQLコマンドをSQL字句解釈部２０２に渡す（Ｓ７０５）。このSQLコマンドを受け取ったSQL字句解釈部２０２は、SQL文の字句解釈を実行する（Ｓ７０６）。
SQLコマンドの字句解釈を実行したSQL字句解釈部２０２は、SQLコマンド実行部２０３へ解釈結果を渡す（Ｓ７０７）。
【０１８３】
SQLコマンド実行部２０３はSQLコマンドで指定されたテーブルのテーブルスキーマ情報をスキーマ情報管理部２０５に要求する（Ｓ７０８）。スキーマ情報管理部２０５は、当該テーブルスキーマ情報がデータベースサーバ２００内に記憶されている場合は、当該テーブルスキーマ情報をSQLコマンド実行部２０３に返す（Ｓ７０９）。
【０１８４】
テーブルスキーマ情報を取得したSQLコマンド実行部２０３は、SQLコマンドに含まれるデータ（Key,  value）をKVSデータ処理部２０６に渡す（Ｓ７１０）。
【０１８５】
データを受け取ったKVSデータ処理部２０６はキャッシュメモリ２０７又はストレージ２０８にアクセスし、シリアライズされたデータをキャッシュメモリ２０７又はストレージ２０８にデータ読み出しを要求する（Ｓ７１１）。キャッシュメモリ２０７又はストレージ２０８は、要求されたデータの読出しの実行結果（読み出したデータを含む）をKVSデータ処理部２０６に渡す（Ｓ７１２）。
KVSデータ処理部２０６は、キャッシュメモリ２０７又はストレージ２０８から取得したデータをSQLコマンド実行部２０３に渡す（Ｓ７１３）。
【０１８６】
データを受け取ったSQLコマンド実行部２０３は、ステップＳ７０８，７０９にて取得したテーブルスキーマ情報とともにこのデータをサーバ側シリアライズ処理部２０４に渡す（Ｓ７１４）。
【０１８７】
データ（Key,  value）とテーブルスキーマを受け取ったサーバ側シリアライズ処理部２０４は、データをデシリアライズし、デシリアライズされたデータをSQLコマンド実行部２０３に返す（Ｓ７１５）。
【０１８８】
デシリアライズされたデータを受け取ったSQLコマンド実行部２０３は、デシリアライズされたデータを含む実行結果をSQL字句解釈部２０２に渡す（Ｓ７１６）。実行結果を受け取ったSQL字句解釈部２０２は、サーバ側送受信部２０１にこの実行結果を渡す（Ｓ７１７）。サーバ側送受信部２０１は、データベースクライアント３００のクライアント側送受信部３０６この実行結果を送信する（Ｓ７１８）。
【０１８９】
実行結果を受信したクライアント側送受信部３０６は、処理一次判断部３０２、インタフェース部３０１を順に経由してこの実行結果をアプリケーション部４００に渡す（Ｓ７１９、Ｓ７２０、Ｓ７２１）。
以上で、図２３に示す、SQLデータ取得処理のシーケンス図の説明を終了する。
【０１９０】
［３．命令文の例］
アプリケーション部４００からデータベースクライアント３００に渡される命令文の例を示す。
（１）テーブルスキーマ情報作成（登録）を行わせる命令文の例は以下のとおりである。
SQL: CREATE TABLE テーブル名 ( key, value1, …);
（２）データ登録を行わせる命令文の例は以下のとおりである。
なお、データ登録は、SQL と KVS用APIのどちらを用いても実行可能である。
SQL: INSERT INTO テーブル名 VALUES( aa, bb, …);
KVS用API: set ( テーブル名, key, value1, value2, … );
put ( テーブル名, key, value1, value2, … );
（３）データ取得を行わせる命令文の例は以下のとおりである。
なお、データ取得はSQL と KVS用APIのどちらを用いても実行可能である。
SQL: SELECT カラム名 FROM テーブル名 WHERE 条件;
KVS用API: get ( テーブル名, key, *value1, *value2, … );
（４）データ削除を行わせる命令文の例は以下のとおりである。
なお、データ削除はSQL と KVSのどちらを用いても実行可能である。:
SQL: DELETE FROM テーブル名 WHERE 条件;
KVS用API: delete ( テーブル名, key );
【０１９１】
［４．第2の実施の形態］
第2の実施の形態を説明する。本発明の第２の実施の形態は、データベース装置として提案される。このデータベース装置は、SQLと、KVS用APIという複数のデータ操作手段を備え、KVS用APIにより、速度が遅いというSQLの課題を解決し、既存のアプリケーションで使用される場合が多いSQLでも操作できる装置である。
【０１９２】
第２の実施の形態にかかるデータベース装置は、コンピュータ、ワークステーション、サーバなどの情報処理装置であって、この情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読み出し専用メモリ（ROM）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
【０１９３】
図２４に、第2の実施の形態にかかるデータベース装置１０の構成例を示す機能ブロック図を掲げる。なお、第1の実施の形態にかかるデータベース装置と同一の構成要素については、同一の参照符号を付しそれら構成要素の詳細な説明は省略する。
【０１９４】
本発明の実施の形態にかかるデータベース装置は、アプリケーションサーバ１００と、アプリケーションサーバ１００に接続されたデータベースサーバ２００を有している。アプリケーションサーバ１００はネットワーク２０に接続されており、ネットワーク２０を介して端末装置３０と通信可能である。
【０１９５】
［４．１．アプリケーションサーバ］
アプリケーションサーバ１００は、データベースサーバ２００が提供するデータベースを利用して、サービスを端末装置３０に提供する機能を有する。
アプリケーションサーバ１００は、アプリケーション部４００と、アプリケーション部４００に接続されたデータベースクライアント３００を有する。
【０１９６】
［４．１．１．データベースクライアント］
図２４を参照しながら、データベースクライアント３００の構成例を説明する。データベースクライアント３００は、インタフェース部３０１と、インタフェース部３０１に接続されたクライアント側送受信部３０６とを有する。なお、インタフェース部３０１は、アプリケーション部４００と接続されており、クライアント側送受信部３０６はサーバ側送受信部２０１に接続されている。
【０１９７】
［４．２．データベースサーバ］
データベースサーバ２００は、サーバ側送受信部２０１と、サーバ側送受信部２０１に接続された処理一次判断部３０２及びKVS型コマンド処理部３０３と、処理一次判断部３０２に接続されたSQL字句解釈部２０２と、SQL字句解釈部２０２に接続されたSQLコマンド実行部２０３と、SQLコマンド実行部２０３に接続されたKVSデータ処理部２０６、サーバ側シリアライズ処理部２０４、スキーマ情報管理部２０５と、KVSデータ処理部２０６に接続されたキャッシュメモリ２０７、ストレージ２０８とを有している。
【０１９８】
KVS型コマンド処理部３０３は処理一次判断部３０２に接続されていると共に、サーバ側シリアライズ処理部２０４、スキーマ情報管理部２０５にも接続されている。KVSデータ処理部２０６及びSQLコマンド実行部２０３はサーバ側送受信部２０１に接続されている。サーバ側送受信部２０１は、クライアント側送受信部３０６に接続されている。
【０１９９】
第２の実施の形態にかかるデータベース装置は、第１の実施の形態では、データベースクライアント３００に設けられていた処理一次判断部３０２及びKVS型コマンド処理部３０３をデータベースサーバ２００に設けると共に、サーバ側シリアライス処理部２０４を、第１の実施の形態のクライアント側シリアライズ処理部３０４及びサーバ側シリアライス処理部２０４の双方の機能を有するシリアライズ処理部２０４Ａに置き換えている点で異なっている。その他の構成及び各構成要素の機能は第１の実施の形態と同様である。
【０２００】
第２の実施の形態にかかるデータベース装置は、データベースサーバ２００Ａでシリアライズやデシリアライズを行うという特徴がある。この特徴によって、データベースサーバ２００Ａに接続中の各データベースクライアント３００Ａへのスキーマ情報変更通知が不要となり、処理負荷の低減、処理時間の高速化が可能となる。
【０２０１】
［５．利点］
上記第1及び第2の実施の形態によれば、KVS用APIデータベースの操作をすることができるため、高速に処理を行うことが可能であるとともに、SQLでデータベースの操作することもできるため、様々な条件でのデータ取得が可能となり、また、SQL文を使用した既存のアプリケーションを変更すること無く使用ことも可能となる。
【０２０２】
また、上記第1及び第2の実施の形態によれば、テーブルスキーマ情報をデータベース側に持たせ、シリアライズやデシリアライズをアプリケーション側でなくデータベース側で行うことで、テーブル構造の変更が容易になる。
また、上記第1及び第2の実施の形態によれば、同じデータについて、KVS用APIとSQLの使い分けをすることが可能となる。
【０２０３】
［６．まとめ、その他］
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
【符号の説明】
【０２０４】
１０・・・データベース装置；  １００・・・アプリケーションサーバ；  ２００，２００Ａ・・・データベースサーバ；  ２０１・・・サーバ側送受信部；  ２０２・・・SQL字句解釈部；  ２０３・・・SQLコマンド実行部；  ２０４・・・サーバ側シリアライズ処理部；  ２０５・・・スキーマ情報管理部；  ２０６・・・ＫＶＳデータ処理部；  ２０７・・・キャッシュメモリ；  ２０８・・・ストレージ；  ３００，３００Ａ・・・データベースクライアント；  ３０２・・・処理一次判断部；  ３０３・・・ＫＶＳコマンド処理部；  ３０４・・・クライアント側シリアライズ処理部；  ３０５・・・スキーマ情報キャッシュ；  ３０６・・・クライアント側送受信部；  ４００・・・アプリケーション部；
【図１】
2015153014.tif 000003
【図２】
2015153014.tif 000004
【図３】
2015153014.tif 000005
【図４】
2015153014.tif 000006
【図５】
2015153014.tif 000007
【図６】
2015153014.tif 000008
【図７】
2015153014.tif 000009
【図８】
2015153014.tif 000010
【図９】
2015153014.tif 000011
【図１０】
2015153014.tif 000012
【図１１】
2015153014.tif 000013
【図１２】
2015153014.tif 000014
【図１３】
2015153014.tif 000015
【図１４】
2015153014.tif 000016
【図１５】
2015153014.tif 000017
【図１６】
2015153014.tif 000018
【図１７】
2015153014.tif 000019
【図１８】
2015153014.tif 000020
【図１９】
2015153014.tif 000021
【図２０】
2015153014.tif 000022
【図２１】
2015153014.tif 000023
【図２２】
2015153014.tif 000024
【図２３】
2015153014.tif 000025
【図２４】
2015153014.tif 000026