JP2010146067A - データ処理プログラム、サーバ装置およびデータ処理方法 - Google Patents

データ処理プログラム、サーバ装置およびデータ処理方法 Download PDF

Info

Publication number
JP2010146067A
JP2010146067A JP2008319530A JP2008319530A JP2010146067A JP 2010146067 A JP2010146067 A JP 2010146067A JP 2008319530 A JP2008319530 A JP 2008319530A JP 2008319530 A JP2008319530 A JP 2008319530A JP 2010146067 A JP2010146067 A JP 2010146067A
Authority
JP
Japan
Prior art keywords
data
replicas
server
arbitrary data
processing
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.)
Granted
Application number
JP2008319530A
Other languages
English (en)
Other versions
JP5396848B2 (ja
Inventor
Yoshio Murata
美穂 村田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008319530A priority Critical patent/JP5396848B2/ja
Priority to US12/547,805 priority patent/US8577838B2/en
Publication of JP2010146067A publication Critical patent/JP2010146067A/ja
Application granted granted Critical
Publication of JP5396848B2 publication Critical patent/JP5396848B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

【課題】各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させる。
【解決手段】サーバ装置100では、データごとにいくつのサーバ装置100に複製するかを表すレプリカ数を設定し、このレプリカ数に基づいて、いずれのサーバ装置100にデータを配置するかを選択する。そして、各サーバ装置100は、レプリカ数が動的に変化する度にデータを配置するサーバ装置100を再度決定する。レプリカ数が増加し、あらたにデータの配置先として追加されたサーバ装置100は、該当するデータを新規に配置する。一方、レプリカ数が減少し、データの配置先から除外されたサーバ装置100は、該当するデータを削除する。
【選択図】図1

Description

この発明は、相互に通信可能なコンピュータ群を構成する各コンピュータにおけるデータ処理プログラム、サーバ装置およびデータ処理方法に関する。
近年、ネットワークシステムを介してアクセス可能なデータベースシステムでは、配置するデータ量の増加や、データへのアクセス増加に伴い、データを複数のサーバやその他ストレージなどの機器(以後、これらをまとめて「サーバ装置」とする)に分散して管理する構成が増加している。このようにデータを分散して配置する場合には、負荷分散や可用性向上のために1つのデータのレプリカ(複製)を生成し、複数のサーバそれぞれに配置するような冗長性を持たせることが多い。
このとき生成される元データを含めたレプリカの総数をレプリカ数とよぶ。通常レプリカ数は、データへのアクセスパターンなどに応じて決められる。たとえば、すべてのデータが、参照しかされない場合、データを配置するすべてのサーバ装置にすべてのデータがコピーされる。すなわち、レプリカ数=サーバ装置の総数となる。このような分散には以下のような利点がある。
・すべてのサーバ装置にデータが配置されているため、クライアントからの参照要求をいずれかのサーバ装置に振り分けるような単純な構成のロードバランサーを用意することで、容易に参照要求による処理負荷を分散することができる。
・複数のクライアントから同じデータに対する参照要求があった場合であっても、参照要求をサーバの台数分だけ分散させることができる。
・すべてのサーバ装置がダウンしない限りデータが消滅することがないため、可用性が高い。
一方、データ参照のみならず、データの更新がおこなわれる場合には、上述のようにすべてのサーバ装置にデータをコピーしていると、更新が発生する度に、すべてのサーバ装置に対してデータの更新を反映させなければならない。結果として、各サーバ装置におけるコピー処理が頻繁に発生し処理効率が悪くなってしまう。また、更新がおこなわれる場合であっても各サーバ装置の処理効率を最大限にするためにレプリカ数を1(コピーなしの状態)にすると、同一のデータに対する参照要求が集中した場合に、負荷分散ができず参照要求への応答時間が長くなってしまうことがある。さらに、データが配置されたサーバ装置以外に同一のデータが配置された予備となるサーバ装置を用意しないため、サーバ装置がダウンした場合にデータが消滅する恐れがあり、可用性も著しく低下してしまう。
したがって、従来は、レプリカ数を2以上にし、なおかつ、サーバ装置の総数より少ない数に設定する場合が多い。実際には、データのアクセスパターン(参照・更新の割合、頻度)やデータベースの管理者や利用者によって要求された可用性を満たすように考慮してレプリカ数を決定する。これにより、参照・更新ともに効率のよいデータアクセスが可能となる。
特開平2−231676号公報
しかしながら、上述のように、データ分散型のデータベースシステムとして利用するサーバ装置に配置された各データへのアクセスパターンがデータによって大きく異なる場合には、全データに対して共通の最適なレプリカ数を決めることは困難であった。たとえば、レプリカ数(全データ共通)を高めに設定した場合、参照が多いデータへの参照効率は上がるが、更新が多いデータはレプリカ数分のデータを更新しなければならず、更新の際の処理効率が低下してしまう。
上述のようなケースへの対応策として、参照の多いデータと更新が多いデータとを分け、それぞれのデータに関してレプリカ数を設定して各サーバ装置へ配置するような技術も提供されている。ところが、データの所有者によってデータを分類する方式が適用されているなど、アクセスパターンの違いによってデータを分けられない場合は、レプリカ数として平均的な値しか設定できない。
また、仮にある時点におけるアクセスパターンに基づいてデータを分け、それぞれ異なるレプリカ数を設定できたとしても、アクセスパターンが頻繁に変わってしまうと、常に最適なレプリカ数を適用することが難しい。たとえば、ブログのようなサーバ装置管理者以外の一般の利用者によるデータベースへの更新処理が主体となるサービスの場合、利用者のブログ記事の更新頻度が本人の都合により変化したり、ある報道や、イベントの発生などによってある利用者のページへの参照頻度が急増したりする。したがって、レプリカ数が固定のままではデータアクセスの効率が悪く参照者による快適な参照が困難になってしまうという問題があった。
そこで、データ分散型のデータベースシステムにおいて、データの参照頻度をモニタし、あらかじめ設定された基準値との比較結果(たとえば、基準値を超える時、あるいは超えると予想される時)、データの一部または全部をコピーして他のサイトに送信する技術も提案されている(たとえば、上記特許文献1参照。)。この技術によれば、参照頻度が高いサイトにレプリカをコピーすることでその参照効率を高くすることができる。また、動的にコピーを作成するので、データベース処理の傾向の変化に効果的に対応することができる。
しかしながら、上述の技術はデータのコピーについてしか記述がないため、データアクセスの変化が激しい環境でこの技術を使い続けると、データのコピー先を制限しない限りいずれすべてのデータがすべてのサイトにコピーされてしまうことになる。したがって、あるデータの参照頻度が下がってかつ更新頻度が上がった場合、参照の負荷分散の効果は少なく、逆に更新はコピー数が多い分効率が悪くなってしまうという問題があった。
上述した従来技術による問題点を解消するため、各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させることが可能なデータ処理プログラム、サーバ装置およびデータ処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、相互に通信可能なコンピュータ群を構成するコンピュータにおいて、任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する処理と、前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する処理と、取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する処理と、選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理と、自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する処理と、任意のタイミングごとに、実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する処理と、現在設定されている複製数とは異なる複製数が決定された場合には、当該決定された複製数を前記コンピュータ群すべてに送信する処理と、前記決定された複製数が送信されてきた場合には、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択する処理と、自装置が、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込む処理と、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除する処理と、を含むことを要件とする。
このデータ処理プログラム、サーバ装置およびデータ処理方法によれば、データの参照頻度だけでなく更新頻度も同時にモニタすることによってデータごとにレプリカ数が動的に変化する場合であっても、データごとに設定されたレプリカ数に基づいて各データの配置先を選択する。したがって、データごとに個別に最適なレプリカ数を設定できるとともに、他のデータのレプリカ数に影響されずに、処理要求の頻度に応じて動的にデータの配置先となるコンピュータの台数を変更することができる。
このデータ処理プログラム、サーバ装置およびデータ処理方法によれば、各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させることができるという効果を奏する。
以下に添付図面を参照して、このデータ処理プログラム、サーバ装置およびデータ処理方法の好適な実施の形態を詳細に説明する。このデータ処理プログラム、サーバ装置およびデータ処理方法では、データごとにいくつのサーバ装置に複製するかを表すレプリカ数を設定し、このレプリカ数に基づいて、いずれのサーバ装置にデータを配置するかを選択する。そして、各サーバ装置は、レプリカ数が動的に変化する度にデータを配置するサーバ装置を再度選択する。レプリカ数が増加し、あらたにデータの配置先として追加されたサーバ装置は、該当するデータを新規に配置する。一方、レプリカ数が減少し、データの配置先から除外されたサーバ装置は、該当するデータを削除する。
すなわち、レプリカ数の変化に応じてデータを配置するサーバ装置を動的に増減することが可能となる。したがって、従来起こっていたような、クライアントからの参照要求が集中して、応答時間が長くなってしまったり、更新頻度が多いにもかかわらず同じデータが配置されたサーバ装置数が多いため、各サーバ装置が更新処理に追われ処理効率が低下してしまったりといった問題を解消することができる。以下には、上述したデータ処理を実現するための最良の形態について具体的に説明する。
(データ処理の概要)
まず、本実施の形態にかかるデータ処理の概要について説明する。図1は、本実施の形態にかかるサーバ装置のシステム構成を示す説明図である。図1のように、本実施の形態では、同一の構成のサーバ装置100群にデータを分散して配置するデータ分散システム200を実現する。このデータ分散システム200によって分散されるデータとは、ウェブログの記事や、共有データベースなど特に限定はない。したがって、複数のユーザからの参照処理や、更新処理が想定されるデータを扱うシステムであれば、多様な用途に適応させることができる。
そして、データ分散システム200には、ユーザからの処理要求を表すリクエスト120を受け付けるロードバランサー110が接続されている。ロードバランサー110は、外部から受け付けたリクエスト120をデータ分散システム200として用意されているサーバ装置100−1〜サーバ装置100−nのいずれかに割り振る。
サーバ装置100は、ロードバランサー110からリクエスト120が割り振られると、アプリ実行部101において、アプリケーション(リクエスト120の内容に応じたアプリケーション)を実行させることによって、リクエスト120として要求されたデータ処理をおこなう。サーバ装置100において実行されるデータ処理とは、具体的には、下記に示すように対象データへの更新処理と、参照処理との2種類からなる。
<データ更新処理>
リクエスト120によって指定された対象データの内容が変わる処理であり、新規書き込み処理と、既存のデータの更新処理と、既存のデータの削除処理との3種類に分類される。
<データ参照処理>
リクエスト120によって指定された対象データの内容が変わらない処理であり、既存のデータの読み取り処理がこれにあたる。
なお、本実施の形態にて説明しているリクエスト120は、上記のいずれのデータ処理の要求をするかを識別する情報と対象データに関する情報とによって構成されている。たとえば、データ更新時のリエスト120やデータ参照時のリクエスト120の構成を表すと下記のようになる。
・更新時のリクエスト
リクエスト例1:新規書き込み
アクセスの種類:更新(ファイルの新規作成)
データ情報:新しいデータ(新規作成するファイル名と書き込む内容)
リクエスト例2:既存のデータの更新
アクセスの種類:更新(ファイルの上書き)
データ情報:更新するデータ(上書きするファイル名と上書きする内容)
リクエスト例3:既存のデータの削除
アクセスの種類:更新(ファイルの削除)
データ情報:削除するデータ(削除するファイル名)
・参照時のリクエスト
リクエスト例4:既存のデータの読み取り
アクセスの種類:参照(ファイル内容の読み取り)
データ情報:読み取るデータ(読み取るファイル名)
そして、本実施の形態の場合、データ分散システム200を構成する各サーバ装置100は、連携処理部102を備えることによってさらに、下記のような機能を実現することができる。
1)クライアントなどの外部から対象データへのアクセス(参照・更新)のリクエスト120を受け付けたサーバ装置100は、受け付けたリクエスト120を処理の対象となるデータが配置されているサーバ装置100に送信する。このとき、自装置が対象となるデータの配置場所ならば、自装置に送信し、また、他のサーバ装置100が対象となるデータの配置場所ならば、このサーバ装置100にも送信する。なお、リクエスト120が更新処理の場合は、リクエスト中にあらたに書き込むデータの内容、あるいは更新データの内容を含む。
2)データ処理の対象となる各データが配置されているサーバ装置100は、データのアクセスパターン(参照・更新の割合、頻度)をモニタし、定期的にデータごとのレプリカ数を決定する。
3)いずれかのデータが配置されているサーバ装置100は、データのレプリカ数が変更された場合、その情報を他のサーバ装置に送信する。
4)いずれかのデータが配置されたサーバ装置100は、あるデータのレプリカ数の変更に関する情報を受け取った場合、変更後のレプリカ数から当該データの配置先を特定する。レプリカ数が増えた場合、足りないレプリカを送信する送信元サーバをあらかじめ決めたルールを用いて決定し、自装置がその送信元サーバの場合は、データのレプリカをあらたな配置先にコピーする。レプリカ数が減った場合、自装置が配置先から外れれば配置されていたデータを削除する。
本実施の形態にかかるサーバ装置100の機能として特に特徴となる点が、上記1)である。図1のように、データ分散システム200に配置されているデータ(新規書き込みの場合は、あらたに配置したいデータ)に対しての処理のリクエスト120が、ロードバランサー110を介してデータ分散システム200を構成するいずれかのサーバ装置100に送信される。このとき、リクエスト120が割り振られたサーバ装置100は、リクエスト120の対象データに設定されたレプリカ数に基づいて、対象データが配置されているサーバ装置100を選択する。
図1のようにn台のサーバ装置100によってデータ分散システム200が構成されている場合、レプリカ数:3の対象データは、3台のサーバ装置100(たとえば、サーバ装置100−1,100−2,100−n)に配置されている。したがって、いずれかのサーバ装置100がリクエスト120として対象データへの更新要求を受け付けると、対象データが配置された3台のサーバ装置100−1,100−2,100−nすべてに更新要求が送信される。
一方、いずれかのサーバ装置100がリクエスト120として対象データへの参照要求を受け付けると、3台のサーバ装置100−1,100−2,100−nのいずれかに参照要求が送信される。参照要求を受け付けたサーバ装置100は、配置されている対象データを参照し、この参照結果を、リクエスト120を受け付けたサーバ装置100へ返信する。このように、データ分散システム200では、サーバ装置100間でリクエストを処理するための双方向通信がおこなわれる。これら、双方向通信は、サーバ装置100に含まれる連携処理部102(後述)を介して直接おこなわれる。
上述のように、本実施の形態では、対象となるデータごとにレプリカ数に基づいて複数台用意されたサーバ装置100のいずれかに分散して配置される。このときの分散台数=レプリカ数となる。また、クライアントからのデータアクセス状況をモニタしながら定期的にレプリカ数を計算する。そして、あらたに計算されたレプリカ数に基づいて、再度データの配置先を決定する。したがって、アクセスパターンが頻繁に変化する環境でも、その変化に合わせて常に最適なレプリカ数が適用され、データ分散システム200としての性能や、対象データにリクエスト120を送るユーザや、データ分散システム200の管理者にとっての利便性を一定に保つことができる。
従来の技術では、運用を始めてからの人手によるレプリカ数の変更を避けたい場合、各データへのアクセスパターンを事前に詳細に分析してレプリカ数を決定する必要があった。本実施の形態では、各サーバ装置100は、レプリカ数に応じて動的にデータ配置内容を変更することができるため、各サーバ装置100が運用中であっても、動的にレプリカ数を変更することができる。したがって、事前の詳細な分析なしでレプリカ数を決定しても、実データを分析しながらレプリカ数を変更していくので、最終的に最適なレプリカ数を適用することができる。
また、従来の技術のように事前の分析によってレプリカ数を決定する場合、実運用でのデータを用いることができず、予測値になってしまう場合があった。その予測値が実情とかけ離れてしまうことも多く、結果として詳細に分析したとしても分析結果がサーバ装置100の効率を保つものとはならず、無意味なものになってしまうことがあった。本実施の形態にかかるサーバ装置100では、デフォルトのレプリカ数が不適切であっても、最終的に最適なレプリカ数を適用できる。
(システム構成)
つぎに、上述したようなデータ処理を実現するサーバ装置のシステム構成について説明する。図1のように、データ分散システム200へのアクセスは、ロードバランサー110を介しておこなわれる。ロードバランサー110は、クライアント端末を用いてユーザから入力されたリクエスト120を一括して受け付け、受け付けたデータや処理要求を、データ分散システム200を構成するいずれかのサーバ装置100へ送信する。
ロードバランサー110によるデータや処理要求の割り振り動作については特に限定はなく、たとえば、受け付けたものをサーバ装置100の装置番号順に順次割り振ってもよいし、各サーバ装置100の稼働状態を監視して、ビジー状態のサーバ装置100以外にランダムに割り振ってもよい。
つぎに、データ分散システム200を構成する各サーバ装置の構成について説明する。各サーバ装置100は、いずれもアプリ実行部101と連携処理部102と、記憶部103とを備えた構成になっている。そして、各データへアクセスをおこなう際、アプリ実行部101によって実行されるアプリケーションは、該当するデータが配置されたすべてのサーバ装置100上で動作するように設定されている。また、記憶部103は、実際にデータを配置する記録領域であり、各種メモリやディスクによって実現される。記憶部103への実際のデータの書き込み処理については公知の技術を利用するためここでは説明を省略する。
そして、本実施の形態にかかるサーバ装置100の特徴となるのが、連携処理部102である。アプリ実行部101は、ロードバランサー110によってあらたにリクエスト120が割り振られると、入力されたリクエスト120から実際のデータへのアクセス処理(リクエスト)に変換し、自装置の連携処理部102に送信する。したがって、連携処理部102は、リクエスト120を受け取ると、そのリクエスト120に含まれる対象データに設定されたレプリカ数に応じてそのデータを配置するサーバ装置(以下、「配置サーバ」とよぶ)を選択し、選択されたサーバ装置100の連携処理部102へリクエスト120を送信する。
また、連携処理部102は、あらたに入力されたデータに対してレプリカ数が設定された場合や、後述する機能によってあるデータのレプリカ数が更新された場合に、データを識別する情報(たとえば、データ内容を含むファイル名)と一緒に、そのデータに対応したレプリカ数を各サーバ装置100に送信する。このように、連携処理部102によってデータごとに設定されているレプリカ数の情報を保持することによって、サーバ装置100はどのデータに対するリクエスト120が割り振られても、対象データの配置サーバを特定して、適切な処理を実行することができる。
(サーバ装置のハードウェア構成)
つぎに、サーバ装置の具体的なハードウェア構成について説明する。図2は、本実施の形態にかかるサーバ装置のハードウェア構成を示すブロック図である。図2において、サーバ装置100は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、通信I/F(Interface)206と、入力デバイス207と、出力デバイス208と、を備えている。また、各構成部はバス210によってそれぞれ接続されている。
ここで、CPU201は、サーバ装置100の全体の制御を司る。ROM202は、ブートプログラムや、本実施の形態にかかるデータ処理を実現するためのデータ処理プログラムなどの各種プログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータの更新/参照を制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。なお、図2のハードウェア構成では、記憶部103の役割を担う記録媒体として、磁気ディスク205を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
通信I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク(NET)209に接続され、このネットワーク209を介して他のサーバ装置100やロードバランサー110に接続される。そして、通信I/F206は、ネットワーク209と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信I/F206の構成例としては、たとえばモデムやLANアダプタなどを採用することができる。
入力デバイス207は、サーバ装置100に対しての外部からの入力を受け付ける。入力デバイス207としては、具体的には、キーボード、マウスなどが挙げられる。なお、図1に例示したようにサーバ装置100は、ロードバランサー110によって割り振られたリクエスト120に応じてアプリを実行するため、入力デバイス207からリクエスト120が入力されるようなことはなく、サーバ装置100の保守・管理を目的として用意されている。
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
出力デバイス208は、サーバ装置100に配置されたデータや、アプリケーションの実行状況、さらには配置された各データのアクセスパターンやその解析結果などを出力する。出力デバイス208としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
なお、上述した入力デバイス207も出力デバイス208も、サーバ装置100という装置の特性上必須の構成ではなく、管理者の利便性に応じて適宜構成を変化させてもよい。
(連携処理部の機能的構成)
つぎに、連携処理部102の詳細な処理について説明する。図1にて説明したように、各サーバ装置100の連携処理部102同士は、双方向通信が可能であり、あるデータへのリクエスト120が割り振られた場合、後述する連携処理部102の制御によってリクエスト120(処理の種類とデータを識別する情報とデータ内容)の送受信がおこなわれる。また、あるデータについてのレプリカ数があらたに決定された、または、変更された場合には、新しいレプリカ数情報(データを識別する情報とデータ内容、新しいレプリカ数)との送受信がおこなわれる。
したがって、以下には、本実施の形態にかかるサーバ装置100の連携処理部102が上述の制御を実現するための機能的構成について説明する。図3は、連携処理部の機能的構成を示すブロック図である。図3のように、連携処理部102は、取得部301と、選択部302と、送受信部303と、設定部304と、判断部305と、実行部306と、決定部307とを備えている。この制御部となる機能(取得部301〜決定部307)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、通信I/F206により、その機能を実現する。
取得部301は、任意のデータについての処理要求としてリクエスト120が入力されると、このデータに設定されているレプリカ数を取得する。上述したように、すでにデータ分散システム200を構成するいずれかのサーバ装置100の記億部103に配置されているデータであれば、すべてのサーバ装置100には、このデータのレプリカ数の情報が保持されている。したがって、取得部301は、入力されたリクエスト120の対象データに設定されているレプリカ数を取得する。取得部301によって取得されたレプリカ数とデータとの対応情報は、それぞれ記億部103(たとえば、磁気ディスク305)などの記憶領域に記憶される。
選択部302は、データ分散システム200を構成するサーバ装置100のうち、リクエスト120の対象となったデータが配置されているサーバ装置100を、所定のアルゴリズムを用いてレプリカ数分選択する。なお、ここで選択の基準として利用されるアルゴリズムには、特に限定はない。たとえば、入力されたデータのハッシュ値を求め、サーバ台数で割った時の余りと装置番号が一致するサーバ装置100を先頭にレプリカ数分のサーバ装置100を配置サーバとして選択する。
他にも、サーバ装置100の台数がN台であれば、入力されたデータの識別番号をN進数に変換して、変換後の識別番号と、装置番号とが一致するサーバ装置100を先頭にレプリカ数分のサーバ装置を配置サーバに選択するような手法を用いてもよい。このように選択部302によって選択された配置サーバの情報は、記憶部103などの記憶領域に記憶される。
送受信部303は、他のサーバ装置100の連携処理部102との双方向通信をおこなう。たとえば、送受信部303は、取得部301によって任意のデータのレプリカ数を取得した場合、データ分散システム200を構成するサーバ装置100すべてに送信する。また送受信部303は、選択部302によって配置サーバとして選択されたレプリカ数分の各サーバ装置100にリクエスト120を送信する。また、送受信部303は、他のサーバ装置100の連携処理部102から送信されたレプリカ数や、リクエスト120を受信する役割も担う。
設定部304は、任意のデータについてのリクエスト120として、新規書き込みの処理の要求が入力された場合にこのデータのレプリカ数としてあらかじめ与えられていた値を設定する。取得部301では、すでにいずれかのサーバ装置100に配置されているデータであれば、レプリカ数を記憶部103から取得することができるが、新規書き込みの場合、レプリカ数が保持されていない。したがって、あらかじめ、データ分散システム200の管理者によって設定された初期値をレプリカ数として設定することができる。なお、このとき、データへのアクセス内容に適さないレプリカ数が設定されたとしても、後述する決定部307によって動的にレプリカ数が変更されるため、処理効率に悪影響を及ぼすことはない。
なお、設定部304によって任意のデータのレプリカ数が設定された場合も、選択部302や送受信部303は、取得部301によってレプリカ数が設定された場合と同様に、配置サーバの選択と、レプリカ数およびリクエスト120の送信をおこなう。
判断部305は、新規書き込みのリクエスト120が入力され、設定部304によって任意のデータのレプリカ数が設定されると、このレプリカ数とサーバ装置100群の総数とが等しいか否かを判断する。判断部305によって、レプリカ数とサーバ装置100群の総数とが等しいと判断された場合、送受信部303は、サーバ装置100群すべてに、任意のデータの新規書き込み処理の要求を表すリクエスト120を送信する。
そして、判断部305によってレプリカ数とサーバ装置100群の総数とが等しくないと判断された場合、選択部302によって、上述したアルゴリズムを用いて、サーバ装置100群の中からこのデータを配置すべきサーバ装置100をレプリカ数分選択する。そして、送受信部303は、選択部302によって選択されたレプリカ数分の各サーバ装置100へ、このデータに対する更新処理を表すリクエスト120を送信する。
また、判断部305は、あるデータについてのリクエスト120として、サーバ装置100群のいずれかに配置されているこのデータに対する書き込み処理の要求が入力された場合、このデータのレプリカ数とサーバ装置100群の総数とが等しいか否かを判断する。判断部305によって、レプリカ数とサーバ装置100群の総数とが等しいと判断された場合、送受信部303は、サーバ装置100群すべてに、上記データの更新処理の要求を表すリクエスト120を送信する。
そして、判断部305によって、レプリカ数とサーバ装置100群の総数とが等しくないと判断された場合、選択部302は、上述したアルゴリズムを用いて、サーバ装置100群の中からこのデータが配置されているサーバ装置100をレプリカ数分選択する。このような処理がおこなわれた場合も、送受信部303は、選択されたレプリカ数分の各サーバ装置100へ、このデータに対する書き込み処理を表すリクエスト120を送信する。
なお、送受信部303は、あるデータについてのリクエスト120として、参照処理の要求が入力された場合には、選択部302によって選択されたレプリカ数分の各サーバ装置100のいずれか一つへ参照処理の要求を表すリクエスト120を送信すればよい。
また、実行部306は、送受信部303を介して、自装置や、他のサーバ装置から送信されたリクエスト120を受け付けた場合、リクエスト120に応じた処理を実行する。したがって、更新要求を受付ければ更新処理を、参照要求を受付ければ参照処理をおこなう。なお、実行部306は、リクエスト120として、更新要求を受付けた場合には、そのまま更新処理が終わると待機状態となる。一方、実行部306は、リクエスト120として参照要求を受け付けた場合には、対象データへの参照処理の結果を、送受信部303を介して、リクエスト120の送信元のサーバ装置100へ返信する。
これは、リクエスト120が割り振られたサーバ装置100からみると、リクエスト120の実行は、あくまでも自装置でおこなわれているものとして処理されているためである。したがって、処理要求の送信元のサーバ装置100へ参照結果が戻らないと、リクエスト120が割り振られたサーバ装置100では、いつまでも処理要求が実行されていないものと判断されてしまうため、参照結果を返信することによって、このような事態を防ぐことができる。
また、サーバ装置100は、装置内部に自立的にレプリカ数を決定する機能を備えていてもよい。決定部307は、任意のタイミングごとに、実行部306によって実行された各データへのリクエスト120を参照して各データのレプリカ数を決定することができる。
したがって、送受信部303は、決定部307によって、現在設定されているレプリカ数とは異なるレプリカ数が決定された場合にも、あらたなレプリカ数をサーバ装置100すべてに送信する。各サーバ装置100の選択部302では、送信されてきたあらたなレプリカ数に基づいて、配置サーバを選択する。実行部306は、自装置が、選択部302によって、あらたに配置サーバに選択された場合に対象データを記憶部103へ書き込む。一方、選択部302によって、あらたに対象データの配置サーバに選択されなくなった場合、すなわち、配置サーバの選択から漏れた場合には、対象データを記憶部103から削除する。
また、決定部307では、実行部306によって実行された対象データに対する処理時間の平均値が所定値以上の場合、サーバ装置100群の総数を対象データのレプリカ数に決定し、対象データへの処理時間の平均値が所定値未満であった場合、レプリカ数として設定可能な最小値をレプリカ数に決定することができる。
上述の対象データへの処理時間の平均値と所定値との比較内容について具体的に説明すると、たとえば、対象データのレプリカ数をサーバ装置100群の総数とした場合の対象データに対する処理時間の平均値と、対象データのレプリカ数を1にした場合の対象データに対する処理時間の平均値を求め、両者を比較することによって、レプリカ数を決定する手法が挙げられる。この比較により前者が後者より小さい場合は、サーバ装置100群の総数をレプリカ数に決定し、後者が前者より小さい場合は、レプリカ数として設定可能な最小値をレプリカ数に決定することができる。
以上説明したように、本実施の形態にかかるサーバ装置100では、ロードバランサー110が受け付けたリクエスト120がデータ分散システム200内のいずれのサーバ装置100に割り振られたとしても、リクエスト120の対象データに設定されたレプリカ数に応じて対象データの配置先を判断することができる。したがって、どのような内容のリクエスト120を受け付けた場合であっても、レプリカ数に応じた配置サーバを選択して効率的にデータを分散することができる。以下に、上述した機能を持つサーバ装置100の具体的な動作をデータ更新時、データ参照時に分けて順次説明する。
(データ更新処理)
まず、サーバ装置100におけるデータ更新処理について説明する。図4は、サーバ装置におけるデータ更新処理を示す説明図である。図4を用いて、各サーバ装置100の連携処理部102が、データごとに設定されたレプリカ数に応じて対象データへアクセスする手順を説明する。
まず、ロードバランサー110によっていずれかのサーバ装置100(図4ではサーバ装置100−1)にある対象データの更新(新規データへの書き込み、配置済みデータへの書き込み、配置済みデータの削除)処理が割り振られる。連携処理部102では、あらかじめ決められたアルゴリズムによりそのデータの配置サーバを決定する。
ここで、配置サーバの決定処理の手順について説明する。図5は、配置サーバ選択処理の手順を示すフローチャートである。図5のフローチャートにおいて、まず、あらたに決定、もしくは更新されたレプリカ数を取得する(ステップS501)。そして、取得したレプリカ数がサーバ装置100の数(総数)と等しいか否かを判断する(ステップS502)。ここでレプリカ数と比較するサーバ装置100の数とは、ロードバランサー110によってリクエスト120が割り振られるように設定されているサーバ装置100の総数を意味する。したがって、図1や図4に示した例では、サーバ装置100の数はnとなる。
ステップS502において、レプリカ数とサーバ数とが等しいと判断されると(ステップS502:Yes)、すべてのサーバ装置100に更新要求をおこなわなければならないため、全サーバ装置100を配置サーバに決定して(ステップS503)、一連の配置サーバ選択処理を終了する。
一方、ステップS502において、レプリカ数とサーバ装置100の数とが等しくないと判断された場合(ステップS502:No)、全サーバ装置100の中からレプリカ数分のサーバ装置100を配置サーバに決定するための処理に移行する。まず、対象データのハッシュ値を算出する(ステップS504)。そして、レプリカ数が1か否かを判断する(ステップS505)。
ステップS505において、レプリカ数が1と判断された場合(ステップS505:Yes)、算出されたハッシュ値をサーバ数(総数)での割ったときの余りを求め、この余りの値と装置番号が一致するサーバ装置100を配置サーバに選択し(ステップS506)、一連の処理を終了する。一方、レプリカ数が1以外と判断された場合(ステップS505:No)、ステップS506と同様にハッシュ値をサーバ数で割ったときの余りを求め、この余りの値と一致する装置番号が与えられたサーバ装置100を先頭に、レプリカ数分のサーバ装置100を配置サーバとして選択して(ステップS507)、一連の処理を終了する。
ステップS506およびステップS507における処理を具体的に説明すると、たとえば、ハッシュ値をサーバ台数分で割った余り(odd)を求めている。そして、レプリカ数=1であればステップS506のように、oddが装置番号に設定されているサーバ装置100を配置サーバに選択する。そして、レプリカ数=m(1<m<n)の場合、ステップS507のように、装置番号としてodd,odd+1,…,odd+m−1が設定されているm台のサーバ装置100が配置サーバとなる。
つぎに、図4に戻り、更新処理パターン(1)および(2)について処理について説明する。連携処理部102では、配置サーバを決定すると、受け付けた更新要求を配置サーバへ送信しなければならない。このとき、連携処理部102では自装置が配置サーバだった場合に、更新要求に応じた書き込みをおこなう更新処理パターン(1)と、自装置以外の配置サーバへ更新要求に応じた書き込みをおこなう更新処理パターン(2)とが必要となる。
図6−1は、データ更新処理の手順(更新要求を自装置のアプリ実行部から受信したサーバ装置の場合)を示すフローチャートである。図6−1のフローチャートでは、まず、自装置のアプリ実行部101から更新要求を受信したか否かを判断する(ステップS611)。ここで、データ更新要求を受信するまで待機状態となり(ステップS611:Noのループ)、データ更新要求を受信すると(ステップS611:Yes)、配置サーバ選択処理をおこなう(ステップS612)。
つぎに、ステップS612の配置サーバ選択処理の結果を参照して自装置が配置サーバであるか否かを判断する(ステップS613)。ここで、自装置が配置サーバであると判断された場合(ステップS613:Yes)、データ更新要求に応じて対象データを更新し(ステップS614)、他の配置サーバへ更新要求を送信し(ステップS615)、一連の処理を終了する。なお、ステップS613において、自装置が配置サーバではないと判断された場合(ステップS613:No)、ステップS614の更新要求をおこなわずに、ステップS615に移行して、他の配置サーバに更新要求を送信して(ステップS615)、一連の処理を終了する。
そして、ステップS615のように、配置サーバに決定された他のサーバ装置100へ更新要求を送信した場合には、送信先のサーバ装置100(図4の場合はサーバ装置100−n)において更なる処理が必要となる。図6−2は、データ更新処理の手順(更新要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合)を示すフローチャートである。図6−2のフローチャートにおいて、まず、他のサーバ装置100から更新要求を受信したか否かを判断する(ステップS621)。ここで、更新要求を受信するまで待ち(ステップS621:Noのループ)、更新要求を受信したと判断されると(ステップS621:Yes)、更新要求にしたがって対象データを更新し(ステップS622)、一連の処理を終了する。
(データ参照処理)
つぎに、サーバ装置100におけるデータ参照処理について説明する。図7は、サーバ装置におけるデータ参照処理を示す説明図である。図7の場合も、サーバ装置100−1に、リクエスト120(参照要求)が割り振られているものとして説明する。連携処理部102では、更新処理の場合と同様に、あらかじめ決められたアルゴリズムによりそのデータの配置サーバを決定する(図5参照)。
連携処理部102では、配置サーバを決定すると、受け付けた参照要求を配置サーバへ送信する。このとき、連携処理部102では、自装置が配置サーバだった場合に、参照要求に応じた読み込みをおこなう処理パターン(1)と、自装置以外の配置サーバへ参照要求を送信し、その要求を受信したサーバ装置100がその要求に応じた読み込みをおこなう処理パターン(2)とが必要となる。また、上記処理パターン(2)の場合、参照要求が送信されてきたサーバ装置100−nは、この参照結果を送信元のサーバ装置100−1に送信しなければならない。したがって、以下に処理パターン(1)、(2)のそれぞれの場合の処理について説明する。
図8−1は、データ参照処理の手順(参照要求を自装置のアプリ実行部から受信したサーバ装置の場合)を示すフローチャートである。図8−1のフローチャートでは、まず、自装置のアプリ実行部101からリクエスト120(参照要求)を受信したか否かを判断する(ステップS811)。ここで、データ参照要求を受信するまで待機状態となり(ステップS811:Noのループ)、データ参照要求を受信すると(ステップS811:Yes)、配置サーバ選択処理をおこなう(ステップS812)。
つぎに、対象となっているデータのレプリカ数が1か否かを判断する(ステップS813)。そして、レプリカ数が1に設定されている場合(ステップS813:Yes)、ステップS812の配置サーバ選択処理によって配置サーバに決定されたサーバ装置100を参照要求に応じたデータ参照をおこなうための参照サーバに決定する(ステップS814)。すなわち、決定された配置サーバ以外に対象データが配置されているサーバ装置100はないことを意味する。
一方、レプリカ数が1以外の値に設定されている場合(ステップS813:No)、ステップS812の配置サーバ選択処理によって配置サーバに決定されたサーバ装置100のいずれか一つを参照要求に応じたデータ参照をおこなうための参照サーバに決定する(ステップS815)。
参照サーバが決定すると、つぎに、自装置はステップS812によって決定された配置サーバか否かを判断する(ステップS816)。ここで、自装置が配置サーバであると判断された場合(ステップS816:Yes)、自装置の記憶部103に配置されている対象データを参照して(ステップS817)、一連の処理を終了する。一方、自装置が配置サーバでないと判断された場合(ステップS816:No)、参照サーバに参照要求を送信して(ステップS818)、一連の処理を終了する。
そして、ステップS818のように、参照サーバに決定された他のサーバ装置100へ参照処理を送信した場合には、送信先のサーバ装置100(図7の場合はサーバ装置100−n)において更なる処理が必要となる。図8−2は、データ参照処理の手順(参照要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合)を示すフローチャートである。
図8−2のフローチャートにおいて、まず、他のサーバ装置100の連携処理部102から参照要求を受信したか否かを判断する(ステップS821)。ここで、参照要求を受信するまで待ち(ステップS821:Noのループ)、参照要求を受信したと判断されると(ステップS821:Yes)、参照要求にしたがって対象データを参照し(ステップS822)、参照要求の送信元のサーバ装置100へ参照結果を送信して(ステップS823)、一連の処理を終了する。
(レプリカ数変更時のデータ再配置処理)
つぎに、レプリカ数が変更された場合のデータの再配置処理について説明する。本実施の形態にかかるサーバ装置100では、レプリカ数の変更に応じて記憶部103にあらたに対象データを配置する、もしくは配置されていた対象データを削除する処理が必要となる。以下、それぞれの場合に分けて処理内容を説明する。
図9は、レプリカ数変更時のデータ再配置処理を示すフローチャートである。図9のフローチャートにおいて、まず、所定時間が経過したか否かを判断する(ステップS901)。ここで、所定時間が経過するまで待ち(ステップS901:Noのループ)、所定時間が経過すると(ステップS901:Yes)、レプリカ数決定処理をおこなう(ステップS902)。
なお、このステップS901は、レプリカ数の更新タイミングを時間基準で判断する処理である。すでに述べたが、更新タイミングの設定は任意であり、自由に設定することができる。したがって、たとえば、特定のデータに対して、または、自装置に対して所定回数の要求処理が割り振られたか否かによって判断するなど、処理回数基準で更新タイミングを設定してもよい。
また、ステップS902におけるレプリカ数決定処理は、各種アクセスパターン解析ツールを用いてもよいし、管理者からの設定を受け付けてもよい。また、後述するような手順によって自立的にレプリカ数を決定してもよい。
レプリカ数が決定されると、つぎに、ステップS902の決定によってレプリカ数が変更されたか否かを判断する(ステップS903)。ここで、レプリカ数が変更されていない場合(ステップS903:No)、配置サーバ数は変わらないため、そのまま一連の処理を終了する。
一方、ここで、レプリカ数が変更された場合(ステップS903:Yes)、変更されたレプリカ数の情報を他のサーバ装置100に送信する(ステップS904)。そして、変更によってレプリカ数は増加したか否かを判断する(ステップS905)。レプリカ数が増加した場合は(ステップS905:Yes)、増加時のデータ再配置処理をおこない(ステップS906)、レプリカ数が増加していない場合(ステップS905:No)、すなわちレプリカ数が減少した場合には、減少時のデータ再配置処理をおこない(ステップS907)、一連の処理を終了する。
・レプリカ数増加時
まず、レプリカ数増加時の処理について説明する。図10は、レプリカ数増加時のデータ再配置処理を示すフローチャートである。図10のフローチャートにおいて、まず、変更された新レプリカ数を用いた配置サーバ選択処理をおこなう(ステップS1001)。このステップS1001にておこなわれる配置サーバ選択処理は、図5において説明した配置サーバ選択処理である。ステップS1001で選択された配置サーバを新配置サーバとする。
つぎに、対象データについて設定されている旧レプリカ数=1か否かを判断する(ステップS1002)。ここで、旧レプリカ数=1であると判断された場合(ステップS1002:Yes)、旧レプリカ数に基づいて決定された旧配置サーバは、確実に新配置サーバに決定されているため、この配置サーバをデータ送信元に決定する(ステップS1003)。このデータ送信元とは、あらたしく配置サーバに加わったサーバ装置100に対象データを送信する、マスターデータが配置されているサーバ装置100を意味する。
一方、旧レプリカ数=1ではないと判断された場合(ステップS1002:No)、旧レプリカ数によって決定された配置サーバである旧配置サーバのいずれか一つをデータ送信元に決定する(ステップS1004)。ここでも、レプリカ数が増加した場合、旧レプリカ数によって決定された配置サーバは確実に新レプリカ数によって決定された配置サーバに含まれるため、旧配置サーバのいずれか一つをデータ送信元に決定すればよい。
その後、自装置がデータ送信元か否かを判断し(ステップS1005)、自装置がデータ送信元に決定されていた場合(ステップS1005:Yes)、新しく配置サーバになったサーバ装置100に対象データを送信することによって(ステップS1006)、一連の処理を終了する。一方、自装置がデータ送信元ではない場合(ステップS1005:No)、そのまま一連の処理を終了する。この場合は、データ送信元に決定されたサーバ装置100がデータ配置をおこなうため、自装置はなにもしなくてもよい。
・レプリカ数減少時
つぎに、レプリカ数減少時の処理について説明する。図11は、レプリカ数減少時のデータ再配置処理を示すフローチャートである。図11のフローチャートにおいて、まず、旧レプリカ数を用いた配置サーバ選択処理をおこなう(ステップS1101)。このステップS1101にておこなわれる配置サーバ選択処理は、図5において説明した配置サーバ選択処理である。
ステップS1101における配置サーバ選択処理を参照して、自装置が旧レプリカ数における配置サーバか否かを判断する(ステップS1102)。ここで、自装置が配置サーバではないと判断された場合(ステップS1102:No)、自装置には、今回レプリカ数が変更になった対象データは配置されていないため、そのまま一連の処理を終了する。
一方、ステップS1102において、自装置が配置サーバであると判断された場合(ステップS1102:Yes)、今度は、新レプリカ数を用いた配置サーバ選択処理をおこなう(ステップS1103)。そして、ステップS1103における配置サーバ選択処理を参照して、自装置が新レプリカ数における配置サーバか否かを判断する(ステップS1104)。
ステップS1104の判断において、自装置が新レプリカ数における配置サーバであると判断された場合(ステップS1104:Yes)、自装置に配置された対象データは保持されるため、そのまま一連の処理を終了する。一方、自装置が新レプリカ数における配置サーバではないと判断された場合(ステップS1104:No)、自装置に配置されている対象データを削除し(ステップS1105)、そのまま一連の処理を終了する。
このように、本実施の形態にかかるサーバ装置100は、レプリカ数の動的な変更に対応して、対象データを効率的に配置することができる。
(レプリカ数の決定処理)
つぎに、レプリカ数の決定処理について説明する。上述したように、本実施の形態にかかるサーバ装置100におけるレプリカ数の設定手法は一様ではない。たとえば、データ分散システム200の管理者によってアクセスパターンを解析し、この解析結果に基づいて各データのレプリカ数を設定してもよいし、アクセスパターンを解析するツールを用意し、このツールによる解析結果によってレプリカ数を設定してもよい。
しかしながら、サーバ装置100に自立的にレプリカ数を決定する機能を持たせることによって、管理者の負担を軽減させることができる。したがって、ここでは、各サーバ装置100の連携処理部102によって自動的にレプリカ数を決定する際の具体例を説明する。
サーバ装置100の連携処理部102では、あるデータの参照・更新比率(そのデータへのアクセスの内訳)を考慮して、各データについてのデータアクセス処理の性能を算出する。この算出処理の際に用いられる情報が、レプリカ数、記憶部103への書き込み時間または記憶部103からの読み取り時間、サーバ装置100間の通信時間である。参照・更新要求の比率が変わる環境では、定期的にその時点での参照・更新要求の割合を用いて性能を算出し、最も性能が高くなるレプリカ数を決定する必要がある。以下には、上述の情報を用いたレプリカ数の決定手順について説明する。
説明の前に、以下に利用する変数を列挙する。
更新割合:W[%]
参照割合:R[%]
サーバ台数:N[台]
レプリカ数:r(r>0の整数)
サーバ装置間の通信時間:Tt[sec]
書き込み時間:Tw[sec]
読み取り時間:Tr[sec]
更新時の平均レイテンシー:Lw
参照時の平均レイテンシー:Lr
まず、連携処理部102は、ある一定時間間隔における各データへの参照・更新要求をカウントし、データごとに参照割合R・更新割合Wを求める。具体的には、1時間の間に、180回の参照処理がおこなわれ、20回の更新処理がおこなわれた場合、参照割合R=90[%]、更新割合W=10[%]となる。なお、ここでは、一例として一定時間間隔において発生したデータへの参照・更新要求回数からそれぞれの参照割合R・更新割合Wを求めているが、ある一定回数の要求のうち参照と更新がそれぞれ何回であったかに基づいて参照割合R・更新割合Wを求めてもよい。たとえば100回の要求のうち90回が参照で、10回が更新であれば、R=90[%]、W=10[%]となる。
つぎに、連携処理部102は、上述の参照割合R・更新割合Wを算出するのと同時に、レプリカ数rに応じたデータ参照・更新のそれぞれの平均レイテンシーを算出し、平均レイテンシーが最も低くなるようレプリカ数を決定する。以下に図12,13を用いて、レプリカ数決定の手順を詳細に説明する。
なお、サーバ装置100間の通信時間Tt、書き込み時間Tw、読み取り時間Trは、何回かの実測値を平均して求めてもよい。または、実際のサーバ装置100間の通信時間Tt、書き込み時間Tw、読み取り時間Trについて、それぞれ個別に計測してもよいし、あらかじめ仕様として与えられている、もしくはテスト値が開示されているなど、あらかじめわかっている場合にはその値を利用してもよい。ここでは、これらの値を求める手段については特に限定せず、データ分散システム200の管理者が適宜選択することができる。そして、1台のサーバ装置100から他の複数のサーバ装置100に更新要求を送信する際、送信と実際の更新要求は逐次におこなわれるものとする。
・データ更新時の平均レイテンシー
まず、データ更新時の平均レイテンシーについて説明する。図12は、データ更新時のレイテンシー算出手順を示す説明図である。図12のように、データ更新時の平均レイテンシーは、自装置が配置サーバに決定された場合と、自装置が配置サーバではない場合とのそれぞれにおいて、レイテンシーを考慮して算出する必要がある。
まず、更新要求を受けたサーバ装置100が対象データの配置サーバである場合(自装置=配置サーバ)、データ更新要求の送信先は自装置以外のリモートのサーバ装置100計r−1台であり、実際の更新処理は自装置も含めてn台のサーバ装置100によっておこなわれる。したがって、このような場合のレイテンシーLwaは下記(1)式によって求められる。
Lwa=r*Tw+(r−1)*Tt …(1)
一方、更新要求を受けたサーバ装置100が、対象データの配置サーバでない場合(自装置≠配置サーバ)、データ更新要求の送信先は自装置以外のリモートのサーバ装置100は、計r台となり、実際の更新処理もr台のサーバでおこなわれる。したがって、このような場合のレイテンシーLwbは下記(2)式によって求められる。
Lwb=r*(Tw+Tt) …(2)
そして、更新要求を受けたサーバ装置100が、対象データの配置サーバとなる確率はr/N、配置サーバとならない確率は(N−r)/Nとなるため、更新時の平均レイテンシーLwは下記(3)式によって求められる。
Lw=Lwa*r/N+Lwb*(N−r)/N
={r*Tw+(r−1)*Tt}*r/N+r*(Tt+Tw)*(N−r)/N …(3)
・データ参照時の平均レイテンシー
つぎに、データ参照時の平均レイテンシーについて説明する。図13は、データ参照時のレイテンシー算出手順を示す説明図である。図13のように、データ参照時の平均レイテンシーも、自装置が配置サーバに決定された場合と、自装置が配置サーバではない場合とのそれぞれにおいて、レイテンシーを考慮して算出する必要がある。
まず、参照要求を受けたサーバ装置が対象データの配置サーバである場合(自装置=配置サーバ)、受信したデータ参照処理を他のサーバ装置100に送信する必要はないためレイテンシーは自装置における参照処理時間だけとなる。したがって、このような場合のレイテンシーLraは下記(4)式によって求められる。
Lra=Tr …(4)
一方、参照要求を受けたサーバ装置が対象データの配置サーバでない場合(自装置≠配置サーバ)、データ参照処理を配置サーバの中の1台のサーバ装置100に送信し、その1台のサーバ装置100において参照処理をおこなう。したがって、このような場合のレイテンシーLrbは下記(5)式によって求められる。
Lrb=Tr+Tt …(5)
参照処理の場合も、参照要求を受けたサーバ装置100が、対象データの配置サーバとなる確率はr/N、配置サーバとならない確率は(N−r)/Nなので、参照時の平均レイテンシーLrは下記(6)式によって求められる。
Lr=Lwa*r/N+Lwb*(N−r)/N
=Tr*r/N+(Tt+Tr)*(N−r)/N …(6)
以上説明したように、データの参照・更新割合R,Wは上記のように一定時間モニタすることで求められているため、その割合を用いて、レプリカ数rの際の平均レイテンシーLは下記(7)式によって求められる。
L=Lw*W/100+Lr*R/100
={{r*Tw+(r−1)*Tt}*r/N+r*(Tt+Tw)*(N−r)/N}*W/100+{Tr*r/N+(Tt+Tr)*(N−r)/N}*R/100 …(7)
上記の平均レイテンシーLを求める式はレプリカ数rの一次式であるため、平均レイテンシーLが最小となるのは、レプリカ数r=1の時と、レプリカ数r=サーバ台数Nの時とのいずれかである。したがって、r=1の時の平均レイテンシーL1とr=Nの時の平均レイテンシーLNのみを算出し、それらの平均レイテンシーがより低くなるレプリカ数をあらたなレプリカ数とする。すなわち、1からNまでの全てのrについて平均レイテンシーを算出せず、下記のようにr=1の時とr=Nの時の平均レイテンシーのみを算出することで、一意的にレプリカ数を決定することができる。
L1<LNの時、レプリカ数を1とする
L1>LNの時、レプリカ数をNとする
なお、実際のデータ分散システム200の運用時にレプリカ数=1として設定すると、可用性の観点から好ましくないこともある。したがって、「レプリカ数を1とする」決定がなされた場合には、あらかじめ、データ分散システム200の管理者が設定した最小のレプリカ数を設定するような手法を用いてもよい。
以上説明したように、本実施の形態によれば、データの参照頻度だけでなく更新頻度もモニタすることによって、レプリカ数が増えることで逆に処理効率が下がるケースも検出することができる。そのようなケースでは不要なレプリカを削除することで更新処理の効率が下がることを避けられる。また、他のデータのレプリカ数に影響されずに、データごとに個別に最適なレプリカ数を設定可能であり、効率的にデータを配置することができる。
なお、本実施の形態で説明したデータ処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
また、本実施の形態で説明したサーバ装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述したサーバ装置100の連携処理部102の機能(取得部301〜決定部307)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、サーバ装置100を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)相互に通信可能なコンピュータ群を構成するコンピュータを、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択手段、
前記取得手段によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信手段、
前記選択手段によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信手段、
として機能させることを特徴とするデータ処理プログラム。
(付記2)前記コンピュータを、さらに、
前記任意のデータについての処理要求として、当該任意のデータの新規書き込みの処理の要求が入力された場合、当該任意のデータの複製数としてあらかじめ与えられていた値を設定する設定手段、として機能させ、
前記選択手段は、前記設定手段によって前記任意のデータの複製数が設定されると、前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択し、
前記複製数送信手段は、前記設定手段によって設定された前記任意のデータの複製数を前記コンピュータ群に送信し、
前記処理要求送信手段は、前記選択手段によって選択された前記複製数分の各コンピュータに、前記当該任意のデータの新規書き込み処理の要求を送信することを特徴とする付記1に記載のデータ処理プログラム。
(付記3)前記コンピュータを、さらに、
前記設定手段によって前記任意のデータの複製数が設定されると、当該複製数と前記コンピュータ群の総数とが等しいか否かを判断する判断手段、として機能させ、
前記処理要求送信手段は、前記判断手段によって、前記複製数と前記コンピュータ群の総数とが等しいと判断された場合、前記コンピュータ群すべてに、前記当該任意のデータの新規書き込み処理の要求を送信することを特徴とする付記2に記載のデータ処理プログラム。
(付記4)前記判断手段は、前記任意のデータについての処理要求として、前記コンピュータ群のいずれかに配置されている当該任意のデータに対する書き込み処理の要求が入力された場合、前記任意のデータの複製数と前記コンピュータ群の総数とが等しいか否かを判断し、
前記選択手段は、前記判断手段によって前記複製数と前記コンピュータ群の総数とが等しくないと判断された場合に、前記所定のアルゴリズムを用いて、前記コンピュータ群の中から前記任意のデータが配置されているコンピュータを前記複製数分選択し、
前記処理要求送信手段は、前記選択手段によって選択された前記複製数分の各コンピュータへ、前記任意のデータに対する書き込み処理の要求を送信することを特徴とする付記3に記載のデータ処理プログラム。
(付記5)前記処理要求送信手段は、前記任意のデータについての処理要求として、前記コンピュータ群のいずれかに配置されている当該任意のデータに対する参照処理の要求が入力された場合、前記選択手段によって選択された前記複製数分の各コンピュータのいずれか一つへ、当該任意のデータに対する参照処理の要求を送信することを特徴とする付記1〜4のいずれか一つに記載のデータ処理プログラム。
(付記6)前記コンピュータを、さらに、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段として機能させることを特徴とする付記1〜5のいずれか一つに記載のデータ処理プログラム。
(付記7)前記実行手段は、前記処理要求として、前記任意のデータに対する参照処理の要求の送信を受け付けた場合、当該処理要求に応じて実行した当該任意のデータへの参照処理の結果を、前記処理要求の送信元のコンピュータへ返信することを特徴とする付記6に記載のデータ処理プログラム。
(付記8)前記コンピュータを、さらに、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段、として機能させ、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とする付記6または7に記載のデータ処理プログラム。
(付記9)前記決定手段は、前記コンピュータ群の総数を前記任意のデータの複製数とした場合の前記任意のデータに対する処理時間の平均値が所定値以上の場合、前記コンピュータ群の総数を前記任意のデータの複製数に決定することを特徴とする付記8に記載のデータ処理プログラム。
(付記10)前記決定手段は、前記任意のデータの複製数を1とした場合の前記任意のデータへの処理時間の平均値が所定値未満であった場合、前記任意のデータの複製数として設定可能な最小値を複製数に決定することを特徴とする付記8または9に記載のデータ処理プログラム。
(付記11)相互に通信可能なサーバ装置群を構成するサーバ装置であって、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段と、
前記サーバ装置群の中から、前記任意のデータの配置先となるサーバ装置を、所定のアルゴリズムを用いて前記複製数分選択する選択手段と、
前記取得手段によって取得された前記任意のデータの複製数を前記サーバ装置群すべてに送信する複製数送信手段と、
前記選択手段によって選択された前記複製数分の各サーバ装置に、前記処理要求を送信する処理要求送信手段と、
自装置、または、他のサーバ装置から送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段と、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段と、を備え、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記サーバ装置群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記サーバ装置群の中から、前記任意のデータを配置するサーバ装置を、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するサーバ装置に選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するサーバ装置に選択されなくなった場合に前記データを削除することを特徴とするサーバ装置。
(付記12)相互に通信可能なコンピュータ群を構成するコンピュータが、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得工程と、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択工程と、
前記取得工程によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信工程と、
前記選択工程によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信工程と、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行工程と、
任意のタイミングごとに、前記実行工程によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定工程と、を実行し、
さらに、
前記複製数送信工程では、前記決定工程によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択工程では、前記複製数送信工程によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行工程では、自装置が、前記選択工程によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択工程によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理方法。
本実施の形態にかかるサーバ装置のシステム構成を示す説明図である。 本実施の形態にかかるサーバ装置のハードウェア構成を示すブロック図である。 連携処理部の機能的構成を示すブロック図である。 サーバ装置におけるデータ更新処理を示す説明図である。 配置サーバ選択処理の手順を示すフローチャートである。 データ更新処理の手順(更新要求を自装置のアプリ実行部から受信したサーバ装置の場合)を示すフローチャートである。 データ更新処理の手順(更新要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合)を示すフローチャートである。 サーバ装置におけるデータ参照処理を示す説明図である。 データ参照処理の手順(参照要求を自装置のアプリ実行部から受信したサーバ装置の場合)を示すフローチャートである。 データ参照処理の手順(参照要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合)を示すフローチャートである。 レプリカ数変更時のデータ再配置処理を示すフローチャートである。 レプリカ数増加時のデータ再配置処理を示すフローチャートである。 レプリカ数減少時のデータ再配置処理を示すフローチャートである。 データ更新時のレイテンシー算出手順を示す説明図である。 データ参照時のレイテンシー算出手順を示す説明図である。
符号の説明
100 サーバ装置
101 アプリ実行部
102 連携処理部
103 記憶部
110 ロードバランサー
120 リクエスト
301 取得部
302 選択部
303 送受信部
304 設定部
305 判断部
306 実行部
307 決定部

Claims (5)

  1. 相互に通信可能なコンピュータ群を構成するコンピュータを、
    任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段、
    前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択手段、
    前記取得手段によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信手段、
    前記選択手段によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信手段、
    自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段、
    任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段、として機能させ、
    前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
    前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
    前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理プログラム。
  2. 前記決定手段は、前記コンピュータ群の総数を前記任意のデータの複製数とした場合の前記任意のデータに対する処理時間の平均値が所定値以上の場合、前記コンピュータ群の総数を前記任意のデータの複製数に決定することを特徴とする請求項1に記載のデータ処理プログラム。
  3. 前記決定手段は、前記任意のデータの複製数を1とした場合の前記任意のデータへの処理時間の平均値が所定値未満であった場合、前記任意のデータの複製数として設定可能な最小値を複製数に決定することを特徴とする請求項1または2に記載のデータ処理プログラム。
  4. 相互に通信可能なサーバ装置群を構成するサーバ装置であって、
    任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段と、
    前記サーバ装置群の中から、前記任意のデータの配置先となるサーバ装置を、所定のアルゴリズムを用いて前記複製数分選択する選択手段と、
    前記取得手段によって取得された前記任意のデータの複製数を前記サーバ装置群すべてに送信する複製数送信手段と、
    前記選択手段によって選択された前記複製数分の各サーバ装置に、前記処理要求を送信する処理要求送信手段と、
    自装置、または、他のサーバ装置から送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段と、
    任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段と、を備え、
    前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記サーバ装置群すべてに送信し、
    前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記サーバ装置群の中から、前記任意のデータを配置するサーバ装置を、所定のアルゴリズムに応じて前記決定された複製数分選択し、
    前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するサーバ装置に選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するサーバ装置に選択されなくなった場合に前記データを削除することを特徴とするサーバ装置。
  5. 相互に通信可能なコンピュータ群を構成するコンピュータが、
    任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得工程と、
    前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択工程と、
    前記取得工程によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信工程と、
    前記選択工程によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信工程と、
    自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行工程と、
    任意のタイミングごとに、前記実行工程によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定工程と、を実行し、
    さらに、
    前記複製数送信工程では、前記決定工程によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
    前記選択工程では、前記複製数送信工程によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
    前記実行工程では、自装置が、前記選択工程によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択工程によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理方法。
JP2008319530A 2008-12-16 2008-12-16 データ処理プログラム、サーバ装置およびデータ処理方法 Expired - Fee Related JP5396848B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008319530A JP5396848B2 (ja) 2008-12-16 2008-12-16 データ処理プログラム、サーバ装置およびデータ処理方法
US12/547,805 US8577838B2 (en) 2008-12-16 2009-08-26 Computer-readable recording medium storing data processing program, server apparatus, and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008319530A JP5396848B2 (ja) 2008-12-16 2008-12-16 データ処理プログラム、サーバ装置およびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2010146067A true JP2010146067A (ja) 2010-07-01
JP5396848B2 JP5396848B2 (ja) 2014-01-22

Family

ID=42241738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008319530A Expired - Fee Related JP5396848B2 (ja) 2008-12-16 2008-12-16 データ処理プログラム、サーバ装置およびデータ処理方法

Country Status (2)

Country Link
US (1) US8577838B2 (ja)
JP (1) JP5396848B2 (ja)

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043358A (ja) * 2010-08-23 2012-03-01 Toshiba Corp 分散型データベースシステム
WO2012121316A1 (ja) * 2011-03-08 2012-09-13 日本電気株式会社 分散ストレージシステムおよび方法
JP2012221419A (ja) * 2011-04-13 2012-11-12 Hitachi Ltd 情報記憶システム及びそのデータ複製方法
JP2013030035A (ja) * 2011-07-29 2013-02-07 Nippon Telegr & Teleph Corp <Ntt> 呼処理データ保存方法、呼処理データ振り分け装置およびプログラム
JP2013045181A (ja) * 2011-08-22 2013-03-04 Nippon Telegr & Teleph Corp <Ntt> データベースの負荷分散装置
WO2014010023A1 (ja) * 2012-07-09 2014-01-16 富士通株式会社 抽出装置、抽出プログラムおよびシステム
JP2014115929A (ja) * 2012-12-12 2014-06-26 Nec Corp レプリケーションシステム、レプリケーション処理方法及びレプリケーション処理プログラム
WO2014119269A1 (ja) * 2013-02-04 2014-08-07 日本電気株式会社 データセット多重度変更装置、サーバ、およびデータセット多重度変更方法
US8972365B2 (en) 2011-11-24 2015-03-03 Fujitsu Limited Storage system and storage device
JP2015512551A (ja) * 2012-04-06 2015-04-27 エグザブロックス・コーポレーション ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
WO2015166741A1 (ja) * 2014-05-01 2015-11-05 ウイングアーク1st株式会社 インメモリ管理システムおよびインメモリ管理用プログラム
JP2016507079A (ja) * 2013-02-01 2016-03-07 テンセント テクノロジー (シェンジェン) カンパニー リミテッド 音声認識システムにおける負荷分散のためのシステムおよび方法
CN105765575A (zh) * 2013-11-11 2016-07-13 亚马逊科技公司 数据流摄取和持久性技术
US9514137B2 (en) 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9715521B2 (en) 2013-06-19 2017-07-25 Storagecraft Technology Corporation Data scrubbing in cluster-based storage systems
US9774582B2 (en) 2014-02-03 2017-09-26 Exablox Corporation Private cloud connected device cluster architecture
US9830324B2 (en) 2014-02-04 2017-11-28 Exablox Corporation Content based organization of file systems
US9846553B2 (en) 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US10248556B2 (en) 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
US10467105B2 (en) 2013-12-20 2019-11-05 Amazon Technologies, Inc. Chained replication techniques for large-scale data streams
US10474654B2 (en) 2015-08-26 2019-11-12 Storagecraft Technology Corporation Structural data transfer over a network
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US10691716B2 (en) 2013-11-11 2020-06-23 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
US10768830B1 (en) 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US10956246B1 (en) 2018-07-16 2021-03-23 Amazon Technologies, Inc. Isolated read channel management interfaces at streaming data service
US11070600B1 (en) 2018-07-16 2021-07-20 Amazon Technologies, Inc. Optimization techniques to support lagging readers at streaming data service
US11075984B1 (en) 2018-07-16 2021-07-27 Amazon Technologies, Inc. Workload management at streaming data service supporting persistent connections for reads

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101383905B1 (ko) * 2011-12-19 2014-04-17 주식회사 솔박스 해시 함수 결과를 이용한 서버 부하 분산 처리 방법 및 그 장치
US9348707B2 (en) * 2013-12-18 2016-05-24 International Business Machines Corporation Dynamically adjusting the number of replicas of a file according to the probability that the file will be accessed within a distributed file system
US9300478B2 (en) * 2014-02-21 2016-03-29 Symantec Corporation Splitting certificate status responses evenly across multiple distributed certificate status responders
US10209901B2 (en) * 2017-01-04 2019-02-19 Walmart Apollo, Llc Systems and methods for distributive data storage
JP2023048464A (ja) * 2021-09-28 2023-04-07 株式会社リコー メディア配信システム、通信システム、配信制御装置、配信制御方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067377A (ja) * 1999-06-17 2001-03-16 Internatl Business Mach Corp <Ibm> インターネット環境での負荷の分散とリソース管理を統合したシステム及び方法
WO2006059476A1 (ja) * 2004-12-01 2006-06-08 Brother Kogyo Kabushiki Kaisha データ共有システム、及び複製コンテンツデータ保存制御装置等
JP2007065714A (ja) * 2005-08-29 2007-03-15 Nippon Telegr & Teleph Corp <Ntt> ピュアー型p2p通信における動的レプリカ制御方法およびそれを具備した装置、ならびにそのプログラム
JP2007133503A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 分散システムにおける情報共有方法及び情報共有システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02231676A (ja) 1989-03-06 1990-09-13 Toshiba Corp 分散型データベースシステム
US6178441B1 (en) * 1998-09-21 2001-01-23 International Business Machines Corporation Method and system in a computer network for the reliable and consistent ordering of client requests
US7281045B2 (en) * 2004-08-26 2007-10-09 International Business Machines Corporation Provisioning manager for optimizing selection of available resources
JP5250955B2 (ja) * 2006-10-05 2013-07-31 富士通株式会社 データ処理システムのバックアップ制御装置及びシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067377A (ja) * 1999-06-17 2001-03-16 Internatl Business Mach Corp <Ibm> インターネット環境での負荷の分散とリソース管理を統合したシステム及び方法
WO2006059476A1 (ja) * 2004-12-01 2006-06-08 Brother Kogyo Kabushiki Kaisha データ共有システム、及び複製コンテンツデータ保存制御装置等
JP2007065714A (ja) * 2005-08-29 2007-03-15 Nippon Telegr & Teleph Corp <Ntt> ピュアー型p2p通信における動的レプリカ制御方法およびそれを具備した装置、ならびにそのプログラム
JP2007133503A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 分散システムにおける情報共有方法及び情報共有システム

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043358A (ja) * 2010-08-23 2012-03-01 Toshiba Corp 分散型データベースシステム
WO2012121316A1 (ja) * 2011-03-08 2012-09-13 日本電気株式会社 分散ストレージシステムおよび方法
US9342574B2 (en) 2011-03-08 2016-05-17 Nec Corporation Distributed storage system and distributed storage method
JP5765416B2 (ja) * 2011-03-08 2015-08-19 日本電気株式会社 分散ストレージシステムおよび方法
JP2012221419A (ja) * 2011-04-13 2012-11-12 Hitachi Ltd 情報記憶システム及びそのデータ複製方法
JP2013030035A (ja) * 2011-07-29 2013-02-07 Nippon Telegr & Teleph Corp <Ntt> 呼処理データ保存方法、呼処理データ振り分け装置およびプログラム
JP2013045181A (ja) * 2011-08-22 2013-03-04 Nippon Telegr & Teleph Corp <Ntt> データベースの負荷分散装置
US8972365B2 (en) 2011-11-24 2015-03-03 Fujitsu Limited Storage system and storage device
US9628438B2 (en) 2012-04-06 2017-04-18 Exablox Consistent ring namespaces facilitating data storage and organization in network infrastructures
JP2015512551A (ja) * 2012-04-06 2015-04-27 エグザブロックス・コーポレーション ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
WO2014010023A1 (ja) * 2012-07-09 2014-01-16 富士通株式会社 抽出装置、抽出プログラムおよびシステム
JP2014115929A (ja) * 2012-12-12 2014-06-26 Nec Corp レプリケーションシステム、レプリケーション処理方法及びレプリケーション処理プログラム
JP2016507079A (ja) * 2013-02-01 2016-03-07 テンセント テクノロジー (シェンジェン) カンパニー リミテッド 音声認識システムにおける負荷分散のためのシステムおよび方法
WO2014119269A1 (ja) * 2013-02-04 2014-08-07 日本電気株式会社 データセット多重度変更装置、サーバ、およびデータセット多重度変更方法
JPWO2014119269A1 (ja) * 2013-02-04 2017-01-26 日本電気株式会社 データセット多重度変更装置、サーバ、およびデータセット多重度変更方法
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9514137B2 (en) 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
US9715521B2 (en) 2013-06-19 2017-07-25 Storagecraft Technology Corporation Data scrubbing in cluster-based storage systems
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
US10248556B2 (en) 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
JP2017501515A (ja) * 2013-11-11 2017-01-12 アマゾン・テクノロジーズ・インコーポレーテッド データストリーム取り込み及び永続性ポリシ
CN105765575A (zh) * 2013-11-11 2016-07-13 亚马逊科技公司 数据流摄取和持久性技术
US10691716B2 (en) 2013-11-11 2020-06-23 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
CN105765575B (zh) * 2013-11-11 2019-11-05 亚马逊科技公司 数据流摄取和持久性技术
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US10467105B2 (en) 2013-12-20 2019-11-05 Amazon Technologies, Inc. Chained replication techniques for large-scale data streams
US9774582B2 (en) 2014-02-03 2017-09-26 Exablox Corporation Private cloud connected device cluster architecture
US9830324B2 (en) 2014-02-04 2017-11-28 Exablox Corporation Content based organization of file systems
JP2015212855A (ja) * 2014-05-01 2015-11-26 ウイングアーク1st株式会社 インメモリ管理システムおよびインメモリ管理用プログラム
WO2015166741A1 (ja) * 2014-05-01 2015-11-05 ウイングアーク1st株式会社 インメモリ管理システムおよびインメモリ管理用プログラム
US10474654B2 (en) 2015-08-26 2019-11-12 Storagecraft Technology Corporation Structural data transfer over a network
US9846553B2 (en) 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US10768830B1 (en) 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US10956246B1 (en) 2018-07-16 2021-03-23 Amazon Technologies, Inc. Isolated read channel management interfaces at streaming data service
US11070600B1 (en) 2018-07-16 2021-07-20 Amazon Technologies, Inc. Optimization techniques to support lagging readers at streaming data service
US11075984B1 (en) 2018-07-16 2021-07-27 Amazon Technologies, Inc. Workload management at streaming data service supporting persistent connections for reads
US11509700B2 (en) 2018-07-16 2022-11-22 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US11621999B2 (en) 2018-07-16 2023-04-04 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US11675501B2 (en) 2018-07-16 2023-06-13 Amazon Technologies, Inc. Streaming data service with isolated read channels

Also Published As

Publication number Publication date
US20100153337A1 (en) 2010-06-17
JP5396848B2 (ja) 2014-01-22
US8577838B2 (en) 2013-11-05

Similar Documents

Publication Publication Date Title
JP5396848B2 (ja) データ処理プログラム、サーバ装置およびデータ処理方法
US10817343B2 (en) Provisioning of devices
JP4491273B2 (ja) ストレージシステム、ファイルアクセス制御プログラム及びファイルアクセス制御方法
JP2004127300A (ja) コンピュータシステム、仮想記憶システム、および仮想記憶システム動作方法
JP2018518733A (ja) ファイル操作方法及び装置
JP2010250446A (ja) ファイル制御システムおよびそれに用いるファイル制御計算機
US20220335007A1 (en) Method and system for using dynamic content types
US9081720B2 (en) Information processing apparatus, setting information management method and recording medium
JP2010020441A (ja) 計算機システム、構成管理方法及び管理計算機
JP5964950B2 (ja) 計算機システム、データ配置管理方法及びプログラム
JP5092897B2 (ja) データ移行処理プログラム、データ移行処理装置およびデータ移行処理方法
JP2005208999A (ja) 仮想マシン管理プログラム
JP5984552B2 (ja) 負荷分散システム、負荷分散システムの制御方法、およびコンピュータプログラム
JP5792325B2 (ja) 計算機システム、データ管理方法及びプログラム
JP6194875B2 (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
US20180159737A1 (en) Method for Remote Management of Multiple Device Configurations
JP5247622B2 (ja) データベースサーバ、データ振分方法及びサーバシステム
JP5673224B2 (ja) 情報管理装置、情報管理方法、及びプログラム
JP2009037564A (ja) ディスク管理プログラム、ディスク管理方法及びディスク管理装置
JP7110615B2 (ja) 情報処理装置、情報処理システム、情報処理方法、及び、プログラム
JP2017207805A (ja) 情報処理装置、及び情報処理システム
JP2010218235A (ja) アーカイブ装置、分散管理装置および分散管理プログラム
JP2011008361A (ja) 機器管理装置、機器管理システム、機器設定方法、機器設定プログラム、及びそのプログラムを記録した記録媒体
JP6736932B2 (ja) 情報処理システム、ストレージ装置、情報処理方法及びプログラム
US20120079094A1 (en) System and Method for Data Transfer of Object Properties

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees