JP5134989B2 - サーバ、データ転送方法及びプログラム - Google Patents

サーバ、データ転送方法及びプログラム Download PDF

Info

Publication number
JP5134989B2
JP5134989B2 JP2008021594A JP2008021594A JP5134989B2 JP 5134989 B2 JP5134989 B2 JP 5134989B2 JP 2008021594 A JP2008021594 A JP 2008021594A JP 2008021594 A JP2008021594 A JP 2008021594A JP 5134989 B2 JP5134989 B2 JP 5134989B2
Authority
JP
Japan
Prior art keywords
data
server
database
result
identifier
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.)
Expired - Fee Related
Application number
JP2008021594A
Other languages
English (en)
Other versions
JP2009181463A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008021594A priority Critical patent/JP5134989B2/ja
Priority to US12/357,468 priority patent/US8352481B2/en
Publication of JP2009181463A publication Critical patent/JP2009181463A/ja
Application granted granted Critical
Publication of JP5134989B2 publication Critical patent/JP5134989B2/ja
Expired - Fee Related 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/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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)
  • Information Transfer Between Computers (AREA)

Description

本発明は、クライアントとの間でデータ転送を行うサーバ、データ転送方法及びプログラムに関する。
従来より、クライアントからの要求に応じて、データーベースに記憶されているデータを検索して検索結果のデータをクライアントに転送するデーターベースサーバがある。近年では、巨大なデータに対応するため、データベースを各々有する複数のデータベースサーバとコーディネータサーバとがネットワークを介して接続される分散データベースシステムが構築されている。このような分散データベースシステムにおいて、クライアントは、コーディネータサーバを介してデータベースサーバから検索結果のデータを受信する。分散データベースシステムでは、複数のデータベースにデータが分割配置されているため、コーディネータサーバは複数のデータベースサーバに並列アクセスが可能となる。従って、データベース数に応じた性能向上が期待される。その反面、コーディネータサーバ及びデータベースサーバ間や複数のデータベースサーバ間でデータをやり取りするために必要なネットワーク上でのデータ転送が、大きなオーバヘッドになる。仮に高速な相互結合されたネットワークであっても同様である。このため、分散効果が大きく低減して、期待された性能向上が望めないことが多い。
このような問題を改善するため、複数のサーバ間で転送するデータ(転送データ)を圧縮するなどの手法が提案されている。また、特許文献1には、検索処理時にはデータサーバからフロントエンドサーバにレコードIDだけを転送し、フェッチ処理時にデータサーバにおいてレコードIDから実レコードに変換する、という現実に即した手法が提案されている。
特許第3747525号公報
転送データを圧縮するなどの手法では、圧縮率が高ければ効果は大きい。しかし、規則性のない文字列などではその圧縮率は30%程度であるため、転送データを劇的に削減するのは困難である。
また、特許文献1の手法にも、以下の2点の問題点があると考えられる。レコードを検索して結果レコードを順次更新するというトランザクションであれば、効果は十分あり、レスポンスも改善され得る。しかし、通常の全文検索のように検索結果のレコード一覧を瞬時に作成するケースでは、データの転送量が増えるため、無駄が多いという点である。さらに、転送データがレコードIDか実レコードかという二者択一では不都合なケースも発生するという点である。例えば、XMLデータなどの非定型のデータを取り扱う場合である。この場合、前者ではデータ不足、後者では無駄なデータの転送、というジレンマが発生する恐れがある。なぜなら、非定型のデータの場合、取り出されるデータのデータサイズが予測できないからである。
本発明は、上記に鑑みてなされたものであって、必要なデータを転送しつつ、無駄なデータの転送を低減可能なサーバ、方法及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、サーバであって、複数の要素を含むデータの取得を要求する第1処理要求をクライアントから受信する受信手段と、前記第1処理要求に応じて、データベースから該当の第1データと当該第1データ内における要素間の関連及び各要素の位置付けを示すデータ構造情報とを取得する取得手段と、前記第1データに含まれる各要素に対して、前記構造情報を用いて、各要素を識別子にするか否かを判断する判断手段と、前記第1データに含まれる要素のうち、前記判断手段によって前記識別子にすると判断された第1要素を第1識別子にすることにより、当該第1識別子と、前記第1データに含まれる要素のうち前記第1要素以外の要素とを含む第2データを生成するデータ生成手段と、前記第2データを前記クライアントに送信する結果送信手段とを備えることを特徴とする。
また、本発明は、受信手段と、取得手段と、判断手段と、データ生成手段と、結果送信手段とを備えるサーバにおいて実現される方法であって、前記受信手段が、複数の要素を含むデータの取得を要求する第1処理要求をクライアントから受信する受信ステップと、前記取得手段が、受信された前記第1処理要求に応じて、データベースから該当の第1データと当該第1データ内における要素間の関連及び各要素の位置付けを示すデータ構造情報とを取得する取得ステップと、前記判断手段が、取得された前記第1データに含まれる各要素に対して、前記データ構造情報を用いて、各要素を識別子にするか否かを判断する判断ステップと、前記データ生成手段が、前記第1データに含まれる要素のうち、前記判断ステップにおいて前記識別子にすると判断された第1要素を第1識別子にすることにより、当該第1識別子と、前記第1データに含まれる要素のうち前記第1要素以外の要素とを含む第2データを生成するデータ生成ステップと、前記結果送信手段が、生成された前記第2データを前記クライアントに送信する結果送信ステップとを含むとを含むことを特徴とする。
また、本発明は、データ転送プログラムであって、上記に記載された方法をコンピュータで実行させることを特徴とする。
本発明によれば、必要なデータを転送しつつ、無駄なデータの転送を低減することができる。
以下に添付図面を参照して、この発明にかかるサーバ、方法及びプログラムの最良な実施の形態を詳細に説明する。
[第1の実施の形態]
(1)構成
図1は、本実施の形態にかかるデータベースシステムの構成を例示する図である。データベースシステムは、アプリケーションプログラムが実行されるクライアントコンピュータ(以下、クライアントという)50と、データベースサーバ51とを有し、これらがネットワーク52を介して接続されて構成される。ネットワーク52は、例えば、LAN(Local Area Network)、イントラネット、イーサネット(登録商標)又はインターネットなどである。
クライアント50は、データの取得を要求するデータ取得要求などの処理要求を、ネットワーク52を介してデータベースサーバ51に送信し、その処理結果をデータベースサーバ51から受信する。データベースサーバ51は、データを記憶するデータベース510を有し、クライアント50からの処理要求に応じたデータをデータベース510から取得し、当該データを適宜加工して結果データを生成し、これを処理結果としてクライアント50に送信する。
ここで、クライアント50及びデータベースサーバ51のハードウェア構成について説明する。クライアント50及びデータベースサーバ51は各々、装置全体の制御を行うCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、ネットワーク52を介して外部のコンピュータと通信を行う通信制御装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。また、クライアント50及びデータベースサーバ51には各々、情報を表示するディスプレイ装置等の表示装置と、ユーザが各種処理要求を入力するためのキーボードやマウス等の入力装置とが有線又は無線により接続される。このような構成において、上述のデータベース510は、データベースサーバ51の有する外部記憶装置に格納されている。
尚、ここでは、データベース510は、XML(Extensible Markup Language)データベースであるとし、タプルを包含したXMLデータを記憶するものとする。通常、データベースとしては、データ間の関係性をモデル化した関係データベース(Relational Database:RDB)が使われる。RDBでは、カラムの固定的な並びであるタプルの集合でデータベースを表現する。それ以外に、文書データの階層構造をモデル化した構造化文書データベースも存在する。これがいわゆるXMLデータベースと呼ばれているものである。これは要素の上下関係、兄弟関係を保持した文書データの集合でデータベースを表現する。XMLは記述能力が高い。タプルも上下関係が1段しかないXMLデータとして表現することができる。
例えば、図2に示されるタプルは、図3に示されるようなXMLデータに等価変換することができる。本実施の形態においては、このように記述能力の高いXMLにより記述されたXMLデータを取り扱うものとする。但し、本実施の形態においては、XMLデータに限定されることなく、データベース510がRDBであっても良い。
図4は、データベース510に記憶されるXMLデータを3つ例示する図である。XMLは、文書構造を構成する個々のパーツを要素(エレメント:Element)と呼び、要素はタグ(Tag)を使って記述される。具体的には、XMLでは、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ(終了タグ)との2つのタグでデータを挟み込んで、1つの要素を表現している。なお、開始タグと終了タグとで挟み込まれたデータは、当該開始タグと終了タグとで表された1つの要素に含まれるテキスト要素(テキストノード)である。図4の例では、各XMLデータXD1〜XD3は、<paper>要素で挟み込まれた複数の部分的なXMLデータから構成されている。部分的なXMLデータとは各々、<title>要素で挟み込まれた文書のタイトルに関するデータと、<body>要素で挟み込まれた文書の本文に関するデータと、<P >要素で挟み込まれた各行ごとのデータとである。このように、複数の階層構造や意味を持ったデータが1つのXMLデータに混在していることがわかる。
図5は、データベースの例として、XMLデータベースとしてのデータベース510におけるXMLデータの物理的な記憶状態をイメージ化した図である。データベース510には、図4に示したXMLデータXD1〜XD3が記憶されているものとする。XMLデータは、DOM(Document Object Model)に似た形式でオブジェクトとリンクとで表現される。DOMはXMLデータをオブジェクト指向で表現するモデルであり、XMLデータを構成する部分が、その対応付けられたオブジェクトとして表現される。例えば、要素には要素クラス、属性には属性クラスが事前に定義されており、それらのインスタンスを作成して表現される。また、DOMにおいて、オブジェクトは木構造(ツリー)として扱われている。同様に図4においても、<root>オブジェクトの直下には3つの<paper>オブジェクトが存在し、<root>オブジェクトから親子関係を示すリンクでつながれている。オブジェクトの最下層には、テキストデータを示すテキストオブジェクトが存在している。
各オブジェクトには「e0」から「e24」までのオブジェクトIDが割り当てられているものとする。オブジェクトIDは、データベース510においてオブジェクトを一意に識別可能なIDである。このようなオブジェクトIDとしては、ファイル内の相対位置を示すファイルオフセットなどを使った物理IDを用いても良い。また、論理IDを用いて、内部で物理IDと論理IDとをテーブルで管理しても良い。
次に、上述したハードウェア構成において、データベースサーバ51が、記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。データベースサーバ51は、図1に示されるように、要求受信部511と、要求処理部512と、結果データ管理部513と、ID範囲決定部514と、結果送信部515とを有する。これら各部の実体は、CPUが各種プログラムを実行することにより例えば記憶装置(例えばRAM)上に生成される。
要求受信部511は、クライアント50から送信された処理要求を受信する。要求処理部512は、要求受信部511が受信した処理要求が、XMLデータの取得を要求するデータ取得要求か又はGIDを含み、XMLデータを構成する要素のデータの取得を要求する実データ取得要求かを判断する。GIDは、データベースサーバ51を識別するデータベース識別情報と、上述したオブジェクトIDとを含む。処理要求が通常データ取得要求である場合、要求処理部512は、当該通常データ取得要求に応じたXMLデータをデータベース510から取得し、取得したXMLデータの集合に対して併合や結合などの加工を適宜行って、XML形式で表現される第1結果データを生成する。一方、処理要求が実データ取得要求である場合、要求処理部512は、GIDに対応する要素のデータをデータベース510から取得し、当該要素のデータを(識別子)含む第3結果データを生成してこれを結果データ管理部513に記憶させる。
ID範囲決定部514は、結果データ管理部513が記憶している第1結果データに含まれる各要素について、第1結果データ内における要素間の関連及び各要素の位置付けを求め、各要素をGIDに置換するか否かを判断する。具体的には、ID範囲決定部514は、結果データ管理部513が記憶している第1結果データを要素毎に分解し、第1結果データ内における要素間の関連及び各要素の位置付けを求める。そして、ID範囲決定部514は、要素間の関連及び各要素の位置付けを用いて、後述の所定の規則に基づいて各要素について、送信の優先度合を示す優先度を算出する。要素間の関連とは親子間の関連を意味し、位置づけとは兄弟間の関係からなる要素の位置を意味する。そして、ID範囲決定部514は、当該優先度と予め定められた閾値とを用いて、各要素をGIDに置換するか否かを判断する。即ち、ここで、ID範囲決定部514は、各要素について送信の優先度合が高いか否か、即ち、すぐに送信すべきか又は実データ取得要求時に送信すべきかを判断する。これにより、ID範囲決定部514は、XMLデータにおいてグローバルID(GID)に置換する要素の範囲(ID化の範囲)を決定する。尚、閾値は例えば記憶装置や部記憶装置に予め記憶されているものとする。データベース識別情報には、データベースサーバ51に対して予め付与された識別番号などやIPアドレスなどを用いれば良い。尚、データベースシステムにおいて、データベースサーバが複数存在しない場合には、GIDは、データベース識別情報を含まなくても良い。そして、ID範囲決定部514は、XMLデータを構成する要素のうち、実データ取得要求時に送信すべきと判断した要素をGIDに置換し、当該GIDと、当該XMLデータを構成する他の要素とを含む第2結果データを生成してこれを結果データ管理部513に記憶させる。
結果データ管理部513は、記憶領域として記憶し、第1結果データ乃至第3結果データを一時的に記憶する。結果送信部515は、結果データ管理部513に記憶された第2結果データ又は第3結果データを処理結果としてクライアント50に送信する。
(1)動作
次に、データベースサーバ51が行うデータ転送処理の手順について図6を用いて説明する。データベースサーバ51の要求受信部511は、クライアント50から送信された処理要求を受信する(ステップS1)。要求処理部512は、ステップS1で受信された処理要求を解析して、データ取得要求であるか又は実データ取得要求であるかを判断する(ステップS2)。例えば、データ取得要求には、取得対象のXMLデータを検索するための検索条件や、取得対象のXMLデータを指定する情報が含まれている。実データ取得要求には、取得対象の要素を指定するための上述のGIDが含まれている。そして、要求処理部512は、このような構成の処理要求について、ステップS2の判断を行い、処理要求がデータ取得要求であると判断した場合(ステップS2:NO)、データ取得要求に応じたXMLデータをデータベース510から取得する(ステップS3)。そして、要求処理部512は、ステップS3で取得したXMLデータの集合に対して加工を適宜行って、XML形式で表現される第1結果データを生成してこれを結果データ管理部513に記憶させる(ステップS4)。
図7は、結果データ管理部513に記憶される第1結果データを例示する図である。図4に示した2つのXMLデータXD1〜XD2に各々基づいて生成された2つの第1結果データKD1〜KD2が、結果データ管理部513の記憶領域上にあり、各記憶領域へのポインタ配列で管理されている。
次いで、ID範囲決定部514は、結果データ管理部513が記憶している第1結果データを要素毎に分解し、第1結果データ内における要素間の関連及び各要素の位置付けを求め、所定の規則に基づいて各要素の優先度を算出する(ステップS5)。
具体的には、ID範囲決定部514は、第1結果データを構成する各要素に対して、例えば以下の2つの尺度に基づいた重要度付けを用いた規則により、各要素の優先度を算出する。
・構造の重要度(pw:パスウェイト)
・サイズに基づく送信コスト(size)
優先度には、「pw」と「size」の逆数を掛け合わせた値を用いる。ここでは、優先度の値が大きいものほど、すぐに送信すべき優先度が高いものとする。
例えば図5に示したXMLデータXD1〜XD3において<paper>以下の各要素e2〜e8に対する優先度は以下のように算出される。図8は、図5に示したXMLデータXD1〜XD3において各要素と共に各要素に対する算出結果を一部例示する図である。
(a)要素e2について
・pw:titleは兄弟で1個しかないので「1」である。
・size:「4」と仮定する。
この結果、要素e2の優先度は、「1/4×1=1/4」と算出される。
(b)要素e3について
・pw:兄弟は1個しかない。上位pwと掛け合わせて「1×1=1」
・size:テキスト長が「10」であるので、「10」とする。
この結果、要素e3の優先度は、「1/10×1=1/10」と算出される。
(c)要素e4について
・pw:兄弟は1個しかない。上位pwと掛け合わせて「1×1=1」
・size:「4」と仮定する。
この結果、要素e4の優先度は、「1/4×1=1/4」と算出される。
(d)要素e5について
・pw:兄弟は2個ある。上位pwと掛け合わせて「1×1/2=1/2」
・size:「4」と仮定する。
この結果、要素e5の優先度は、「1/4×1/2=1/8」と算出される。
(e)要素e6について
・pw:兄弟は1個ある。上位pwと掛け合わせて「1/2×1=1/2」
・size:テキスト長が「20」であるので、「20」とする。
この結果、要素e6の優先度は、「1/2×1/20=1/40」と算出される。
(f)要素e7について
・pw:兄弟は2個ある。上位pwと掛け合わせて「1×1/2=1/2」
・size:テキスト長が「4」であるので、「4」とする。
この結果、要素e7の優先度は、「1/2×1/4=1/8」と算出される。
(g)要素e8について
・pw:兄弟は1個ある。上位pwと掛け合わせて「1/2×1=1/2」
・size:テキスト長が「25」であるので、「25」とする。
この結果、要素e8の優先度は、「1/2×1/25=1/50」と算出される。
尚、要素e2,e4,e5でsizeを「4」と仮定したのは、下位要素よりも上位要素の優先度が高くなる不都合を回避するためである。このようにテキスト長が「4」未満の場合、ID範囲決定部514は、これを「4」に繰り上げて優先度を算出する。
このようにして各要素の優先度を算出した後、ID範囲決定部514は、各要素の優先度と、予め定められた閾値とを用いて、各要素をGIDに置換するか否かを判断する。即ち、ID範囲決定部514は、すぐに送信すべきか又は実データ取得要求時に送信すべきかを判断する(ステップS6)。各要素の優先度と、予め定められた閾値とを用いて、ここでは、閾値は、例えば、「1/10」であるとする。具体的には、ID範囲決定部514は、優先度が閾値以上である要素を、GIDに置換するのではなくすぐに送信すべき要素であると判断する。上述の例では、要素e1〜e8のうち、要素e1,e2,e3,e4,e5,e7が、すぐに送信すべき要素であると判断される。残りの要素e6,e8が、実データ取得要求時に送信すべき要素であると判断され、GIDに置換すると判断される。
そして、ID範囲決定部514は、第1結果データ(XMLデータ)を構成する要素のうち、実データ取得要求時に送信すべきと判断した要素について、当該要素のオブジェクトIDと、当該データベースサーバ51を識別するデータベースサーバ識別情報とを含むGIDに置換し、当該GIDと、当該第1結果データを構成する他の要素とを含む第2結果データを生成してこれを結果データ管理部513に記憶させる(ステップS7)。次いで、結果送信部515は、当該第2結果データを処理結果としてクライアント50に送信する(ステップS8)。
図9は、結果データ管理部513に記憶される第2結果データを例示する図である。図4に示した2つのXMLデータXD1〜XD2に各々基づいた2つの第2結果データKD11〜KD12が、結果データ管理部513の記憶領域上にあり、各記憶領域へのポインタ配列で管理されている。同図における第2結果データは、図7に示した第1結果データと比較すると、一部の要素がGIDに置換されている。具体的には、図4に示したXMLデータXD1に含まれる要素e6がGID<#ds0, e6#/>に置換されており、要素e8がGID<#ds0, e8#/>に置換されていることが示されている。また、XMLデータXD2に含まれる要素e16がGID<#ds0, e16#/>に置換されていることが示されている。ここでは、「#ds0」がデータ識別情報を示しており、「e6#」,「e8#」,「e16#」が各々オブジェクトIDを示している。
従来であれば、クライアント50に送信するデータは、図7に示されるような第1結果データであり、これが全てクライアント50に送信されるか、フェッチなどのコマンドもしくはAPIを用いて逐次送信されていた。一方、本実施の形態においては、クライアント50に送信する対象のデータは、図9に示されるような第2結果データである。これにより、クライアント50に送信するデータの転送量を第1結果データに比べてかなり小さくすることができる。
図6に戻り、ステップS2で、処理要求が実データ取得要求である場合(ステップS2:YES)、要求処理部512は、当該実データ取得要求に含まれるGIDを解析して、当該GIDに含まれるオブジェクトIDに対応する要素のデータをデータベース510から取得し、当該要素のデータを含む第3結果データを生成してこれを結果データ管理部513に記憶させる(ステップS9)。次いで、結果送信部515は、当該第3結果データを処理結果としてクライアント50に送信する(ステップS10)。
一方、クライアント50は、ステップS8でデータベースサーバ51から送信された第2結果データを受信して、アプリケーションの必要に応じて、当該第2結果データに含まれるGIDを検出して、検出したGIDを含む実データ取得要求をデータベースサーバ51に送信する。この結果、当該GIDに対応する要素のデータを含む第3結果データが上述のステップS10でデータベースサーバ51から送信されて、クライアント50は、GIDに対応する要素のデータを取得することができる。図10は、クライアント50が取得する第2結果データ及び第3結果データを例示する図である。同図において、第2結果データKD11に対して、GID<#ds0, e6#/>,<#ds0, e8#/>が抽出され、当該各GIDに対応する各要素のデータを含む第3結果データK21が取得される。そして、第2結果データKD11におけるGIDを、第3結果データK21に含まれる要素のデータに置換することにより、クライアント50は、データCD1を取得することができる。
尚、クライアント50のアプリケーションでは、図10に示される<title>要素だけが必要であれば、<body>要素以下でGIDに置換された要素があっても、<body>要素そのものをスキップするので、<body>要素以下のGIDを検出する必要もなく、当該GIDに対応する要素のデータを取得する必要もない。このため、無駄なデータの取得を低減することができる。
以上のようにして、データを構成する各要素の優先度に基づいて、優先度が低いと判断した要素についてはGIDに置換して処理結果をクライアント50に送信する。これにより、必要なデータを転送しつつ、無駄なデータの転送を低減することができる。
なぜなら、データサイズが大きくなると、クライアント50側のアプリケーションでは、実際には、データの一部の要素だけを使って、後の要素は不要というケースが多いからである。例えば、全文検索的な使われ方を想定する。先の<paper>要素の場合、<title>要素の一覧だけが必要で<body>要素は不要であるケースなどが良くある。しかし、XMLデータのように非定型なデータでは、実際にデータベースにアクセスしないと、その構造がわからないので、クライアント50側のアプリケーションで要素の要不要を事前に判断するのは困難である。そこで、本実施の形態のように、実際のデータにアクセスするデータベースサーバ51側で要素の要不要を予め判断することで、無駄なデータの転送を近似的に低減することができるのである。
[第2の実施の形態]
次に、データベースシステムの第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
(1)構成
図11は、本実施の形態にかかるデータベースシステムの構成を示すブロック図である。本実施の形態にかかるデータベースシステムは、分散データベースシステムである。分散データベースシステムは、クライアント50と、分散データベース60とを有し、これらがネットワーク52を介して接続されて構成される。分散データベース60は1台のコーディネータサーバ61と複数台のデータベースサーバ70A〜70Cとを有する。
クライアント50は、処理要求を、ネットワーク52を介してコーディネータサーバ61に送信し、その処理結果をコーディネータサーバ61から受信する。
コーディネータサーバ61は、クライアント50と複数のデータベースサーバ70A〜70Cと接続される。コーディネータサーバ61は、条件に該当するXMLデータの検索を要求する検索要求(クエリ)や、カーソルフェッチなどによるデータ取得要求や指定のXMLデータの取得を要求するデータ取得要求や、上述したGIDに対応する要素のデータの取得を要求する実データ取得要求などの処理要求をクライアント50から受信し、当該処理結果に応じた処理を行い、その処理結果をクライアント50に送信する。また、コーディネータサーバ61は、クライアント50から受信した処理要求に応じた処理を行う際に、データベースサーバ70A〜70Cに対して処理要求を行い、その処理結果をデータベースサーバ70A〜70Cから受信し、当該処理結果に対して加工を適宜施して、処理結果の結果データを生成してクライアント50に送信する。
データベースサーバ70Aは、上述のデータベース510と同様のXMLデータを記憶するデータベース700Aを有し、コーディネータサーバ61からの処理要求に応じたXMLデータをデータベース700Aから取得し、当該データを加工して結果データを生成し、これを処理結果としてコーディネータサーバ61に送信する。データベースサーバ70Bは、XMLデータを記憶するデータベース700Bを有し、データベースサーバ70Aと同様の機能を実現させる。データベースサーバ70Cは、XMLデータを記憶するデータベース700Cを有し、データベースサーバ70Aと同様の機能を実現させる。
尚、例えば、図4に示したXMLデータXD1は、データベース700Aに記憶されており、XMLデータXD2は、データベース700Bに記憶されており、XMLデータXD3は、データベース700Cに記憶されているものとする。このようなXMLデータXD1〜XD3が記憶されている分散データベース60におけるXMLデータの物理的な記憶状態は図5に示したものと同様である。尚、以降、データベースサーバ70A〜70Cを各々区別しない場合には、単にデータベースサーバ70と記載し、データベース700A〜700Cを各々区別しない場合には、単にデータベース700と記載する。
尚、一般的に、分散データベースでは、データベース全体を複数のデータベースサーバに重複無しにデータ単位で分割することが多い。これをデータベースの水平分割と呼ぶ。本実施の構成においても、データベース700A〜700Cには各々、重複しないXMLデータが記憶されているものとする。また、データベース700A〜700Cには、上述したデータベース識別情報が各々割り当てられているものとする。このような構成において、コーディネータサーバ61は、クライアント50からの処理要求を満足する処理結果を得るためには、データベースサーバ70に適切な処理要求を行うとともに、データベースサーバ70から処理結果として得られるデータを適切に処理する必要がある。
次に、コーディネータサーバ61の構成について詳細に説明する。尚、コーディネータサーバ61は、第1の実施の形態で説明した通常のコンピュータを利用したハードウェア構成となっている。このようなハードウェア構成において、コーディネータサーバ61の有するCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図12はコーディネータサーバ61及びデータベースサーバ70の機能的構成を例示する図である。コーディネータサーバ61は、要求受信部610と、要求処理部611と、結果データ管理部612と、結果受信部613と、結果送信部614とを有する。これら各部の実体は、CPUが各種プログラムを実行することにより例えば記憶装置(例えばRAM)上に生成される。
要求受信部610は、クライアント50から送信された処理要求を受信する。要求処理部611は、要求受信部610が受信した処理要求が、クエリ(XQuery)か、指定のXMLデータの取得を要求するデータ取得要求などの処理要求か又はGIDに対応する要素のデータの取得を要求する実データ取得要求かを判断する。処理要求がクエリである場合、要求処理部611は、クエリからコードを生成する。クエリからコードを生成する方法については、例えば、特開平06-195382号公報に示されている。そして、要求処理部611は、生成したコードをデータベースサーバ70に送信し、そのコードの実行結果に基づいて処理結果として生成された第10結果データをデータベースサーバ70から結果受信部613を介して受信し、これを結果データ管理部612に記憶させる。この第10結果データは、データベースサーバ70A〜70Cの各データベース識別情報を含み、XMLデータ自体を含まない。そして、要求処理部611は、第10結果データの件数(読出結果)を集計してその件数結果を示す第11結果データを生成して、結果データ管理部612に記憶させる。
また、処理要求がデータ取得要求である場合、要求処理部611は、結果データ管理部612に記憶された第10結果データに含まれるデータベース識別情報を参照して、該当のXMLデータを記憶しているデータベースサーバ70(データベースサーバ70A〜70Bの少なくとも1つ)に対して、該当のXMLデータの取得を要求するデータ取得要求を送信する。そして、要求処理部611は、当該データ取得要求に応じて取得されたXMLデータを含む第12結果データをデータベースサーバ70から結果受信部613を介して受信して、これを結果データ管理部612に記憶させる。
また、処理要求が、GIDに対応する要素のデータの取得を要求する実データ取得要求である場合、要求処理部611は、当該GID含まれるデータベース指定情報によって指定されるデータベースサーバ70に対して、当該GIDに含まれるオブジェクトIDに対応する要素のデータの取得を要求する実データ取得要求を送信する。そして、要求処理部611は、当該実データ取得要求に応じた要素のデータを含む第13結果データをデータベースサーバ70から結果受信部613を介して受信し、これを結果データ管理部612に記憶させる。
結果データ管理部612は、記憶領域として記憶し、上述の第10結果データ乃至第13結果データを一時的に記憶する。結果受信部613は、データベースサーバ70から送信されるデータを受信する。結果送信部614は、結果データ管理部612に記憶された上述の第11結果データ、第12結果データ又は第13結果データを処理結果としてクライアント50に送信する。
ここで、クライアント50から送信されるクエリXQueryについて説明する。XQueryは、XMLデータを記憶するデータベースへの問い合わせのための関数型言語であり、FLWR(for-let-where-return)構文が特徴になっている。RDBでの問い合わせ言語はSQLであるが、SQLは宣言的な言語であるのに対して、XQueryは関数型言語としての特徴を多く持つ。以下に、XQueryの言語仕様を手続き的な観点で説明する。
for節の構文は、「for 変数 in 式」である。for節の構文は、式を満足するものを変数に代入してループするという意味を持つ。let節の構文は、「let 変数 := 式」である。let節の構文は、式を満足するものを集約してシーケンスとして変数に代入するという意味を持つ。シーケンスとは、フラットなリストである。where節は、Fで繰り返されるループを制限するものである。where節の構文は、「where 式」である。where節の構文は、式を満足するものだけループをまわし、そうでないものはループをスキップするという意味を持つ。return節は、XQueryを処理した結果をフォーマット化するものである。return節の構文は、「return 式」である。return節の構文は、変数を含む任意のXMLデータを記述することができる。変数の構文は、「$文字列」である。入れ子問い合わせなどで2重宣言された場合を除き、同じ文字列を持つ変数は同一のものと見なされる。XMLデータの要素間の階層条件を指定するパス演算子として、XQueryでは以下のようなものがある。
“/”:要素間は親子関係であることを示すオペレータ
“//”:要素間は先祖子孫関係であることを示すオペレータ
“.”:任意の要素
図13は、条件に該当するXMLデータの取得を要求するクエリの例として、XQueryのデータ構成を例示する図である。同図に示されるXQueryは、「子孫のあるテキストが”XML”を含むデータベース内のpaperというデータを返す」ことを要求している。
図14は、図13に示したXQueryから要求処理部611が生成するコードの一例を示す図である。コードとは、XQueryを処理するための手順である。直積や自然結合やリンク更新などの基本機能を持った命令をオペレータと呼ぶ。オペレータは、内部データを更新する。オペレータ間の入出力は、内部テーブルのポインタや内部テーブルIDなどを使って行われる。コードは、オペレータの系列であり、通常、オペレータをノードとする逆木構造をなす。
この例では、
・scanPath:<paper>要素のオブジェクトID集合を取り出す
・scanData:<paper>要素以下のテキスト要素を取り出す
・testContains:“XML”だけを含むテキスト要素を残す
・sendXML:残ったテキスト要素についてXML形式で表現される文字列を返す
というオペレータ及びオペランドの系列から構成されている。
このようなコードが、上述したように例えば図4に示したXMLデータXD1〜XD3のいずれかを記憶するデータベースサーバ70A〜70Cにより実行されると、testContains実行後に、図5に示した要素「e1」,「e9」が残り、sendXML実行後にその要素についてXML形式で表現される文字列が生成される。例えば、図4のXMLデータXD1〜XD2に対応する文字列が生成される。
次に、データベースサーバ70の機能的構成について詳細に説明する。データベースサーバ70は、上述の第1の実施の形態と同様に、要求受信部711と、要求処理部712と、結果データ管理部713と、ID範囲決定部714と、結果送信部715とを有する。これらが上述の第1の実施の形態における要求受信部511、要求処理部512、結果データ管理部513、ID範囲決定部514及び結果送信部515と各々異なる点は以下の点である。
要求受信部711は、クライアント50からの処理要求を直接受信するのではなく、クライアント50からの処理要求に応じてコーディネータサーバ61が送信した処理要求を受信する。要求処理部712は、要求受信部711が受信した処理要求に応じて、データベース700にアクセスして、該当のデータを読み出し、当該データに対して適宜加工を施して、その処理結果を結果データ管理部713に一時的に記憶する。具体的には、要求処理部712は、要求受信部711が受信した処理要求が上述したコードである場合、当該コードを実行して、その結果得られるXMLデータ(第20結果データ)を結果データ管理部713に一時的に記憶して、当該XMLデータの件数と同数のデータベース識別情報を含む第10結果データを生成し、これを結果データ管理部713に一時的に記憶する。この第10結果データは、コーディネータサーバ61が該当のXMLデータの件数を集計するために生成される。尚、例えば、各データベース700A〜700Cに記憶される各XMLデータは、各データベース内において一意に識別可能であるものとする。また、処理要求がデータ取得要求である場合、要求処理部712は、結果データ管理部713に記憶された第20結果データのうち、取得対象のXMLデータを抽出する。また、処理要求が、GIDに対応する要素のデータの取得を要求する実データ取得要求である場合、要求処理部712は、当該GIDに含まれるオブジェクトIDに対応する要素のデータをデータベースサーバ700から読み出しこれを含む第13結果データを結果データ管理部713に一時的に記憶する。
ID範囲決定部714は、要求処理部712が抽出したXMLデータに含まれる各要素について、上述の第1の実施の形態と同様にして、当該XMLデータ内における要素間の関連及び各要素の位置付けを求め、各要素をGIDに置換するか否かを判断する。そして、ID範囲決定部714は、XMLデータを構成する要素のうち、実データ取得要求時に送信すべきでありGIDに置換すると判断した要素をGIDに置換し、当該GIDと、当該XMLデータを構成する他の要素とを含む第12結果データを生成してこれを結果データ管理部713に記憶させる。
結果送信部515は、結果データ管理部612に記憶された第10結果データ乃至第13結果データをクライアント50にではなくコーディネータサーバ61に適宜送信する。
(2)動作
次に、分散データベース60が行うデータ転送処理の手順について図15〜16を用いて説明する。図15は、データ転送処理のうち、コーディネータサーバ61が行う処理の手順を示すフローチャートである。コーディネータサーバ61の要求受信部610は、クライアント50から送信された処理要求を受信する(ステップS20)。要求処理部611は、ステップS20で受信された処理要求が検索要求(クエリ)かデータ取得要求かを判断する(ステップS21)。処理要求がクエリである場合(ステップS21:YES)、要求処理部611は、当該クエリから、条件に該当するXMLデータを各データベースサーバ70A〜70Cに検索させるためのコードを生成し(ステップS22)、これらを各々データベースサーバ70A〜70Cに送信する(ステップS23)。
そして、各データベースサーバ70が当該コードを実行してその実行の結果として、該当するXMLデータの件数と同数のデータ識別情報を含む第10結果データを各々送信すると、コーディネータサーバ61の結果受信部613はこれを受信する。次いで、要求処理部611が、第10結果データを結果データ管理部612に記憶させる(ステップS24)。そして、要求処理部611が、各第10結果データの件数を集計してその件数結果を示す第11結果データを生成して、結果データ管理部612に記憶させる(ステップS25)。その後、結果送信部614が、第11結果データを処理結果としてクライアント50に送信する(ステップS26)。
クライアント50は、このような件数を示す第11結果データを取得後、カーソルフェッチなどによりデータ取得要求をコーディネータサーバ61に送信する場合がある。この場合、ステップS20で受信された処理要求がデータ取得要求となり(ステップS27:NO)、コーディネータサーバ61は、ステップS28以降の処理を行う。
ステップS28では、要求処理部611は、結果データ管理部612に記憶された第10結果データに含まれるデータベース識別情報を参照して、該当のXMLデータを記憶しているデータベースサーバ70(データベースサーバ70A〜70Cの少なくとも1つ)を割り出し、次いで、当該データベースサーバ70に対して、該当のXMLデータの取得を要求するデータ取得要求を送信する(ステップS29)。
そして、当該データベースサーバ70が当該データ取得要求に応じて取得したXMLデータを含む第12結果データを送信すると、コーディネータサーバ61の結果受信部613はこれを受信する。次いで、要求処理部611が、この第12結果データを結果データ管理部612に記憶させる(ステップS30)。その後、結果送信部614が、第12結果データを処理結果としてクライアント50に送信する(ステップS31)。
例えば、図4に示したXMLデータKD1〜KD2に対して各々データベースサーバ70がデータ取得要求に応じて取得したXMLデータを含む第12結果データは、図9に示した第2結果データKD11〜KD12と同様のものとなる。従って、クライアント50は、このように、一部の要素がGIDに置換されたXMLデータを取得することになる。クライアント50は、このようなXMLデータを取得後、GIDに置換された要素のうち、アプリケーションの必要に応じて、あるGIDに対応する要素のデータの取得を要求する実データ取得要求をコーディネータサーバ61に送信する場合がある。この場合、ステップS20で受信された処理要求がGIDに対応する要素のデータの取得を要求する実データ取得要求となり(ステップS27:YES)、コーディネータサーバ61は、ステップS32以降の処理を行うことになる。
ステップS32では、要求処理部611は、当該GID含まれるデータベース指定情報によって指定されるデータベースサーバ70に対して、当該GIDに含まれるオブジェクトIDに対応する要素のデータの取得を要求する実データ取得要求を送信する。
そして、当該データベースサーバ70が当該実データ取得要求に応じた要素のデータをを含む第13結果データを送信すると、コーディネータサーバ61の結果受信部613はこれを受信する。次いで、要求処理部611が、この第13結果データを結果データ管理部612に記憶させる(ステップS33)。その後、結果送信部614が、第13結果データを処理結果としてクライアント50に送信する(ステップS34)。
この場合、例えば、上述の第1の実施の形態と同様に、図10に示されるように、第12結果データ(第2結果データ)KD11に対して、GID<#ds0, e6#/>,<#ds0, e8#/>が抽出され、当該各GIDに対応する各要素のデータを含む第13結果データ(第3結果データ)K21が取得される。そして、第12結果データKD11におけるGIDが、第13結果データK21に含まれる要素に置換されることにより、クライアント50は、データCD1を取得することができる。
次に、分散データベース60が行うデータ転送処理のうち、データベースサーバ70が行う処理の手順について図16を用いて説明する。データベースサーバ70の要求受信部610は、クライアント50から送信された処理要求を受信する(ステップS40)。要求処理部611は、ステップS40で受信された処理要求がコードかデータ取得要求かを判断する(ステップS41)。当該処理要求がコードである場合(ステップS41:YES)、要求処理部712は、当該コードを実行して、その結果得られるXMLデータ(第20結果データ)を結果データ管理部713に一時的に記憶し、当該XMLデータの件数を同数のデータベース識別情報を含む第10結果データを結果送信部515を介して送信する(ステップS42)。
また、ステップS40で受信された処理要求がデータ取得要求である場合(ステップS41:NO)、要求処理部712は、更に、当該データ取得要求が、GIDに対応する要素のデータの取得を要求する実データ取得要求であるか否かを判断する(ステップS43)。当該判断結果が否定的である場合、要求処理部712は、結果データ管理部713に記憶された第20結果データのうち、取得対象のXMLデータを抽出する(ステップS44)。ID範囲決定部714は、ステップS44で抽出されたXMLデータについて、上述の第1の実施の形態と同様にして要素毎に分解し、XMLデータ内における要素間の関連及び各要素の位置付けを求める。そして、ID範囲決定部714は、所定の規則に基づいて各要素の優先度を算出して(ステップS45)、当該優先度と予め定められた閾値とを用いて、各要素についてGIDに置換するか否かを判断する。即ち、ID範囲決定部714は、すぐに送信すべきか又は実データ取得要求時に送信すべきかを判断する(ステップS46)。そして、ID範囲決定部714は、XMLデータを構成する要素のうち、実データ取得要求時に送信すべきと判断した要素をGIDに置換し、当該GIDと、当該XMLデータを構成する他の要素とを含む第12結果データを生成してこれを結果データ管理部713に記憶させる(ステップS47)。そして、結果送信部515が、当該第12結果データをコーディネータサーバ61に送信する(ステップS48)。
また、ステップS40で受信された処理要求が、GIDに対応する要素のデータの取得を要求する実データ取得要求である場合(ステップS43:YES)、要求処理部712は、当該GIDに含まれるオブジェクトIDに対応する要素のデータをデータベースサーバ700から読み出しこれを含む第13結果データを結果データ管理部713に一時的に記憶する(ステップS49)。そして、結果送信部515が、当該第13結果データをコーディネータサーバ61に送信する(ステップS50)。
以上のような構成によれば、データが複数のデータベースに分散された分散データベースにおいて、必要なデータを転送しつつ、無駄なデータの転送を低減することができる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した各実施の形態において、コーディネータサーバ61で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。データベースサーバ70で実行される各種プログラムについても同様である。
<変形例2>
上述の各実施の形態においては、ID範囲決定部は、閾値を用いてID化の範囲を決定したが、これに限らない。例えば、ID範囲決定部は、処理結果として送信可能な結果データの転送サイズの総量を指定して、優先度が高いものから順に要素を結果データに含められるだけ含めて、含められない要素をGIDに変換するようにしても良い。
また、階層構造における要素の深さ、要素のサイズ及び同一種類の要素、即ち、タグ名が同一である要素が繰り返し表れる数のうち少なくとも1つ又は少なくとも2つの組み合わせを用いて、ID化の範囲を決定するようにしても良い。
また、ID範囲決定部は、優先度の算出に関するヒント情報をクライアント50から取得し、これに基づいて各要素に対して優先度付けを行うようにしても良い。
また、ID範囲決定部は、GIDでの実データ取得履歴を残しておき、それを参照することで、取得確率の高い要素については要素の優先度を高くするなどで動的に値を変化させても構わない。
<変形例3>
上述の各実施の形態においては、GIDを特殊タグにより表現したが、これに限らず、例えば、PI(Processing Instructions)を用いて表現しても良い。PIとは、XMLデータの中に、あるアプリケーションへの命令を埋め込むために提供されているものである。SAXなどのイベントハンドラベースのXMLパーサであれば、PIのイベントハンドラで定義しておくことで、クライアント50のアプリケーション側でGIDを検出することができる。
<変形例4>
上述の第2の実施の形態においては、データベースサーバ70の有するID範囲決定部714と同様に、要素の優先度を算出して、要素の優先度に基づいて、要素のGID化を判断する機能を、コーディネータサーバ61が有するように構成しても良い。図17は、コーディネータサーバ61がID範囲決定部615を有する構成を例示する図である。このような構成によれば、データベースサーバ70のみならず、コーディネータサーバ61でもID化の範囲を決定することで、クライアント50の応答性をより改善することができる。
また、データベースサーバ70がID範囲決定部714を有さない構成であっても良く、この場合、コーディネータサーバ61のID範囲決定部615が、クライアント50の取得対象のXMLデータについて、ID化の範囲を決定して当該決定結果に基づいて要素をGIDに適宜置換したデータを生成してこれをクライアント50に送信するようにしても良い。
第1の実施の形態にかかるデータベースシステムの構成を例示する図である。 タプルを例示する図である。 図2に示されるタプルから等価変換されるXMLデータを例示する図である。 データベース510に記憶されるXMLデータを3つ例示する図である。 データベース510におけるXMLデータの物理的な記憶状態をイメージ化した図である。 データベースサーバ51が行うデータ転送処理の手順を示すフローチャートである。 結果データ管理部513に記憶される第1結果データを例示する図である。 図5に示したXMLデータXD1〜XD3において各要素と共に各要素に対する算出結果を一部例示する図である。 結果データ管理部513に記憶される第2結果データを例示する図である。 クライアント50が取得する第2結果データ及び第3結果データを例示する図である。 第2の実施の形態にかかるデータベースシステムの構成を示すブロック図である。 コーディネータサーバ61及びデータベースサーバ70の機能的構成を例示する図である。 XQueryのデータ構成を例示する図である。 図13に示したXQueryから要求処理部611が生成するコードの一例を示す図である。 データ転送処理のうち、コーディネータサーバ61が行う処理の手順を示すフローチャートである。 データ転送処理のうち、データベースサーバ70が行う処理の手順を示すフローチャートである。 コーディネータサーバ61がID範囲決定部615を有する構成を例示する図である。
符号の説明
50 クライアント
51 データベースサーバ
52 ネットワーク
60 分散データベース
61 コーディネータサーバ
70,70A,70B,70C データベースサーバ
510 データベース
511 要求受信部
512 要求処理部
513 結果データ管理部
514 ID範囲決定部
515 結果送信部
610 要求受信部
611 要求処理部
612 結果データ管理部
613 結果受信部
614 結果送信部
615 範囲決定部
700,700A、700B,700C データベース
711 要求受信部
712 要求処理部
713 結果データ管理部
714 ID範囲決定部
715 結果送信部

Claims (15)

  1. 複数の要素を含むデータの取得を要求する第1処理要求をクライアントから受信する受信手段と、
    前記第1処理要求に応じて、データベースから該当の第1データと当該第1データ内における要素間の関連及び各要素の位置付けを示すデータ構造情報とを取得する取得手段と、
    前記第1データに含まれる各要素に対して、前記データ構造情報を用いて、各要素を識別子にするか否かを判断する判断手段と、
    前記第1データに含まれる要素のうち、前記判断手段によって前記識別子にすると判断された第1要素を第1識別子にすることにより、当該第1識別子と、前記第1データに含まれる要素のうち前記第1要素以外の要素とを含む第2データを生成するデータ生成手段と、
    前記第2データを前記クライアントに送信する結果送信手段とを備える
    ことを特徴とするサーバ。
  2. 前記識別子はデータベース識別情報及びオブジェクトIDであることを特徴とする請求項1記載のサーバ。
  3. 前記判断手段は、
    前記第1データに含まれる各要素に対して、前記データ構造情報を用いて、送信の優先度合を示す優先度を算出する算出手段と、
    前記優先度と、予め定められた閾値とを用いて、各前記要素を識別子にするか否かを判断する優先判断手段とを有する
    ことを特徴とする請求項1又は2に記載のサーバ。
  4. 前記受信手段は、前記処理要求を、前記クライアントと接続される他のサーバを介して前記クライアントから受信し、
    前記結果送信手段は、前記第2データを前記他のサーバを介して前記クライアントに送信する
    ことを特徴とする請求項1乃至3に記載のサーバ。
  5. 前記受信手段は、データの検索を要求する第2処理要求に基づいて当該サーバが実行可能な形式に変換された処理コードを前記他のサーバを介して前記クライアントから受信し、
    前記取得手段は、
    前記処理コードを実行することにより、前記データベースから前記第1データ及び前記データ構造情報を読み出す読出手段と、
    前記第1データを読み出した読出結果を示す結果データを生成する第1生成手段と、
    前記結果データを前記他のサーバに送信する第1送信手段とを有する
    ことを特徴とする請求項4に記載のサーバ。
  6. 前記判断手段は、前記受信手段が前記処理コードを受信した後、前記第1データ及び前記データ構造情報の取得を要求する第3処理要求を前記他のサーバを介して前記クライアントから受信した場合、前記読出手段によって読み出された前記第1データに含まれる各要素に対して、前記データ構造情報を用いて、各要素を識別子にするか否かを判断する
    ことを特徴とする請求項5に記載のサーバ。
  7. 前記第1識別子にされた前記第1要素の取得を要求する第4処理要求を前記受信手段が受信した場合、前記第1データに含まれている要素であって前記第1識別子にされる前の前記第1要素を含む第3データを生成する第2生成手段と、
    前記第3データを、前記他のサーバを介して前記クライアントに送信する第2送信手段とを更に備える
    ことを特徴とする請求項6に記載のサーバ。
  8. 前記データ生成手段は、前記第1要素を、前記サーバを特定するサーバ特定情報と、前記第1データにおける前記第1要素を特定する要素特定情報とを含む第1識別子にした第2データを生成する
    ことを特徴とする請求項7に記載のサーバ。
  9. 前記第2生成手段は、前記第1識別子に含まれる前記サーバ特定情報によって前記他のサーバから特定されたサーバである場合、前記第1識別子に含まれる要素特定情報によって特定される前記第1要素の取得を要求する第4処理要求を前記受信手段が受信した場合、前記第1識別子に含まれる要素特定情報によって特定される前記第1要素を含む第3データを生成する
    ことを特徴とする請求項8に記載のサーバ。
  10. 前記データベースは、複数に分散されており、そのうちの少なくとも1つの第1データベースを備え、
    前記取得手段は、受信された前記第1処理要求に応じて、前記第1データベースから該当の第1データ及び前記データ構造情報を取得する
    ことを特徴とする請求項1乃至9のいずれか一項に記載のサーバ。
  11. 前記データベースは、複数に分散されており、
    複数に分散されたデータベースを有する少なくとも1つのデータベースサーバと接続され、
    前記取得手段は、受信された前記第1処理要求に応じて、少なくとも1つの前記データベースサーバに対して前記データの取得を要求する取得要求を行い、当該データベースサーバから前記第1データ及び前記データ構造情報を取得する
    ことを特徴とする請求項1に記載のサーバ。
  12. 前記データ、前記第1データ及び前記第2データのうち少なくとも1つは、XML(Extensible Markup Language)により表現されるデータであり、階層構造を有するデータである
    ことを特徴とする請求項1乃至10のいずれか一項に記載のサーバ。
  13. 前記判断手段は、前記データ構造情報を用いて、階層構造における要素の深さ、要素のサイズ及び同一種類の要素が繰り返し表れる数の少なくとも1つを用いて、各要素を識別子にするか否かを判断する
    ことを特徴とする請求項11に記載のサーバ。
  14. 受信手段と、取得手段と、判断手段と、データ生成手段と、結果送信手段とを備えるサーバにおいて実現される方法であって、
    前記受信手段が、複数の要素を含むデータの取得を要求する第1処理要求をクライアントから受信する受信ステップと、
    前記取得手段が、受信された前記第1処理要求に応じて、データベースから該当の第1データと当該第1データ内における要素間の関連及び各要素の位置付けを示すデータ構造情報とを取得する取得ステップと、
    前記判断手段が、取得された前記第1データに含まれる各要素に対して、前記データ構造情報を用いて、各要素を識別子にするか否かを判断する判断ステップと、
    前記データ生成手段が、前記第1データに含まれる要素のうち、前記判断ステップで前記識別子にすると判断された第1要素を第1識別子にすることにより、当該第1識別子と、前記第1データに含まれる要素のうち前記第1要素以外の要素とを含む第2データを生成するデータ生成ステップと、
    前記結果送信手段が、生成された前記第2データを前記クライアントに送信する結果送信ステップとを含む
    ことを特徴とするデータ転送方法。
  15. 請求項14に記載された方法をコンピュータで実行させることを特徴とするデータ転送プログラム。
JP2008021594A 2008-01-31 2008-01-31 サーバ、データ転送方法及びプログラム Expired - Fee Related JP5134989B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008021594A JP5134989B2 (ja) 2008-01-31 2008-01-31 サーバ、データ転送方法及びプログラム
US12/357,468 US8352481B2 (en) 2008-01-31 2009-01-22 Server, data transfer method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008021594A JP5134989B2 (ja) 2008-01-31 2008-01-31 サーバ、データ転送方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009181463A JP2009181463A (ja) 2009-08-13
JP5134989B2 true JP5134989B2 (ja) 2013-01-30

Family

ID=40932666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008021594A Expired - Fee Related JP5134989B2 (ja) 2008-01-31 2008-01-31 サーバ、データ転送方法及びプログラム

Country Status (2)

Country Link
US (1) US8352481B2 (ja)
JP (1) JP5134989B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5172931B2 (ja) 2010-10-25 2013-03-27 株式会社東芝 検索装置、検索方法および検索プログラム
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
KR101758558B1 (ko) * 2016-03-29 2017-07-26 엘에스산전 주식회사 에너지 관리 서버 및 그를 갖는 에너지 관리 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3747525B2 (ja) * 1996-08-28 2006-02-22 株式会社日立製作所 並列データベースシステム検索方法
US6564219B1 (en) * 1998-11-19 2003-05-13 Emc Corporation Method and apparatus for obtaining an identifier for a logical unit of data in a database
JP2001236261A (ja) * 2000-02-24 2001-08-31 Mitsubishi Electric Corp 構造化文書閲覧システム及び構造化文書閲覧方法及びサーバ装置及び閲覧装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体及びプロキシサーバ装置
EP1150213B1 (en) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method
JP4774145B2 (ja) * 2000-11-24 2011-09-14 富士通株式会社 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム
JP4163870B2 (ja) * 2001-12-28 2008-10-08 富士通株式会社 構造化文書変換装置
JP4068570B2 (ja) * 2002-02-08 2008-03-26 富士通株式会社 文書配信装置、文書受信装置、文書配信方法、文書配信プログラム、文書配信システム
JP4231261B2 (ja) * 2002-09-12 2009-02-25 株式会社エヌ・ティ・ティ・ドコモ 同一性判定装置
JP4247135B2 (ja) * 2004-02-10 2009-04-02 株式会社東芝 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
JP4408717B2 (ja) * 2004-02-19 2010-02-03 株式会社ジャストシステム 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム

Also Published As

Publication number Publication date
US20090198705A1 (en) 2009-08-06
JP2009181463A (ja) 2009-08-13
US8352481B2 (en) 2013-01-08

Similar Documents

Publication Publication Date Title
US7231386B2 (en) Apparatus, method, and program for retrieving structured documents
US8949225B2 (en) Integrating applications with an RDF repository through a SPARQL gateway
JP6213247B2 (ja) データ記憶システム、データ記憶システムで実行されるプログラム及び方法
US7668806B2 (en) Processing queries against one or more markup language sources
JP4516566B2 (ja) Xml文書とリレーショナルデータと間のマッピングにおける階層情報の保持
US8762410B2 (en) Document level indexes for efficient processing in multiple tiers of a computer system
JP5843965B2 (ja) 検索装置、検索装置の制御方法及び記録媒体
US8983931B2 (en) Index-based evaluation of path-based queries
JP6720641B2 (ja) 多言語データティアのデータ制約
US7797310B2 (en) Technique to estimate the cost of streaming evaluation of XPaths
US20070016605A1 (en) Mechanism for computing structural summaries of XML document collections in a database system
US8117186B2 (en) Database processing apparatus, information processing method, and computer program product
US8073841B2 (en) Optimizing correlated XML extracts
US8825696B2 (en) Computer readable storage medium recording database search program, database search device, and database search method
JP2009503679A (ja) 拡張可能マークアップ言語(xml)のための軽量なアプリケーションプログラムインターフェース(api)
JP5134989B2 (ja) サーバ、データ転送方法及びプログラム
JP2009544102A (ja) Xml文書の、意味論を意識した処理
JP4854542B2 (ja) 文書検索システム及び文書検索方法
JP3914081B2 (ja) アクセス権限設定方法および構造化文書管理システム
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
JP4309818B2 (ja) 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
JP2006127235A (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
WO2012063451A1 (ja) 情報処理装置
US8200679B2 (en) Estimating cardinalities of XML table constructs within queries
KR20140104544A (ko) 의미 데이터 구축을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120927

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121112

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151116

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151116

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees