JP2016062609A - コンピュータ実装された動的シャーディング方法 - Google Patents

コンピュータ実装された動的シャーディング方法 Download PDF

Info

Publication number
JP2016062609A
JP2016062609A JP2015178972A JP2015178972A JP2016062609A JP 2016062609 A JP2016062609 A JP 2016062609A JP 2015178972 A JP2015178972 A JP 2015178972A JP 2015178972 A JP2015178972 A JP 2015178972A JP 2016062609 A JP2016062609 A JP 2016062609A
Authority
JP
Japan
Prior art keywords
shard
store
subrange
local
shard store
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
JP2015178972A
Other languages
English (en)
Other versions
JP6198210B2 (ja
Inventor
レネ ダルアン カール
Rene D'halluin Carl
レネ ダルアン カール
デ スフレイヴェル フレデリク
De Schrijver Frederik
デ スフレイヴェル フレデリク
マールス ヨッヘン
Maes Jochen
マールス ヨッヘン
レイモンド アグネス スルートメーカース ロマン
Raymond Agnes Slootmaekers Romain
レイモンド アグネス スルートメーカース ロマン
トランズ ニコラス
Trangez Nicolas
トランズ ニコラス
ドムス ヨハン
Doms Jan
ドムス ヨハン
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.)
Amplidata NV
Original Assignee
Amplidata NV
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 Amplidata NV filed Critical Amplidata NV
Publication of JP2016062609A publication Critical patent/JP2016062609A/ja
Application granted granted Critical
Publication of JP6198210B2 publication Critical patent/JP6198210B2/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • 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/21Design, administration or maintenance of databases
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】コンピュータに実装された動的シャーディング方法を提供する。【解決手段】少なくとも1個のキー(12)が指すデータ(11)のリクエスト(13)を扱う際に、−リクエスト(13)を所定シャードストア(20)に提供するステップ、−当該所定シャードストア(20)が、自身の局所的部分範囲集合(42)により、当該少なくとも1個のキー(12)が当該所定シャードストア(20)に格納されたシャード(30)の局所的部分範囲(40)に存在するか否かを検証するステップ、および−少なくとも1個のキー(12)が、当該所定シャードストア(20)に格納されたシャード(30)の局所的部分範囲(40)に存在しない場合、当該所定シャードストア(20)の局所的部分範囲集合(42)を含むメッセージ(60)を返送するステップ。【選択図】図2

Description

本発明は一般に、順序付けられた大域的範囲に含まれるキーにより識別可能なデータを含むデータベースの動的シャーディングを行うコンピュータ実装された方法に関する。
データベースシャードとは、データベースの水平方向の区画のことである。そのような個々の区画の各々をシャードまたはデータベースシャードと称する。水平分割とは、データベースの行の異なる部分集合が別々の水平方向の区画に保持されるようなデータベースの設計原理である。従ってそのような水平方向の区画がシャードを形成する。データベースが水平方向に複数のシャードに分割されている場合、複数のシャードを、例えばデータベースサーバである異なるシャードストアに配置することができるため、スケーラビリティの観点から潜在的な利点が得られ、従って、単一のデータベースサーバの性能および記憶容量の制限を超えてデータベースを拡張することができる。
米国特許出願公開第2014/0108421号明細書 国際公開第2013/147785号パンフレット 米国特許出願公開第2012/0271795号明細書 米国特許出願公開第2012/0254175号明細書 国際公開第2012/068184号パンフレット 欧州特許第2469411号明細書 欧州特許第2672387号明細書
データベースをシャーディングする各種の方法を用いてこのようなスケーリングを満たすことができ、シャーディングをより容易にすべく異なるシャードストアに跨ってシャーディングおよび負荷バランシングを自動化する分割データベースアーキテクチャが出現している。これらのアーキテクチャは典型的には、キーに基づくハッシュ分割または範囲分割を用いて、データベースを格納している分散コンピュータシステムのシャードストアにデータを割り当てる。キーに基づくハッシュの例として、例えば(特許文献1)に記述されており、キーのモジュラス形式のハッシュまたは洗練されたハッシュが計算され、各シャードストアに対して分散のバランスが良いと思われるこれらの計算されたハッシュの特定の範囲が割り当てられる。このような方式における第1の問題は、大規模なデータベースシステムにおいて、キーに基づいてこれらのハッシュを計算するに膨大な計算能力および時間を必要とし、従ってこれらのキーが指すデータを求めるリクエストを扱う際に待ち時間が増大することである。また、複雑なハッシュ化機構を用いる場合であっても、特にキーおよび当該キーに関連付けられたデータを事前に高い信頼性で評価できない大規模分散データベースの場合、異なるデータストアの間でバランスの良い分散を保証することは困難である。
更なる問題として、例えば(特許文献1)に記述されているように、分散動作の割合が高い分散データベースシステムの性能低下である。そのような分散動作の実行中に、例えば単一の顧客の注文履歴のリスト等、複数のキーが指すデータを求めるリクエストを実行するために複数のシャードストアにアクセスしなければならない。分散動作の割合を減らして、1個のシャードの読出し/書込み動作の割合を増やすために、(特許文献1)は、単調なキー範囲を、補助的なハッシング方法によりレコードまたは行が分散された複数のシャードストアと相関付けるシャード制御レコードの使用を提案している。しかし、この方式では、図3に示すように特定の顧客IDと相関付けられたデータを扱う際に、1個のシャードの読出し/書込み動作が増大し、また、シャード制御レコードは当該メタデータを個々のキーレベルで格納する必要無しにキー範囲に関連付けられたシャードリストを提供するが、データを検索する必要があるリストの全てのキーについて、シャードリストのどのシャードストアにアクセスするかを決定するために補助ハッシュを計算する必要が依然としてある。また、単調キー、例えば顧客IDを用いることで、例えばユーザーによる検索および/または選択のために顧客の順序付けられたリストを作成する必要がある標準的なアプリケーションレベルの状況で性能が低下してしまう。例えばアルファベット順にソートされた顧客リストを順にめくっていくユーザーインターフェースがユーザーに提示されるような標準的なケースでは、アルファベット順にソートされたリストの隣接する顧客の単調な顧客idが必ずしも同一の顧客id範囲に存在するとは限らず、たとえ同一範囲に存在する場合であっても、それらがシャードリスト内の同一シャードストアに格納されている保証がないため、シャード制御レコードに対するアクセスリクエストの個数が膨大になるのは明らかである。また、(特許文献1)の方式では、システムの全てのシャードストアにアクセス可能な中央拠点で常時最新のシャード制御レコードを必要とするため、障害が一箇所に集中し、特に多数のシャードストアが含まれる大規模分散データベースシステムにおいて、そのようなシステムのスケーラビリティおよび応答性に対する制約となる。
データベースをシャーディングする更なる方法が(特許文献2)により知られており、複製オブジェクトストレージシステム用の索引がオブジェクトを、ストレージノード間で分散させるために用いたものと同一のハッシュに基づくシャーディング方法によりシャーディングし、次いでこれらの索引シャードをシステム内の全てのストレージノード間で分散させる。ここではまた、異なるストレージノードに格納された全ての索引シャードを同期させておくことが必要であるため待ち時間が長くなり、そのようなシステムのスケーラビリティが制約されてしまう。また、索引がハッシュに基づくシャードを生成するため、例えばフォルダ、グループ、ラベル等の選択されたコンテナに格納されたデータオブジェクトのアルファベット順にソートされたリストを一覧表示するような標準動作を実行する際に複数の異なるシャードストアにアクセスする必要がある分散動作の割合が高くなってしまう。この現象は更に、シャーディングされた索引に対してなされたリクエストおよびデータオブジェクト自体に関するリクエストの両方のレベルで顕著である。
データベースをシャーディングする更なる方法が(特許文献3)により知られており、協調サービスがキーの全範囲を、当該キーの全範囲の一部であるキーの局所的部分範囲に各々が責任を負う複数のノードと相関付けるリクエストの分散を管理する。各々のノードのキーの局所的部分範囲は、ノードの個数およびデータベーステーブル内の行またはキーの個数に応じて選択されている。このようなシステムでは、ノード上の全てのキーの局所的部分範囲が互いに、且つ協調サービスと同期していることが必要とされるため、スケーラビリティが制約される。また、キーの全範囲用のデータベースにおけるキーの分散について一切の知識が利用できない場合、選択されたキーの局所的部分範囲に起因してノード間でのデータの分散のバランスが失われるリスクが高い。
データベースをシャーディングする更なる方法が(特許文献4)により知られており、当該データベースが、順序付けられた大域的範囲に含まれるキーにより識別可能なデータを含んでいる。チャンクとも称する複数のシャードが用意されていて、各シャードは、局所的部分範囲で少なくとも1個のキーが指すデータを求めるリクエストを扱うべく構成されていて、当該局所的部分範囲は、前記順序付けられた大域的範囲の順序付けられた部分範囲を含み、例えばキーの最小値とキーの最大値との間の範囲で定義される。正しいシャードにリクエストをルーティングするルータプロセスが、格納する構成サーバからの情報、および各シャードに関する情報、例えば最大および最小キー値、および当該シャードが格納されているシャードストアにアクセスする。構成サーバの当該情報が、各シャードストアでの実際の状況と常時同期している必要があるため、待ち時間が長くなり、スケーラビリティが制約されることは明らかである。システムをリバランシングする際の柔軟性を向上させるべく、各シャードの最大サイズが例えば200MBに制限されていて、シャードが当該最大サイズに達したならば2個の新規のシャードに分割されて、各々が分割されたシャードの局所的部分範囲のある割合を含むようにする。これにより、システムの各シャードストアで多数の小さいシャードが利用可能であり、単にこれらの小さいシャードを自身のシャードストアから、負荷が小さい別のシャードストアへ移動させることによりリバランシングを行うことができる。しかし、これを行うには、構成サーバが、シャードの個数が多く、新規のシャードが頻繁に生成され、およびシャードストア間でシャードが頻繁に再配置されることに起因して頻繁に生じる更新と常時同期していることが必要であるため、リクエストが実行可能になる前に構成サーバにより最新のコンフィギュレーション情報でルータを更新しなければならず、システムのスケーラビリティが制約されて待ち時間が長くなる。また、シャードのサイズが小さいほど、キーの順序付けられた部分集合、例えばコンテナ内のデータオブジェクトのアルファベット順に順序付けられたリスト、フォルダ内のファイル、テーブル内の顧客等に関するデータを求めて発行される標準的なリクエストに起因して複数のシャードストアに跨って分散された複数のシャードにアクセスする必要が生じ、そのため単一のシャード動作の割合が減少し、それに応じて性能低下が生じる恐れが増大する。
動的にスケーラブルな冗長分散ストレージシステムが更に(特許文献5)に開示されている。同文献は、複製、例えばRAIDを用いるか、または誤り訂正符号すなわちECC、例えば消去符号を用いて一定レベルの冗長性を実現するストレージシステムを開示している。当該ストレージシステムは、ファイル識別子およびデータブロックを、ファイルおよびデータブロックを格納するストレージデバイスと相関付けるファイルマネージャコントローラおよびストレージマネージャコントローラを含んでいる。当該ファイルマネージャコントローラは、分散ハッシュテーブルを用いて実装することができ、これらは例えば、本明細書の図2Cに示すようにファイルマネージャが責任を負う一意なファイル識別子の値の範囲を相関付けるエントリを含むハッシュテーブルリストとして実装されている。図示するように、各ファイルマネージャは、円形のキーの全範囲の一部である自身のキー値の局所的部分範囲を認識している必要がある。また、各ファイルマネージャは少なくとも、自身の局所的部分範囲に先行する局所的部分範囲を管理するファイルマネージャ、および自身の局所的部分範囲に後続する部分範囲を管理するファイルマネージャに関する情報を認識していなければならない。分散ハッシュテーブルの分散的特性に起因して、リストの作成には時間を要し、その間にノードの障害または分散ハッシュテーブルのリバランシングが発生するかもしれないため、ノードが利用できる当該ハッシュテーブルリストが使用時に完全に正確であるとは限らない点に注意されたい。本システムは、たとえ情報が陳腐化していても、陳腐化した情報はともかく所望のノードにより近い範囲のノードに導いてくれるため、1個以上の中間ホップを経て最終的に所望のノードにアクセスできるとの仮定に依存している。しかし、大規模分散データベースシステムではこの仮定は必ずしも真ではなく、例えば、隣接ノードおよび/またはそれらの対応する局所的部分範囲の情報が陳腐化している場合、取得不能なデータまたは受容できない待ち時間が生じる恐れがある。依然として互いを隣接ノードと確認する2個の陳腐化したノードの間で、リクエストが行きつ戻りつする状況を想像するのは難しくない。また、ハッシュに基づくシャーディングでは、各キー、例えばファイル識別子に対して適切なハッシュを生成する必要があるため、上述のように標準的なリクエストを実行する、例えばコンテナ内のデータオブジェクトの、フォルダ内のファイルの、テーブル内の顧客等のアルファベット順に順序付けられたリストを作成する際に単一シャード動作の割合が減少してしまう。この性能低下は、(特許文献5)のシステムではシステムが一定レベルのリバランシングの柔軟性を持たせるために、1個はファイルメタデータの管理に責任を負うファイルマネージャ用、1個はストレージデバイスの管理に責任を負うストレージマネージャ用の2個の分散ハッシュテーブルシステムを用いるため、更に顕著である。
従って、上述の従来技術の短所を克服すると共に、キーの順序付けられた部分集合に関するデータが得られる標準的なリクエストを扱う際の性能向上を保証する堅牢且つ簡単にスケーラビリティに保証する、改良された、コンピュータに実装されたデータベースの動的シャーディング方法に対するニーズが依然としてある。
本発明の第1の態様によれば、順序付けられた大域的範囲に含まれるキーにより識別可能なデータを含むデータベースの動的シャーディングを行うコンピュータ実装された方法を提供し、本方法は、
−各々がシャードストア識別子を含み且つ各々が記憶容量制限により制限されている複数のシャードストアを提供するステップと、
−各シャードが局所的部分範囲内で少なくとも1個のキーが指すデータを求めるリクエストを扱うべく構成され、当該局所的部分範囲が前記順序付けられた大域的範囲の順序付けられた部分範囲を含む複数のシャードを提供するステップと、
−単一のシャードが単一のシャードストアを越えて延在しないようシャードストアに複数のシャードを提供するステップと、
−シャードストアの各々に1個の局所的部分範囲集合を、各々の局所的部分範囲集合が自身の対応するシャードストアに格納されたシャードの1個以上の局所的部分範囲を含むように提供するステップと、
−少なくとも1個のキーが指すデータを求める前記リクエストを扱う際に、
−当該リクエストを所定シャードストアに提供するステップと、
−当該所定シャードストアが、自身の局所的部分範囲集合により、当該少なくとも1個のキーが、当該所定シャードストアに格納されたシャードの局所的部分範囲に存在するか否かを検証するステップと、
−少なくとも1個のキーが当該所定シャードストアに格納されたシャードの局所的部分範囲に存在しない場合、当該所定シャードストアの局所的部分範囲集合を含むメッセージを返送するステップとを含んでいる。
これにより、各シャードストアは自身の局所的部分範囲集合を認識するだけでよいため、大規模なデータベース環境においても堅牢な動作を保証することができる。これにより、そのような情報を全てのシャードストアに跨るシステム全体で、および/または中央管理アプリケーションと同期させる必要があるシステムに存在する一切の待ち時間が回避される。シャードストアは、自身の局所的部分範囲のいずれにも存在しないキーを含むリクエストへの応答として、当該局所的部分範囲集合を含むメッセージを返送することにより、自身が格納する部分範囲に関する最新のフィードバックを要求元に対し、当該要求元に関係する時だけ、動的に提供する。また、順序付けられたキーの部分範囲内のキーを格納しているシャードを用いることで、キーが自身の局所的部分範囲集合の局所的部分範囲に存在するか否かを確認するだけでよいため、リクエストの1個以上キーを扱うことが可能か否かをシャードストアが確認する複雑さが軽減される。これらの局所的部分範囲が順序付けられた部分範囲であるため、この確認は、単にキーが部分範囲の境界間に存在するか否か、例えばそのような順序付けられた部分範囲の最下限よりも大きいかまたは最上限よりも小さいか確認するだけで実行できる。この確認を実行するためにキーのハッシングその他一切の変換を実行する必要がない。
順序付けられた大域的範囲の順序付けられた部分範囲内を求めるリクエストを扱うべく構成されたシャードを用いることにより、キーの順序付けられた部分集合に関するデータを求める標準的なリクエストを効率的に扱うことが可能である。そのようなキーの順序付けられた部分集合を生成する際に問い合わせを必要とするシャードの個数が最小限に、最適な場合は当該キーの部分集合を含む単一のシャードに、またいかなる場合でも高々当該キーの順序付けられた部分集合全体にわたる部分範囲に関するシャードに抑えられることは明らかである。これは例えば、分散オブジェクトストレージシステム環境において、より高水準の階層的グループの1個以上の名称の後に続くオブジェクトの名称で形成される、一意なオブジェクト識別子により順序付けられたキーが渡されることを意味する。これにより、そのようなデータを求める標準的なリクエストがアルファベット順にソートされたリスト形式のデータオブジェクトを順次調べる必要がある場合、当該リクエストは、表示すべき第1のキーを含むキーの部分範囲を有するシャードにアクセスして、例えば当該シャードから所定個数の後続キーが指すデータを含む当該シャードのアルファベット順に順序付けられた部分集合の検索を継続することにより、扱うことができる。
更なる実施形態によれば、当該所定シャードストアが前記メッセージを返送する場合、当該リクエストは次いで別のシャードストアに渡される。
これにより、シャードストア同士または中央管理プロセスとの広範な同期化を必要としない、データベースの動的シャーディングを行う堅牢、簡単且つ高度にスケーラブルな方法が実現される。各シャードストアは自身に格納されたシャードに存在するキーに関するリクエストを効率的に扱うことができ、局所的部分範囲集合にキーが存在しない旨を要求元に効率的に通知することにより、当該リクエストの当該部分も同様に効率的に扱われるように別のシャードストアにカスケードできるようにする。これにより、シャードの極めて動的な、分散リバランシングが生じる大規模分散処理システムであっても、各リクエストを受けたシャードストアは効率的に、且つ自身の局所的部分範囲集合の形式で最新の局所的情報に基づいて、リクエストを扱うことが可能か否かを判断し、可能でなければ要求元に自身の現在の局所的状態の最新情報を渡すことが可能になる。
更なる実施形態によれば、本方法は更に、
−前記複数のシャードストアに接続可能であって少なくとも1個のキーが指すデータを求めるリクエストを扱うべく適合されたシャードルータを提供するステップと、
−順序付けられた大域的範囲の大域的部分範囲をシャードストア識別子と相関付けるべく適合された大域的部分範囲集合を前記シャードルータに提供するステップと、
−少なくとも1個のキーが指すデータを求めるリクエストを扱う際に、
−当該リクエストをシャードルータに提供するステップと、
−シャードルータが、リクエストの少なくとも1個のキーを含む大域的部分範囲と相関付けられたシャードストア識別子を判定するステップと、
−シャードルータが、当該相関付けられたシャードストア識別子の所定シャードストアに当該リクエストを渡すステップと、
−当該所定シャードストアが、自身の局所的部分範囲集合により、当該少なくとも1個のキーが当該所定シャードストアに格納されたシャードの局所的部分範囲に存在するか否かを検証するステップと、
−少なくとも1個のキーが、当該所定シャードストアに格納されたシャードの1個以上の局所的部分範囲に存在しない場合、
−当該所定シャードストアの局所的部分範囲集合を含むメッセージを返送するステップと、
−シャードルータが、所定シャードストアのシャードストア識別子を、前記メッセージの局所的部分範囲集合の局所的部分範囲に対応する大域的部分範囲と相関付けることにより、前記メッセージに基づいて自身の大域的部分範囲集合を更新するステップとを含んでいる。
これにより、局所的部分範囲集合を含むメッセージにより大域的部分範囲集合に対して実行される更新が、データベースシステムに渡される実際のリクエストに含まれるキーの部分範囲の更新に焦点を合わせているため、大域的部分範囲集合が動的且つ効率的に更新される。ルータはこれにより、一から始める場合であっても、データを求めるリクエストを扱いながら動的に自身の大域的部分範囲集合を生成することができるため、不要な同期化オーバーヘッドおよび待ち時間が生じることなく、任意のシャードストア内のシャードに対する分散された局所的変更に高い信頼性を以て対処するのに充分な堅牢性を依然として維持しながら、自身のルーティング効率を系統的に向上させることができる。
更なる実施形態によれば、リクエストを扱う所定シャードストアの局所的部分範囲集合は更に、自身の各シャードストア識別子と相関付けられた他のシャードストアに格納されたシャードの1個以上の外部部分範囲を含む外部部分範囲集合を含み、本方法は更に、
所定シャードストアによりリクエストを扱う際に、当該所定シャードストアに格納されたシャードの1個以上の局所的部分範囲に少なくとも1個のキーが存在しない場合、
−局所的部分範囲集合を含むメッセージを返送するステップと、
−当該リクエストの少なくとも1個のキーが当該局所的部分範囲集合の外部部分範囲集合の所定の外部部分範囲に含まれているか否かを検証するステップと、
−当該リクエストを次いで、当該外部部分範囲と相関付けられたシャードストア識別子を有する別のシャードストアに提供するステップとを含んでいる。
これにより、大規模分散データベース環境における堅牢性を犠牲にすることなく、ルーティング効率が更に最適化される。要求元がシャードストアに対し、例えば、要求元が当該シャードストアに格納されたシャードに関する陳腐化した情報に基づいてリクエストを発行した等により、当該シャードストアの局所的部分範囲集合にもはや存在しないキーを求めるリクエストを送信した場合、これは、リバランシング動作の間にシャードのデータの少なくとも一部が別のシャードへ移動した結果である可能性が比較的高い。他のシャードストアの部分範囲に関する情報を外部部分範囲の形式で格納することで、当該特定のシャードストア自身に格納されたシャードの局所的部分範囲に関する情報を要求元に提供すべく用いるものと同一のメッセージ送信機構により、特定のシャードストアにより当該情報を要求元に提供する簡単な方法が得られる。他のシャードストアに格納されたシャードに関する当該情報は従って、リクエストに関連するシャードを含むと思われる当該別のシャードストアへの効率的なルーティングを実現することができる。
更なる実施形態によれば、本方法は更に、当該所定シャードストアに格納されたシャードの1個以上の局所的部分範囲に少なくとも1個のキーが存在しない場合、
−シャードルータが更に、別のシャードストアのシャードストア識別子を、前記メッセージの外部部分範囲集合の所定の外部部分範囲に対応する大域的部分範囲を相関付けることにより、前記メッセージに基づいて自身の大域的部分範囲集合を更新するステップを含んでいる。
これにより、大域的部分範囲集合もまた外部部分範囲により、リクエストを取扱う間に、効率的且つ動的に更新されるため、ルーティング効率が更に向上する。外部部分範囲に基づく大域的部分範囲集合の更新の後、当該外部部分範囲と相関付けられたシャードストアに当該リクエストをルーティングした後で当該更新が検証され、自身の局所的部分範囲集合にキーが存在しない場合に、大域的部分範囲集合を更新する更なるメッセージが生成されることは明らかである。
更なる実施形態によれば、移動部分範囲内の全てのキーが指すデータを含む移動シャードの、所定シャードストアから別のシャードストアへの移動動作の結果、移動部分範囲が所定シャードストアの局所的部分範囲集合から除去されて、別のシャードストアのシャードストア識別子と相関付けられた外部部分範囲として所定シャードストアの外部部分範囲集合に追加される。
これにより、移動動作から生じた情報は、ルーティング動作の効率を向上させるべく、移動動作が開始されたシャードストアで依然として利用可能である。
更なる実施形態によれば、移動部分範囲内の全てのキーが指すデータを含む移動シャードの、所定シャードストアから別のシャードストアへの前記移動動作の結果、移動部分範囲が局所的部分範囲として別のシャードストアの局所的部分範囲集合に追加される。
これにより、移動動作から生じた情報は、そのような分散環境において整合性が保証できるように移動動作が設定されたシャードストアで利用可能になる。
更なる実施形態によれば、移動動作の実行中に、移動動作に関与する所定シャードストアおよび/または別のシャードストアの局所的部分範囲集合だけが移動部分範囲に基づいて更新される。
これにより、リバランシング動作の結果、移動動作に関与するシャードストアに対する局所的更新しか行われないため、同期化オーバーヘッドおよび待ち時間が減少する。
更なる実施形態によれば、移動動作に関与する所定シャードストアおよび別のシャードストアは、公開局所的部分範囲集合および非公開局所的部分範囲集合を含み、本方法は更に、そのような移動動作の実行中に、
−所定シャードストアが移動部分範囲に基づいて自身の公開局所的部分範囲集合を更新するステップと、
−所定シャードストアが移動シャードを別のシャードストアへ送信するステップと、
−別のシャードストアが所定シャードストアから移動シャードを受信するステップと、
−移動シャードが正しく受信された場合、別のシャードストアが、
−自身の公開局所的部分範囲集合および自身の非公開局所的部分範囲集合の両方を移動部分範囲に基づいて更新するステップと、
−所定シャードストアに移動肯定応答メッセージを送信するステップと、
−所定シャードストアが別のシャードストアから前記移動肯定応答メッセージを受信した場合、所定シャードストアが自身の非公開局所的部分範囲集合を更新し、所定シャードストアが移動シャードを削除するステップと含んでいる。
これにより、結果的に頻繁な移動動作が生じる自動化された動的なリバランシング動作を伴う大規模分散データベースにおいても、最高度の利用可能性および整合性を保証する、実装が簡単、堅牢且つ効率的な移動動作が実現される。
更なる実施形態によれば、所定シャードストアが、移動動作を実行してから所定時間後に、自身の公開局所的部分範囲集合が、自身の非公開局所的部分範囲集合とは異なることを検知した場合、所定シャードストアは移動シャードを別のシャードストアへ再送信する。
これにより、例えばネットワーク障害により、または移動動作に関与するシャードストアが一時的に利用できないために、移動動作が中断された場合であっても、整合性を保証する効率的な機構が提供される。シャードストアは、ネットワークまたは他のシャードストアの動作状態に関する状態情報を認識している必要がなく、移動動作の再試行が必要であるか否かを評価するために自身の公開局所的部分範囲集合および自身の非公開局所的部分範囲集合の形式で局所的情報に依存することができる。
更なる実施形態によれば、別のシャードストアに対して、自身の公開局所的部分範囲集合に既に存在する移動部分範囲を有する所定シャードストアにより移動シャードが提供されている場合、別のシャードストアは、移動シャードを受信することなく所定シャードストアに対して移動肯定応答メッセージを送信する。
これにより、特に、移動動作の目的地である別のシャードストアが移動シャードを正しく受信したが、後続の移動肯定応答メッセージが所定シャードストアに到達しなかった状況で、効率的なリバランシング動作が保証される。所定シャードストアが次いで移動動作を再試行した場合、別のシャードストアは、正常な移動動作の実行中と同一の機構を有する所定シャードストアに対して移動シャードの存在を確認するが、同一の移動動作を反復的な取扱いに一切の不要なリソースを消費することはない。
更なる実施形態によれば、移動シャードは、所定シャードストアのシャードの少なくとも一部を含むように生成される。
更なる実施形態によれば、移動動作の各々の移動シャードのサイズが所定の移動サイズ閾値以下であるように、複数の移動動作が移動ジョブに基づいて生成され、当該移動ジョブは、当該複数の移動動作により、
−移動ジョブキー範囲、
−キーの移動ジョブ量、および/または
−データの移動ジョブサイズ
の移動が完了すまで全てのデータを所定シャードストアから別のシャードストアへ移動させるリクエストを含んでいる。
更なる実施形態によれば、所定シャードについて、当該所定シャードの局所的部分範囲に隣接する局所的部分範囲を有する同一シャードストアで別のシャードが利用可能であることが検知された場合、当該所定シャードは当該別のシャードにマージされてマージ済みシャードを形成すると共に、局所的部分範囲集合が、所定シャードの隣接する局所的部分範囲および別のシャードの両方を、マージ済みシャードのマージ済み局所的部分範囲にマージすることにより更新される。好適には、所定シャードのサイズはマージするサイズ閾値を超えない。好適には、マージサイズ閾値は移動サイズ閾値よりも大きい。
これにより、大規模分散データベースにおいても、移動動作中における堅牢性および利用可能性を最適化すべく多数の小さい移動シャードを伴うリバランシング動作を、シャードストアに局所的に格納されたシャードに関する知識だけを必要とする仕方で、シャードを動的に成長させる自動メカニズムと組み合せることにより、単一のシャード動作の割合が改善し、これに応じて性能向上が実現できる。
本発明の第2の態様によれば、プロセッサにより実行された場合に本発明の第1の態様による方法を実行すべく適合されたソフトウェアコードを含むコンピュータプログラムが提供される。
本発明の第3の態様によれば、本発明の第2の態様によるコンピュータプログラムを含む計算機可読記憶媒体が提供される。
本発明によるデータベースの動的シャーディングを行うコンピュータ実装された方法を実装するのに適したシステムの一実施形態を模式的に示す。 図1のシステムを動作させる方法の一実施形態を模式的に示す。 図1の実施形態を代替する、シャードルータを含む一実施形態を模式的に示す。 図3のシステムを動作させる方法の一実施形態を模式的に示す。 移動動作の模式的表現を示す。 図3のシステムを動作させる方法の代替的な実施形態を模式的に示す。 移動動作中における局所的部分範囲集合の公開および非公開バージョンを含む代替的な実施形態を模式的に示す。
図1に、例えば図2を参照しながら説明するデータベース10の動的シャーディングを行うコンピュータされた実装方法を実装するのに適したシステムを示す。データベース10は、順序付けられた大域的範囲14に含まれるキー12により識別可能なデータ11を含んでいる。データベースは、例えば(特許文献6)または(特許文献7)により公知の大規模分散オブジェクトストレージシステムのメタデータを格納している適切なキー値ストアであってよく、データオブジェクトの全てのキー12に対して、例えば冗長に符号化されたサブブロックがデータオブジェクトの検索に利用可能なストレージノードに関するデータ11が格納されている。このような大規模分散オブジェクトストレージシステムは、既存の境界を越えて成長するため、当該システムの性能および堅牢性を向上させるニーズが増している。そのようなデータベースを格納するために例えばフラッシュストレージデバイスを含む大容量の専用且つ高性能なストレージデバイスを用いたとしても、分散オブジェクトストレージシステムが成長した場合、そのメタデータのキー値ストアも成長し、最終的にはこれらのストレージデバイスの記憶容量限度に達し、待ち時間、スループット、信頼性、粒度等の観点から可能な限り性能を保持する仕方でメタデータを複数のそのようなストレージシステムに跨って分散させることが必要になる。待ち時間とは、メタデータストアに格納された特定のデータへのアクセスに要する時間であり、典型的にはミリ秒で表される。スループットとは、メタデータストアとの間でのデータの読み出しまたは書き込み可能な速度であり、通常は1秒当たりの入力/出力動作の回数すなわちIOPS、および/またはメガバイト/秒すなわちMB/sで表される。粒度とは、追加的な待ち時間が一切生じない単一ユニットとして効率的にアクセス可能なデータの最も大きい集合体のサイズを指す。また信頼性とは、1個以上の記憶またはネットワーク要素が一時的に利用不可能である等、分散ストレージシステムで一般的な障害に対処する能力を指す。キー値ストアが一般に高性能データベース構造をなしているが、データベースに対して代替的な実施形態、例えばカラム、グラフ、ドキュメント等に基づくデータ構造等、他のNoSQL機構、あるいは例えばテーブルに基づくデータ構造も可能であることは明らかである。また、以下で詳述するデータベース10の動的シャーディングが大規模分散オブジェクトストレージシステム用のメタデータストア環境において有利であるが、他の適当な有利なデータベースアプリケーションであっても、特に例えばインターネット検索サービス索引等、堅牢且つ高性能な大規模分散データベースを必要とする環境で本方法の恩恵を得られことは明らかである。
しかし、本方法は、メタデータストアによりコントローラノードが、どのストレージ要素で特定のデータオブジェクトの冗長に符号化されたサブブロックを効率的に検索できるかを判定できるようにする、例えば(特許文献6)または(特許文献7)に開示された消去符号化に基づく分散オブジェクトストレージシステムのメタデータストアに特別に有利である。これらの文献に記述されている消去符号化分散オブジェクトストレージシステムによれば、クラスタリングモジュールが、コントローラノードに集中して存在するメタデータストレージから、特定のデータオブジェクトのサブブロックがどの特定のストレージ要素に格納されているかを効率的に確認することができる。また当該システムでは、どの符号化ポリシが用いられたかを復号化モジュールが効率的に確認することができる。更に、このようなメタデータストレージではまた、データオブジェクト毎に符号化ポリシを柔軟に決定することができ、これは分散オブジェクトストレージシステムに格納された全てのデータオブジェクトについて冗長ポリシを固定する必要が無く、各々の特定のデータオブジェクトに毎に個々に設定できることを意味する。メタデータストレージのまた更なる実施形態によれば、データオブジェクトに対して格納されたメタデータがデータオブジェクトの特性、例えばバージョン情報またはデータオブジェクトの状態を含む他の適切なエントリを含んでいてもよいことは明らかである。このようなシステムにおいて、コントローラノードは複数のストレージノードを管理することができ、これらのストレージノードは例えば、低速プロセッサを含み10または12個の3TB SATAディスクドライヴを備えた1Uラックマウントサーバ筐体内で36TBの記憶容量を実現している。コントローラノードは例えば、バックエンドストレージノードへの高速接続を可能にする10Gbのイーサネットネットワークインターフェース(イーサネット:登録商標)を備えている。典型的には複数のストレージノード、例えば10個以上のストレージノードを含む1個のラックにつき1個のコントローラノードが配置されている。これらのラックのいくつかのコントローラノードは次いで、コントローラノードの利用可能性が高いクラスタに組み込むことによりストレージノードへの完全に共有されたアクセスを許すと共に、例えば複数、例えば3個の異なるSSDに跨る複製により適当なレベルの冗長性を有する高性能ソリッドステートドライブすなわちSSDにおいて分散メタデータストレージへのアクセスを許すことにより、例えば(特許文献3)により公知のものと同様の多数決投票システムが可能になる。これにより、数百テラバイトからゼタバイトにわたるスケーラブルな記憶容量に大域的オブジェクト名前空間容量を提供する、複数ラックに跨る単一システムのスケーラビリティを実現することができる。いくつかの実施形態によれば、分散メタデータストレージをコントローラノード自身により、あるいは例えば、複数の当該コントローラノードにより共有的に利用可能な複数のスケーラの形式で実装できることは明らかである。一般に、例えば分散メタデータストレージ等、上述のような分散データベースは、例えばメタデータストレージを分散して格納する上述の分散オブジェクトストレージシステムのコントローラノード用の複数のスケーラ等の複数のシャードストア20に存在する。
図示するように、キー12の順序付けられた大域的範囲14をアルファベットの範囲[a,z]として模式的に示し、図1の実施形態のように、本実施形態の記述を簡潔にすべく、アルファベット一文字のデータオブジェクト識別子により特に簡単な表現形式でキーに言及する。しかし、代替的な、より現実的な実施形態によれば、キー12の順序付けられた大域的範囲14が適当な英数字範囲、例えば多文字英数字データオブジェクト識別子の形式のキーの場合は[a,z[を含んでいてよいことは明らかであり、キー12の順序付けられた大域的範囲14は、アルファベット順に順序付けることができ、標準的なリクエストにおいて、例えばクラウドストレージサービスのユーザーにより選択されたコンテナに格納されたアルファベット順の最初の50個のデータオブジェクトへのリンクを含むウェブページを表すようなアルファベット順に順序付けられたデータオブジェクトの部分集合の検索に用いられる場合が多い。しかし、データベースの全てのキーを含むのに適した他の任意の適当に順序付けられた閉または開端範囲も可能であることは明らかである。多文字英数字キーの場合、範囲を例えば、空文字列から始まって正無限大まで開端である右側開端範囲を意味する[“、+inf[のように表すことができ、これは実際にはデータベースシステムの環境内で実現可能なキー12の最大値を意味する。例えば対応する順序付けアルゴリズムにより所定の順序付け関係をキーに持たせることが可能な限り、大域的範囲は、例えば自身の最小および/または最大許容可能キー値により画定することができ、または当該範囲の一方または両側が開端である場合(データベースにより頻繁におよび/または最小の待ち時間で実行する必要がある標準的なリクエストにおいてキーが提示される仕方に好適に対応する)は単にデータベースのキー同士の順序付けられた関係を確立する所定のアルゴリズムにより画定することができる。これは従って、キーが、完全な順序関係が定義された集合の要素であることを意味する。他の適当な実施形態は例えば、英数字範囲、例えば10進範囲、16進範囲、2進範囲等の数値範囲、適当な順序付けアルゴリズムが定義可能である限り、そのような範囲の任意の適当な組合せをも含んでいてよい。
図1に示すように、これらの複数のシャードストア20が提供される。各々のシャードストアはシャードストア識別子22を含んでいる。図示するように、第1のシャードストア20はシャードストア識別子20.1を含み、第2のシャードストア20はシャードストア識別子20.2を含んでいる。これらのシャードストア20は、1個以上の適当な高性能ストレージデバイス、例えばSSDまたは他の任意の適当な形式または組合せのストレージデバイス格納された適当なデータ構造、多くの場合はデータベース構造へのアクセスを行うコンピュータ装置である。一般に、シャードストア20の各々が、例えば格納されたデータの量がコンピュータ装置に存在する全てのストレージデバイス例えば上述のようにコントローラノードまたはスケーラで利用できる全てのSSDの最大容量に達した場合に到達される記憶容量制限により制限されていることは明らかである。しかし、記憶容量がそのような複数のコンピュータ装置で共有されてスケーリングされている実施形態においても、同様に結局は記憶容量制限に達してそのような共有アクセスに関する性能低下がもはや受容不可能になる。好適には、シャードストアは、局所的で高スループットのデータバスを介して自身のストレージデバイスへの高性能で低レベルのアクセスを許し、1秒当たり最大レベルお入出力動作を可能にする。
図1に更に示すように、複数のシャード30が提供される。各シャード30は、局所的部分範囲40内の少なくとも1個のキー12が指すデータ11を求めるリクエスト13を扱う。これは、各シャード30が、キー12が局所的部分範囲40にあるデータベース10のデータ11の部分集合の読み出しおよび格納リクエストを扱うことを意味する。同図示するように、シャードストア識別子20.1が付されたシャードストア20に格納されたシャード30の局所的部分範囲40を[a,d)と表現する。当該局所的部分範囲40は従って、aから始まりzまで含む全てのアルファベット順に順序付けられたキーを含む大域的範囲14[a,z]のaから始まりdを除く全てのアルファベット順に順序付けられたキーを含む順序付けられた部分範囲を含んでいる。シャードストア識別子20.2が付されたシャードストア20に格納されたシャード30の局所的部分範囲40を[d,g)および[i,n)と表現する。この局所的部分範囲40は従って、各々dから始まってgを除く、且つ各々aから始まってzを除く全てのアルファベット順に順序付けられたキーを含む順序付けられた大域的範囲14[a,z]のiから始まってnを除く全てのアルファベット順に順序付けられたキーを含む順序付けられた部分範囲を含んでいる。シャード30の局所的部分範囲同士の共通部分がないこと、およびシャード30の全ての局所的部分範囲が隣接していることは明らかであって、データベース10に格納されている全てのキー12を特定のシャード30の局所的部分範囲40に割り当てることができることを意味する。これは従って、簡潔のため図1には示していないが、他のシャード30が、識別子20.1および20.2が付されたシャードストア20のシャード30に覆われていない順序付けられた大域的範囲14の全ての部分範囲を覆う局所的部分範囲を含んでいる筈であることを意味する。図示するように、シャードストア20のシャード30は、単一のシャード30が単一のシャードストア20を越えて延在しないように提供される。これは一般に、大多数のシャード20がこれら1個以上のシャード30を格納するが、いくつかのシャードストア20がシャード30を含まない可能性もある。これは例えば、現時点では記憶容量が未だ使用されていないシステムで1個以上のシャードストア20が利用できる場合、または代替的に1個以上のシャードストア20が依然としてシステムで利用できるが、近い将来システムから切り離される定になっている場合である。
図1に示すように、各々のシャードストア20は局所的部分範囲集合42を含んでいる。当該局所的部分範囲集合42は、自身の対応するシャードストア20に格納されたシャード30の1個以上の局所的部分範囲40を含んでいる。図示するように、シャードストア識別子20.1が付されたシャードストア20の局所的部分範囲集合42は従って、自身の単一シャード30の局所的部分範囲40[a,d)を含んでいる。シャードストア識別子20.2が付されたシャードストア20の局所的部分範囲集合42は、自身の両方のシャード30の両方の局所的部分範囲40[d,f)および[I,n)を含んでいる。図示する例が例示目的に過ぎず、任意の適当な個数のシャード30を含む任意の適当な個数のシャードストア20が用意されていてよく、従って対応する局所的部分範囲集合42が、自身に格納された適当な個数の局所的部分範囲40を含んでいてよいことは明らかである。同図に示すように、各々のシャード30は、例えばアルファベットのデータオブジェクト識別子であるキー12、および例えば当該データオブジェクトの冗長に符号化されたサブブロックが格納された分散ストレージデバイスのストレージノードのストレージノード識別子のリストを渡す当該データオブジェクトに関するメタデータである相関付けられたデータ11を含むキー値ストアまたは別の適当なデータベース構造を含んでいる。これにより、シャードストア20.1に格納されたシャード30は従って、例えばa、c等、自身の局所的部分範囲40[a,d)内のキー12を含むデータベース10の部分集合を含んでいる。好適には、キー12およびそれらと相関付けられたデータ11の当該部分集合は、順序付けられたリスト、シーケンス、1個のノードが2個以上の子ノードを有することができる二分探索木の一般化である例えばB木等の木データ構造、またはクライアントアプリケーション1からのリクエスト13に応答して連続的なキー12およびそれらの対応するデータ11をシャード30から適当に選択する他の適当な構造の形式で、これらのシャード30に格納されるかまたはそこから効率的に検索することができる。
図1に示すように、全てのシャードストア30は、好適にはデータセンターで利用可能な高速ネットワークである適当なネットワーク3に接続可能である。しかし、データベースが複数の地理的に分散したデータセンターに跨って分散している場合があるため、当該ネットワーク3もまた、これらの異なるデータセンター間の外部ネットワークリンク、例えば適当なインターネット接続を含んでいてよい。更に詳細に図示するように、クライアントアプリケーション1は、例えばクラウドストレージシステムのウェブベースのユーザーインターフェースにアクセスしているユーザーの適当なAPIインターフェースまたはブラウザであって、同様に例えばインターネット接続等の適当なネットワーク接続2により、当該ネットワーク3に接続されている。当該クライアントアプリケーション1が、一般に1個以上のキー12が指すデータ11の分散データベースにリクエストを発行する必要がある機能性を提供する限り任意の適当なアプリケーションまたはシステムの任意の適当なレベルのモジュールであってよいことは明らかである。
図1に示すように、そのようなリクエスト13‘get(‘f’)’が、例えばキー‘f’のデータ11の検索リクエストを含んでいるが、他の適当なリクエスト、例えばデータベース10の1個以上のキー12が指すデータ11を作成、更新、削除、一覧表示する等のリクエストが発行されてもよいことは明らかである。図示するように、キー‘f’のデータ11の当該検索リクエスト13は、クライアントアプリケーション1によりシャードストア20.1に渡される。図3を参照しながら以下により詳細に述べるように、クライアントアプリケーション1は、どのシャードストアにリクエストを送信するかを選択するのに適したルータを用いてもよいが、動的にスケーラブルである大規模分散データベースでは、そのようなシステムは既に陳腐化している恐れがあり、当該システムの信頼性が高い大域的状態を評価することに伴う待ち時間はもはや受容できないであろう。従って、図1の特に簡単な実施形態によれば、単にリクエスト13を利用可能なシャードストア20の1個に対して発行するだけで、クライアントアプリケーション1が利用できるシャードストア30に関する局所的状態情報が存在しない時点でリクエストを開始することさえできる。図1に示すように、検索リクエスト13を受信している当該所定シャードストア20はシャードストア識別子22として20.1を含み、これは図2に示す方法のステップ102に対応する。次いでステップ104において、当該所定シャードストア20.1は、自身の局所的部分範囲集合42により、当該少なくとも1個のキー12が、当該所定シャードストア20.1に格納されたシャード30の局所的部分範囲40に存在するか否かを検証することになる。図1に示すように、局所的部分範囲集合42は、リクエスト13のキーの‘f’を含まない1個の局所的部分範囲40[a,d)だけを含んでいる。これは従って、リクエスト13が、当該所定シャードストア20.1に格納されたシャード30の局所的部分範囲40に存在しない少なくとも1個のキー12に関係するため、図2の方法がステップ108へ進むことを意味する。ステップ108において、シャードストア20.1は、当該所定シャードストア20.1の局所的部分範囲集合42を含むメッセージ60を返送する。本実施形態において、クライアントアプリケーション1は次いで、シャードストア20.1が、自身の局所的部分範囲集合内で定義された局所的部分範囲40[a,d)のキー12が指すデータ11を有するシャード30だけを含んでいるという事実を認識させられる。以下でより詳細に述べるように、メッセージ60および/または局所的部分範囲集合42が、局所的部分範囲40以外に追加的な情報を含んでいてよいことは明らかである。メッセージ60は、例えば“20.1[a:20.1:d:...:z]”のように表現できるため、“20.1:”はメッセージ60を送信するシャードストアのシャードストア識別子22を示し、“[a:20.1:d”は局所的部分範囲40[a,d)を示し、“:...:z]”は、シャードストア20.1が自身の局所的部分範囲集合42に利用可能な情報を有していない順序付けられた大域的範囲14の一部を示す。図2により詳細に示すように、本実施形態によれば、ステップ110において、リクエスト13は次いで別のシャードストア20、例えばシャードストア20.2に渡されてよい。図1に示すように、メッセージ60が渡され、従ってこれに応答してリクエスト13を別のシャードストアに対して発行する可能性が最も高いのはクライアントアプリケーション1であるが、代替的な実施形態によれば、以前にリクエストを受信した他の構成要素またはモジュールあるいはシャードストアもまた、別のシャードストア20に対するリクエスト13の発信者になり得ることは明らかであり、また以下でより詳細に述べるように、メッセージ60を例えば1個以上の他のシャードストア20、ルータ等、クライアントアプリケーション1以外のエンティティまたはモジュールへ送信できることも明らかである。
図2のステップ110でシャードストア20.2にキー‘f’に対する検索リクエスト13が渡された場合、再びステップ104へ進み、自身の局所的部分範囲集合42により、当該キー12が当該所定シャードストア20.2に格納されたシャード30の局所的部分範囲40に存在するか否かを検証する。図1に示すように、局所的部分範囲集合42は、2個の局所的部分範囲40[d,g)および[i,n)を含み、そのうち1個[d,g)が検索リクエスト13のキー‘f’を含んでいる。これは従って、図2の方法がステップ106へ進んでシャードストア20.2が、例えば局所的部分範囲[d,g)のシャード30のシャードストア20.2に格納されたキー‘f’に関するデータ11を渡すことにより、リクエスト13を実行して、例えばクライアントアプリケーション1に、あるいは他の任意の適当なエンティティまたはモジュールに対して、例えばキー‘g’の形式のデータオブジェクト識別子により識別されるデータオブジェクトの冗長に符号化された分割ブロックを検索すべくストレージノードの識別子を渡すことを意味する。
図3に、図1と同様であるが追加的にシャードルータを含む実施形態を模式的に示し、図4に、図3の実施形態を動作させる方法の一実施形態を模式的に示す。例えばデータベース10、シャード30、シャードストア20等に関係する同様の要素は同一の参照符号で示しており、図1に関して上で述べた詳細な説明は図4の動作方法の説明に必要な程度だけ詳細に繰り返す。図3に示すように、同一の例示的データベース10に、aから始まってzを含む全てのアルファベット順に順序付けられたキーを含む順序付けられた大域的範囲14[a,z]が用意されていて、同一のシャードストア20が、キー12が図1と同一の各局所的部分範囲40に存在するデータベース10のデータ11の部分集合を求める読み出しおよび格納リクエストを扱う同一のシャード30を格納している。従って、これらのシャードストア20が図1に関して上で述べたものと同一の局所的部分範囲集合42を含んでいることは明らかである。しかし、ここではクライアントアプリケーション1は、例えばインターネット等の適当なネットワーク接続2によりシャードルータ50に接続されている。当該シャードルータ50は、適当なネットワーク接続3によりシャードストア20に接続可能であり、例えば分散オブジェクトストアのメタデータを分散的に格納する上述の分散オブジェクトストレージデバイスの複数のコントローラノード用の1個以上のスケーラで動作する適当なモジュールとして実装することができる。示すように、ここではシャードルータ50が、図1に関して上で述べたように検索リクエスト‘get(‘f)’の形式でクライアントアプリケーション1により発行された少なくとも1個のキー12が指すデータ11を求めるリクエスト13を扱う。示すように、当該リクエスト13は、クライアントアプリケーション1によりシャードルータ50に渡されるが、一般に他の任意の適当なアプリケーションまたはモジュールでも可能であることは明らかである。
図3に示すように、シャードルータ50には大域的部分範囲集合52が提供される。‘a:20.1:g:...:i:20.2:n:...:z’と表現された当該大域的部分範囲集合52は、順序付けられた大域的範囲14の大域的部分範囲54をシャードストア識別子22と相関付ける。これにより、局所的部分範囲集合に関して上述したのと同様に、この表現は、順序付けられた大域的範囲14‘[a,z]’の大域的部分範囲54‘[a,g)’とシャードストア識別子22‘20.1’との間の相互関係を示す。これは同様に、順序付けられた大域的範囲14‘[a,z]’の大域的部分範囲54‘[i,m)’とシャードストア識別子22‘20.2’ との間の相互関係を示す。‘g:...:n’は、大域的部分範囲54についてシャードルータ50が利用できる情報が存在しないことを示す。当該大域的部分範囲54は例えば、シャードルータ50に格納されたまたはシャードルータ50に渡された以前の情報の結果であってよいが、以下により詳細に述べるように、図3に模式的に示すように、システムの状態に関して現時点では陳腐化している。キー‘f’のデータ11を求めるクライアントアプリケーション1からのリクエスト13‘get(‘f’)’が図4のステップ202でシャードルータ50に渡されるため、シャードルータ50は、図4のステップ204に対応して、当該キー12‘f’を含む大域的部分範囲54と相関付けられたシャードストア識別子22を決定する。図3に示すケースでは、これは従って、大域的部分範囲54[a,g)が表現‘[a:20.1:g’から導かれるシャードストア識別子20.1と相関付けられていて、シャードルータ50が、当該リクエスト13‘20.1:get(‘f’)’を当該相関付けられたシャードストア識別子20.1の当該所定シャードストア20に提供することを意味する。当該所定シャードストア20.1は次いでステップ206において、自身の局所的部分範囲集合42により、当該キー12‘f’が当該所定シャードストア20に格納されたシャード30の局所的部分範囲40に存在する否かを検証する。キー‘f’が当該所定シャードストア20.1の局所的部分範囲集合42の唯一の局所的部分範囲40[a,d)に存在しないため、本方法はステップ210へ進んで所定シャードストア20.1が、自身の局所的部分範囲集合42を含むメッセージ60をシャードルータ50に返送する。例えば以下により詳細に述べるように、メッセージ60および/または局所的部分範囲集合42は、局所的部分範囲40以外に追加的に情報を含んでいてよい。ステップ212において、シャードルータ50は次いで、所定シャードストア20のシャードストア識別子22を、当該メッセージ60の局所的部分範囲集合42の局所的部分範囲40に対応する大域的部分範囲54と相関付けることにより、当該メッセージ60に基づいて自身の大域的部分範囲集合52を更新する。図示するように、例えば‘[a20.1:d:...:z]’と表現できるシャードストア20.1の局所的部分範囲集合42から、シャードルータ50の大域的部分範囲集合52の陳腐化した情報に以前提供されていたようにシャードストア20.1が部分範囲[d:g)のシャード30を含んでいないことが明らかなため、図3における大域的部分範囲集合52は次いで‘[a:20.1:g:...:i:20.2:n:...:z]’から‘[a:20.1:d:...:g:...:i:20.2:n:...:z]’に変更される。
図4に更に示すように、本実施形態によれば、ステップ214において、リクエスト13は次いで別のシャードストア20、例えばシャードストア20.2に渡されてよい。図3に示すように、メッセージ60が渡され、従ってこれに応答してクエスト13を別のシャードストア20に対して発行する可能性が最も高いのはシャードルータ50であるが、代替的な実施形態によれば、シャードルータ50から以前にリクエスト13を受信した他の構成要素またはモジュールあるいはシャードストア20.1もまた、別のシャードストア20に対するリクエスト13の発信者になり得ることは明らかであり、また、メッセージ60を、例えば1個以上の他のシャードストア20、クライアントアプリケーション1等、シャードルータ50以外のエンティティまたはモジュールへ送信できることも明らかである。
図4のステップ214でシャードストア20.2にキー‘f’に対する検索リクエスト13が渡された場合、再びステップ206へ進み、自身の局所的部分範囲集合42により、当該キー12が当該所定シャードストア20.2に格納されたシャード30の局所的部分範囲40に存在するか否かを検証する。図3に示すように、局所的部分範囲集合42は、2個の局所的部分範囲40[d,g)および[i,n)を含み、そのうち1個すなわち[d,g)が検索リクエスト13のキー‘f’を含んでいる。これは従って、図4の方法がステップ208へ進んでシャードストア20.2が、例えば局所的部分範囲[d,g)のシャード30のシャードストア20.2に格納されたキー‘f’に関するデータ11を渡すことにより、リクエスト13を実行して、例えばシャードルータ50またはクライアントアプリケーション1に、あるいは他の任意の適当なエンティティまたはモジュールに対して、例えばキー‘g’の形式でデータオブジェクト識別子により識別されるデータオブジェクトの冗長に符号化された分割ブロックを検索すべくストレージノードの識別子を渡すことを意味する。任意選択により、図4により詳細に示すように、身の局所的部分範囲集合42にキーを含んでいるシャードストア20.2について、上で述べたステップ210および212と同様のステップ216および218を実行することもできる。これは、この場合も、ステップ216において、シャードストア20.2が、自身の局所的部分範囲集合42を含むメッセージ60をシャードルータ50に返送することを意味する。ステップ218において、シャードルータ50は次いで、当該メッセージ60に基づいて所定シャードストア20のシャードストア識別子22を、当該メッセージ60の局所的部分範囲集合42の局所的部分範囲40に対応する大域的部分範囲54と相関付けることにより、自身の大域的部分範囲集合52を更新する。上述のように以前に‘[a:20.1:d:...:g:...i:20.2:n:...:z]’に変更されたグローバルな部分範囲集合52は従って、例えば‘[a:...:d:20.2:g:...:i:20.2:n...:z]’と表現されたシャードストア20.2の局所的部分範囲集合42から、シャードストア20.2が、シャードルータ50の大域的部分範囲集合52で利用できる最新の情報が存在しない部分範囲[d:g)に対するシャード30を含んでいることが明らかであるため、‘[a:20.1:d:20.2:g:...:i:20.2:n:...:z]’に更に変更される。
一般に、所定シャードストア20の局所的部分範囲集合42を含むメッセージ60に応答してシャードルータ50の大域的部分範囲集合52を更新する処理は、
−大域的部分範囲集合52から、メッセージ60の局所的部分範囲40として局所的部分範囲集合42に存在しない当該所定シャードストア20のシャードストア識別子22と相関付けられた大域的部分範囲54があればこれを除去するステップと、
−大域的部分範囲集合52に、メッセージ60の局所的部分範囲集合42の局所的部分範囲40を、当該所定シャードストア20のシャードストア識別子22と相関付けられた大域的部分範囲54として追加するステップとを含んでいる。特定の実施形態によれば、このような除去および追加を、例えば既存の大域的部分範囲54がメッセージの受信された局所的部分範囲40と重なる場合にこれらを更新する1個の更新動作として組み合わせ可能であること、またはこのような除去および追加を、例えば受信された局所的部分範囲と同一であることが検知された大域的部分範囲54について既存の大域的部分範囲54を修正しない動作として実行可能であること、あるいはこのような除去および追加を、メッセージ60の局所的部分範囲集合42に関して必要な場合に大域的部分範囲集合52を効率的に更新する他の任意の適当な動作として実装可能であることは明らかである。
図5に、移動動作80の模式的表現を示す。データベース10の左側の表現は移動動作80を行う前の自身の状態を示し、右側は同一データベース10の移動動作80の後の状態を示す。図5に示すように、移動動作80の実行中に、シャードストア20.1に部分範囲[a,g)を有するシャード30の順序付けられた部分集合が移動させられる。移動シャード72と称される当該順序付けられた部分集合はまたフリンジ72とも称され、所定シャードストア20.1から別のシャードストア20.2への移動部分範囲70またはフリンジ部分範囲70と称される部分範囲[d,g)内の全てのキー12が指すデータ11を含んでいる。当該移動動作80は例えば、各々のシャード30が自身の部分範囲40内のキーが指すデータ11を受信する際に動的に成長するにつれて、異なるシャードストア20の中の記憶容量をリバランシングすべく実行可能である。しかし図5に示すように、当該移動動作は、移動部分範囲70および対応する移動シャード72が、シャードに格納されたシャード30の順序付けられた部分集合はストア20である状況を想定しており、あるシャードストアの全てのシャード30を別のシャードストアへ移動させることも可能であるため、移動シャード72は当該シャード30と同一であり、且つ移動部分範囲70は当該シャード30の部分範囲40と同一である。図5に示すように、移動動作を行う前は、所定シャードストア20.1の局所的部分範囲集合42は局所的部分範囲40[a,g)を含み、別のシャードのストア20.2の局所的部分範囲集合42は局所的部分範囲40[i,n)を含んでいる。更に図示するように、移動動作80の後で、移動部分範囲70[d,g)はもはや、所定シャードストア20.1の局所的部分範囲集合42からの局所的部分範囲40としては存在しない。局所的部分範囲集合42は現時点で局所的部分範囲40[a,d)を含んでいる。以下により詳細に述べように、移動部分範囲70[d,g)は現時点で、所定シャードストア20.1の局所的部分範囲集合42に含まれる外部部分範囲集合46に追加されている外部部分範囲44[d,g)として追加されている。同図に示すように、外部部分範囲44[d,g)は、移動シャード72の移動先である別のシャードストア20.2のシャードストア識別子22‘20.2’と相関付けられている。また、移動部分範囲70[d,g)を有する移動シャード72の所定シャードストア20.1から別のシャードストア20.2への移動動作80の結果、移動部分範囲70[d,g)が局所的部分範囲40として別のシャードストア20の局所的部分範囲集合42に追加される。移動動作80の実行中、移動動作80に関与する所定シャードストア20および別のシャードストア20の局所的部分範囲集合42だけが移動部分範囲70に基づいて更新される。これは特に、移動動作に関与するシャードストアだけが、同期化メッセージが増大し応答性および利用可能性が低下する他のシャードストアまたは中央管理サービスとの更なる同期化を必要とせずに自身の局所的状態を更新するため、例えば利用可能なシャードストア間でより記憶容量を効率的に再分散すべく移動動作の自動実行を生起させる動的シャーディングが可能な大規模分散データベースシステムの環境において有益である。上述の方法によれば、リクエストを扱い続けるには移動動作に関与するシャードストアの局所的部分範囲だけを更新すれば充分であることが明らかである。陳腐化した情報があれば、当該リクエストと関連性があるシャードストアの局所的部分範囲集合の局所的部分範囲と同期化される。従って、同期化オーバーヘッドが抑制され、実際のリクエストを扱うために必要なものに最適化される一方、例えば上述の移動動作のように、受容できない待ち時間が生じることなくシステムの最新の大域的状態を得るのが困難な大規模分散データベース環境においても、任意の分散リバランシング動作を扱うのに充分堅牢である。
図5に示すように、所定シャードストア20.1の局所的部分範囲集合42は、移動動作の後の状態において、外部部分範囲集合46を更に含んでいる。当該外部部分範囲集合46は、自身の各シャードストア識別子22“20.2”と相関付けられた他のシャードストア20.2に格納されたシャード30の外部部分範囲44“[d,g)”を含んでいる。外部部分範囲集合46が1個のシャードストア識別子22だけと相関付けられた1個の外部部分範囲44だけを含むものとして図示しているが、代替的な実施形態によれば、外部部分範囲集合46が、例えば複数の以前の移動動作の結果として、または他のシャードストア20のシャード30または局所的部分範囲40に関する情報を所定シャードストア20.1が収集することができた他の任意の適当な仕方で収集された任意の適当な個数の対応するシャードストア識別子22と相関付けられた任意の適当な個数の外部部分範囲44を含んでいてよいことは明らかである。当該外部部分範囲集合46は従って、シャードストア20の局所的部分範囲集合の局所的部分範囲40にもはや存在しないキーを求めるリクエスト13がシャードストア20へ送信された場合に、別のシャードストア20への効率的なルーティングを可能にする。そのような最適化された方法の一例を図6に示すが、これは追加ステップ220、222を除いて図4に示すものと同様である。既に上で説明したステップは同一参照番号で識別され、これらの追加ステップに関して必要な場合に限り繰り返し説明する。図6に示すように、図5のシャードストア20.1の移動動作後の状態において、シャードストア20が、自身が格納するシャードの局所的部分範囲40のいずれにも存在しないキー12を求めるリクエスト、例えば局所的部分範囲集合の局所的部分範囲40[a,d)に存在しないキー‘f’を求めるリクエストを扱う場合、本方法はステップ202、204および206からステップ210へ進み、上述のようにシャードストア20.1が局所的部分範囲集合42を含むメッセージ60を返送する。ここで当該局所的部分範囲集合42が外部部分範囲44‘[d,g)’を有する外部部分範囲集合46を含んでいることは明らかである。新たなステップ220において、例えばシャードルータ50は、リクエスト13のキー12が当該局所的部分範囲集合42の外部部分範囲集合46の所定の外部部分範囲44に含まれているか否かを検証する。これは、キー‘f’を求めるリクエストのケースではキー‘f’が外部部分範囲44‘[d,g)’に存在するため成立する。外部部分範囲44は、図5に示すようと相関付けられたシャードストア識別子22として“20.2”を有している。ステップ222において、当該シャードストア識別子‘20.2’を用いて、ステップ214で続いてリクエスト13を渡すのに用いる別のシャードストア20を選択する。
この状況において任意選択により、リクエストのキー12が当該所定シャードストア20の局所的部分範囲40に存在しない場合、シャードルータ50が、自身の大域的部分範囲集合52を更新すべくメッセージ60の局所的部分範囲集合42の局所的部分範囲40を用いることに加え、別のシャードストア20のシャードストア識別子22をメッセージ60の外部部分範囲集合46の所定の外部部分範囲44に対応する大域的部分範囲54と相関付けることにより、自身の大域的部分範囲集合52をも更に更新することは有益であろう。この場合、図3で説明したものと同じ例を参照するに、これは、ステップ212において外部部分範囲44‘[d:20.2:g’も考慮に入れられるため、大域的部分範囲集合52もまた’[a:20.1:g:...:i:20.2:n:...:z]’から‘[a:20.1:d:20.2:g:...:i:20.2:n:...:z]’に更新されることを意味する。このような更新は後述するように堅牢な仕方で実行することができる。その理由は、リクエストが当該別のシャードストア20.2へルーティングされたときに、当該リクエストが自身の局所的部分範囲集合に関して検証され、当該リクエストが正しくないかまたは陳腐化している場合、大域的部分範囲集合の更なる更新がなされるためである。しかし、当該リクエストが正しければ、シャードルータ50に到達しているシャードストア20.1の当該外部部分範囲44のキーに対する全てのリクエストは既により最適に別のシャードストア20.2へルーティングされているであろう。上で述べたのと同様に、局所的部分範囲集合42の図5の表現は模式的に過ぎず、任意の適当な表を用いてよい。移動動作の後の20.1の局所的部分範囲集合は例えば、大域的部分範囲集合について上で述べたのと同様に‘[a:20.1:d:20.2:g:...:z]’と表現することができ、ここに‘[a:20.1:d’は所定シャードストア20.1のシャードストア識別子を含むため局所的部分範囲[a,d)を表し、‘[d:20.2:g’は別のシャードストア20.2のシャードストア識別子と相関付けられた外部部分範囲[d,g)を表し、‘[g:...:n’は、順序付けられた大域的範囲の当該部分範囲のシャードストア20.1で利用できる情報が存在しないことを示す。
特に所定シャードストア20.1および別のシャードストア20.2が例えば図5に関して上で述べた移動動作80に関与する状況で、システムの堅牢性を更に向上させるべく、各々のシャードストア20は、局所的部分範囲集合42の2個のバージョン、すなわち公開および非公開バージョンを含んでいる。公開局所的部分範囲集合42PUは上述のように、リクエスト13を扱い且つメッセージ60を送信するために外部に露出されたバージョンである。非公開局所的部分範囲集合42PRは、以下により詳細に述べるように、シャードストア20以外の他の構成要素からはアクセスできないようになっている。さもなければ、シャードストアの公開局所的部分範囲集合42PUおよび非公開局所的部分範囲集合42PRの構造および内容の両方が上述のように、一般に自身の対応するシャードストア20に格納されたシャード30の1個以上の局所的部分範囲40を含み、任意選択により1個以上の外部部分範囲44を含む外部部分範囲集合46をも含む局所的部分範囲集合42に類似している。図7に、図5に関して説明したものと同様の移動動作80の実行中における両方のシャードストア20.1および20.2の公開局所的部分範囲集合42PUおよび非公開局所的部分範囲集合42PRを模式的に示し、移動部分範囲70[d,g)を有する移動シャード72が所定シャードストア20.1から別のシャードストア20.2へ移動される。同図に示すように、移動動作80の実行中に、第1のステップ302において、所定シャードストア20.1が、移動部分範囲70‘[d:20.2:g’に基づいて自身の公開局所的部分範囲集合42PUを‘20.1PU−>[a:20.1:g:...:z]’から‘20.1PU−>[a:20.1:d:20.2:g:...:z]’に更新し、これは従って、移動部分範囲が局所的部分範囲40として除去されて、外部部分範囲44として追加されることを意味する。次いで、ステップ304において、所定シャードストア20.1が別のシャードストア20.2への移動シャード72の送信を開始し、別のシャード20.2は、通信が首尾よく確立できたならば、所定シャードストア20.1から移動シャード72の受信を開始することができる。移動シャード72が正しく受信された場合、別のシャードストア20.2はステップ304において、自身の公開局所的部分範囲集合42PUおよび非公開局所的部分範囲集合42PRの両方を移動部分範囲70に基づいて‘20.2PU−>[a:...:i:20.2:n:...:z]’から‘20.2PU−>[a:...:d:20.2:g:...i:20.2:n:...:z]’に更新し、これは従って、移動部分範囲70が局所的部分範囲40として追加されることを意味する。また、別のシャードストア20.2は次いで移動肯定応答メッセージ74を所定シャードストア20に送信する。所定シャードストア20.2がステップ306において前記移動肯定応答メッセージ74を別のシャードストア20から受信した場合、所定シャードストア20.1はまた、以前に公開バージョンを更新したのと同様の仕方で、自身の非公開局所的部分範囲集合42PRを‘20.1PU−>[a:20.1:g:...:z]’から‘20.1PU−>[a:20.1:d:20.2:g:...:z」’に更新する。また、所定シャードストア20.1はまた、移動シャード72を削除することにより、記憶容量を安全な仕方で解放する。
この設定により、問題が生じ得る移動動作のあらゆるステージで堅牢性が向上する。システムを不整合な状態に置いたままにすることなく、移動シャードの送信、移動シャードの受信、肯定応答等がカバーされる。これは、たとえ移動動作が失敗してもデータベースの2個以上のシャードにデータが存在しないようにすることを意味する。その理由は、同一キーによるデータベースへの二重エントリが生じ、分散データベース環境において未検知のまま残されて当該キーのデータに対する不整合な更新がなされる恐れがあるためである。従って、移動動作80が開始されたならば直ちに、所定シャードストア20.1の公開局所的部分範囲集合42PUに対する更新は、当該シャードストア20.1により移動部分範囲におけるキーを求めるリクエストがもはや扱われないことを保証する。また、別のシャードストア20.2の局所的部分範囲集合42PUおよび42PRの更新は、別のシャードストア20.2がそのようなリクエストの扱いを開始するのは移動シャード72が正しく受信される場合に限ることを保証する。更に、所定シャードストア20.1の非公開局所的部分範囲集合42PRだけを更新することで、移動動作80中に何らかの異常が生じても、外部の情報を一切必要とせずに自身の局所的状態を検証することにより当該シャードストア20.1により検知可能であることが保証される。これにより、所定シャードストア20.1は、移動動作80を実行してから所定時間後に、自身の公開局所的部分範囲集合42PUが非公開局所的部分範囲集合42PRと異なることを検知した場合、当該シャードストア20.1は、移動動作80のいずれかのステージの実行中における障害の発生を疑うことができる。好適には、所定シャードストア20は次いで、移動シャード72を別のシャードストア20.2へ再送信する。例えば移動動作に関与する両方のシャードストア間でのネットワーク接続障害、または関与するシャードストアのうち1個が一時的に利用不可能である等、移動シャード72の送信または受信に問題があったとしても、当該問題は、移動シャード72を送信する時点ではもはや存在せず、従って更なる移動シャードは首尾よく移動シャード72を受信し、自身の局所的部分範囲集合を更新して、移動肯定応答メッセージ74の送信へ進む。
しかし、単に移動シャード72が別のシャードはストア20.2で既に首尾よく受信された当該移動の肯定応答メッセージ74の送信または受信だけが問題である場合、好適には再送信をより効率的に扱うことができる。別のシャードストア20.2がこの状況を検知することが可能であるのは、当該別のシャードストア20.2に対して、自身の公開局所的部分範囲集合42PUに既に存在する移動部分範囲70を有する所定シャードストア20.1により移動シャード72が提供されている場合、例えば、以前に当該移動シャード72を正しく受信したが、その後で移動肯定応答メッセージ74が所定シャードストア20.1に到達しなかった結果、自身の公開局所的部分範囲集合42PUが既に‘20.2PU−>[a:...:d:20.2:g:...i:20.2:n:...:z]’に変更されているにも拘わらず、移動部分範囲70‘d:20.2:g’が再び提示されている場合である。この場合、別のシャードストア20.2は好適には、移動シャード72を受信しなくても移動肯定応答メッセージ74を所定シャードストア20に送信する。これは例えば、移動動作中に移動シャードを送信する場合に、移動シャードに関する情報を先行メッセージ、ヘッダ、適当な識別子、または他の任意の適当な形式で渡すことにより、別のシャードストア20.2が当該移動シャード72を確認した後で移動シャード72を送受信する通信処理の開始を中断または防止できるようにすることで行える。
図8に示すように、リバランシング動作に関与するデータが利用不可能な期間および程度を軽減しながら、複数のシャードストア20を跨るデータベース10の自動化された効率的なリバランシングを整合性を保って実行可能にすべく、ステップ402においてシャード30の少なくとも1個の順序付けられた部分集合を移動させる移動ジョブ82が渡されたならば、当該移動ジョブ82に関連付けられたシャードの順序付けられた部分集合のサイズが移動サイズ閾値90を上回るか否かがステップ404において最初に確認される。当該移動ジョブ82に関連付けられたシャードの順序付けられた部分集合が移動サイズ閾値90を上回らない場合、本方法はステップ406へ進み、上で述べたのと同様に移動ジョブは移動動作80として扱われる。移動ジョブ82が、ステップ408に示すように移動サイズ閾値90を上回るサイズのシャードの順序付けられた部分集合に関連付けられている場合、各々の移動動作80の移動シャード72のサイズが移動サイズ閾値90以下であるように、前記移動ジョブ82に基づいて複数の移動動作80が生起する。しかし、特定の効率的な実装によれば、事前のサイズ計算を一切必要とせずに、移動ジョブ82全体が扱われるまで、例えば10MBの移動サイズ閾値90である所定のフリンジサイズの1個以上の移動シャード72またはフリンジ72を生成することにより任意の移動ジョブ82を常に扱うことができる。移動ジョブ82は一般に、複数の移動動作80により、移動ジョブキー範囲、すなわち局所的部分範囲[a,d)を有するシャード30の順序付けられた範囲[b,d)におけるキーの順序付けられた部分集合の移動データ、またはキー12の移動ジョブ量、例えば100000個のキーを含むシャード30の最後の10000個のキーの順序付けられた部分集合、あるいはシャード30の順序付けられた部分集合の移動ジョブサイズ、例えば5GBよりも大きい所定シャードストアのシャードの任意の適当な順序付けられた部分集合、を移動させるまで、シャード30の順序付けられた部分集合を所定シャードストア20から別のシャードストア20へ移動させる任意の適当なリクエストであってよい。これにより、データの利用不可能性を個々の移動動作に必要な転送時間に限定しながら、分散データベースシステムの動的なリバランシングの実行中に、整合性を保って大規模および/または頻繁な移動ジョブを実行することができる。移動ジョブが例えばデータベース10に含まれているかまたは接続されたバランサまたは別の適当なシステムあるいは適当なモジュールの制御下にあれば、移動サイズ閾値90を例えば10MBに設定する場合に、例えばシャードの5GBの順序付けられた部分集合を移動させる大規模な移動ジョブを発行する際に、結果的に生じる10MBの移動動作は、関与する両方のシャードストアの局所的状態情報を更新することにより堅牢且つ効率的に扱われるため、当該バランサは当該動作の全ての詳細な実行を追跡する必要が無い。代替的な実施形態によれば、移動サイズ閾値90を、所定個数のキー、所定幅のキー範囲等として定義できるとは明らかである。
例えば上述の移動動作の結果、多数の小型シャード30が増大するのを防止すべく、好適には分散データベースの動的なリバランシングの実行中に、所定シャード30に対して、当該所定シャード30の局所的部分範囲40に隣接する局所的部分範囲40を有する同一シャードストア20で別のシャード30が利用可能であることが検知された場合。隣接しているとは、例えば図9に示すように、自身の範囲の最上限または最下限値を境界として隣の範囲と共有する局所的部分範囲が、共通の境界に接触しているかまたは共有していることを意味する。局所的部分範囲[d,e)を有する所定シャード30は例えば、シャードストア識別子20.2が付されたシャードストア20で受信された移動ジョブの実行中に生じる移動シャードである。別のシャード[e,j)は、両方の範囲に接する範囲制限‘e’の形式で共通の境界を共有しているため、当該所定シャードに隣接することは明らかである。これはまた、‘20.2−>[a:...:d:20.2:e:20.2:j:...:z]’で表されるように、局所的部分範囲集合42の状態から明らかである。マージ動作84の実行中に、当該所定シャード30[d,e)が別のシャード30[e,j)とマージされてマージ済みシャード30[d,j)が形成され、所定シャード30および別のシャード30の両方の隣接する局所的部分範囲40’d:20.2:e:20.2:jを、マージ済みシャード30のマージ済み局所的部分範囲40“d:20.2:j”にマージすることにより、局所的部分範囲集合42が更新される。マージ動作を回数を特定のレベルに制限するために、例えばマージ動作を、好適には移動サイズ閾値90よりも大きいマージサイズ閾値よりも小さいサイズの所定シャードに限定して、複数の小さい移動シャードを生成する複数の移動動作の結果生じて移動ジョブの後でこれらの移動シャードが再びマージされるようにすることができる。
上で挙げた例は単一のキーを含むリクエストの場合であるが、上述のシステムおよび方法が、複数のキーが関わるリクエストを1回のシャード検索で済ます割合を最大化する際に特に有益であることは明らかである。上で既に説明したように、そのようなリクエストは一般に、例えば、ユーザーにより頻繁に出されるリクエストの一つが、例えば特定のクラウドストレージサービスの所定のユーザーアカウントの特定のフォルダに以前にアップロードされたファイルの一覧を示している適当なコンテナの内容を順次閲覧するための順序付けられたリストの提供を求めるものである場合に、例えば大規模分散ストレージシステムの環境で生じる。このように標準的なリクエストに応答して、ユーザーに対して、例えばアルファベット順にソートされたファイル名のリストがブラウザ上で、選択されたファイルを検索するリンクと共に提示される。そのような大規模分散ストレージシステムにおいて、例えば格納された全ての内容のメタデータバランスの良い分散を実現するためにどのハッシング機能を選択すべきであるか等を事前に評価するのは困難であり、最適化されたハッシング法を選択する際に、複数キーの順序付けられたリストに対してデータを求めるリクエストが発行されたとき、そのような順序付けられたリスト内の後続キーの当該シャードは異なるシャードに割り当てられる場合が多いという事実に基づき、各キーが格納されたシャードを決定するために個々のキーを問い合わせる必要が生じる場合が多い。性能を向上させるべく、上述の実施形態では、複数の順序付けられたキーを求めるリクエストが受信された場合、単一のシャード30の順序付けられた部分集合を検索するリクエストが結果的に生じる可能性が増すことを保証する。また、各シャード自身が大域的キー範囲の順序付けられた部分集合を形成するため、個々のキーについて、どのシャードが自身のデータを保持しているかを確定する必要は無くなるが、その理由は、例えばリクエストの最も低いキーについて当該リクエストの順序付けられた部分集合内の全ての後続キーが、自身の局所的部分範囲の制限に達するまで当該同一シャードに存在すると判定されたならば、当該キーの順序付けられた部分集合が指すデータの検索を続けるためには、どのシャードが隣接するかを確認するだけでよいからである。
上述の例では主に、キーのソートされた部分集合と相関付けられた下限および上限により画定されるアルファベット順にソートされたキーの範囲に言及しているが、一般にデータベースに対するリクエストの大きな割合で必要とされるキーの順序関係に密接に関係する限り、他の任意の適当な順序関係を選択してもよいことは明らかである。
上述の方法およびシステムは一般に、例えば適当なサーバまたは汎用コンピュータ等の適当なコンピュータシステムのプロセッサにより実行された場合に本方法を実行すべく適合されたソフトウェアコードを含むコンピュータプログラムとして充分に実装可能であることは明らかである。
本発明について特定の実施形態を参照しながら記述してきたが、当業者には本発明が上述の例示的な実施形態の詳細事項に限定されないこと、および本発明がその範囲から逸脱することなく各種の変更および変型を加えて実施できることは明らかであろう。本実施形態は従って、あらゆる点において例示的であって限定的ではないものと考えるべきであり、従って本発明の趣旨は上述の説明ではなく添付の請求項により示されており、請求項の等価物の意味および範囲に含まれるあらゆる変更は従って当該範囲に含まれるものとする。換言すれば、基本的原理の範囲内に含まれ且つ基本的属性が本特許出願において権利請求される一切の変更、変型または等価物を包含するものと考えられる。更に、本特許出願の読者には、「含んでいる」または「含む」という語句が他の要素またはステップを除外しないこと、「1個の」または「一つの」という語句が複数個を除外しないこと、および1個のコンピュータシステム、1個のプロセッサ、または別の1個の統合装置が、請求項に記載された複数の手段の機能を満たし得ることが理解されよう。請求項内のどの参照符号も、対象とする各請求項を限定するものと解釈してはならない。「第1」、「第2」、「第3」、「a」、「b」、「c」等の用語は、本明細書の記述または請求項において用いられた場合、類似要素またはステップを区別するために導入されたものであって、必ずしも連続的または時系列的順序を規定している訳ではない。同様に、「上部」、「底部」、「上に」、「下に」等の用語は説明目的で導入されたものであって、必ずしも相対的な位置を規定している訳ではない。このように用いられている用語は適当な条件の下で交換可能であって、本発明の実施形態は本発明に従い、上述のもの(複数も)とは異なる順序または方向で動作可能であることを理解されたい。
1 クライアントアプリケーション
2 ネットワーク接続
3 ネットワーク
10 データベース
11 データ
12 キー
13 検索リクエスト
14 大域的範囲
20、20.1、20.2 シャードストア
22 シャードストア識別子
30 シャード
40 局所的部分範囲
42 局所的部分範囲集合
42PU 公開局所的部分範囲集合
42PR 非公開局所的部分範囲集合
44 外部部分範囲
46 外部部分範囲集合
50 シャードルータ
52 大域的部分範囲集合
54 大域的部分範囲
60 メッセージ
70 移動部分範囲
72 移動シャード
74 移動肯定応答メッセージ
80 移動動作
302 第1のステップ
306 ステップ
本発明によるデータベースの動的シャーディングを行うコンピュータ実装された方法を実装するのに適したシステムの一実施形態を模式的に示す。 図1のシステムを動作させる方法の一実施形態を模式的に示す。 図1の実施形態を代替する、シャードルータを含む一実施形態を模式的に示す。 図3のシステムを動作させる方法の一実施形態を模式的に示す。 移動動作の模式的表現を示す。 図3のシステムを動作させる方法の代替的な実施形態を模式的に示す。 移動動作中における局所的部分範囲集合の公開および非公開バージョンを含む代替的な実施形態を模式的に示す。 シャードストアを跨るデータベースの自動化された効率的なリバランシングを模式的に示す。 マージ動作の模式的表現を示す。

Claims (15)

  1. 順序付けられた大域的範囲(14)に含まれるキー(12)により識別可能なデータ(11)を含むデータベース(10)の動的シャーディングを行うコンピュータ実装された方法であって、
    −各々がシャードストア識別子(22)を含み且つ各々が記憶容量制限により制限されている複数のシャードストア(20)を提供するステップと、
    −各シャード(30)が局所的部分範囲(40)内で少なくとも1個のキー(12)が指すデータを求めるリクエスト(13)を扱うべく構成され、当該局所的部分範囲(40)が前記順序付けられた大域的範囲(14)の順序付けられた部分範囲を含む複数のシャード(30)を提供するステップと、
    −単一のシャード(30)が単一のシャードストア(20)を越えて延在しないよう前記シャードストア(20)に前記複数のシャード(30)を提供するステップと、
    −前記シャードストア(20)の各々に1個の局所的部分範囲集合(42)を、各々の局所的部分範囲集合(42)が自身の対応するシャードストア(20)に格納された前記複数のシャード(30)の前記1個以上の局所的部分範囲(40)を含むように提供するステップと、
    −少なくとも1個のキー(12)が指すデータ(11)を求める前記リクエスト(13)を扱う際に、
    −当該リクエスト(13)を所定シャードストア(20)に提供するステップと、
    −当該所定シャードストア(20)が、自身の局所的部分範囲集合(42)により、当該少なくとも1個のキー(12)が、当該所定シャードストア(20)に格納されたシャード(30)の局所的部分範囲(40)に存在するか否かを検証するステップと、
    −少なくとも1個のキー(12)が当該所定シャードストア(20)に格納されたシャード(30)の局所的部分範囲(40)に存在しない場合、当該所定シャードストア(20)の前記局所的部分範囲集合(42)を含むメッセージ(60)を返送するステップとを含む方法。
  2. 当該所定シャードストア(20)が前記メッセージ(60)を返送する場合、前記リクエスト(13)が次いで別のシャードストア(20)に渡される、請求項1に記載の方法。
  3. −前記複数のシャードストア(20)に接続可能であって少なくとも1個のキー(12)が指すデータ(11)を求めるリクエストを扱うべく適合されたシャードルータ(50)を提供するステップと、
    −前記順序付けられた大域的範囲(14)の大域的部分範囲(54)をシャードストア識別子(22)と相関付けるべく適合された大域的部分範囲集合(52)を前記シャードストア識別子(22)に提供するステップと、
    −少なくとも1個のキー(12)が指すデータ(11)を求めるリクエスト(13)を扱う際に、
    −当該リクエストを前記シャードルータ(50)に提供するステップと、
    −前記シャードルータ(50)が、前記リクエスト(13)の少なくとも1個のキー(12)を含む大域的部分範囲(54)と相関付けられたシャードストア識別子(22)を判定するステップと、
    −前記シャードルータ(50)が、当該相関付けられたシャードストア識別子(22)の前記所定シャードストア(20)に前記リクエストを渡すステップと、
    −当該所定シャードストア(20)が、自身の局所的部分範囲集合(42)により、当該少なくとも1個のキー(12)が当該所定シャードストア(20)に格納されたシャード(30)の局所的部分範囲(40)に存在するか否かを検証するステップと、
    −少なくとも1個のキー(12)が、当該所定シャードストア(20)に格納された前記シャード(30)の前記1個以上の局所的部分範囲(40)に存在しない場合、
    −当該所定シャードストア(20)の前記局所的部分範囲集合(42)を含む前記メッセージ(60)を返送するステップと、
    −前記シャードルータ(50)が、前記所定シャードストア(20)の前記シャードストア識別子(22)を、前記メッセージ(60)の前記局所的部分範囲集合(42)の局所的部分範囲(40)に対応する大域的部分範囲(54)と相関付けることにより、前記メッセージ(60)に基づいて自身の大域的部分範囲集合(52)を更新するステップとを更に含む、請求項1または2に記載の方法。
  4. 前記リクエスト(13)を扱う前記所定シャードストア(20)の前記局所的部分範囲集合(42)が、自身の各シャードストア識別子(22)と相関付けられた他のシャードストア(20)に格納されたシャード(30)の1個以上の外部部分範囲(44)を含む外部部分範囲集合(46)を更に含み、更に、
    前記所定シャードストア(20)により前記リクエスト(13)を扱う際に、当該所定シャードストア(20)に格納されたシャード(30)の前記1個以上の局所的部分範囲(40)に少なくとも1個のキー(12)が存在しない場合、
    −前記局所的部分範囲集合(42)を含む前記メッセージ(60)を返送するステップと、
    −前記リクエスト(13)の少なくとも1個のキー(12)が当該局所的部分範囲集合(42)の前記外部部分範囲集合(46)の所定の外部部分範囲(44)に含まれているか否かを検証するステップと、
    −前記リクエスト(13)を次いで、当該外部部分範囲(44)と相関付けられた前記シャードストア識別子(22)を有する前記別のシャードストア(20)に提供するステップとを含む、請求項1〜3のいずれか1項に記載の方法。
  5. 請求項4において請求項3に従う場合、当該所定シャードストア(20)に格納された前記シャード(30)の前記1個以上の局所的部分範囲(40)に少なくとも1個のキー(12)が存在しない場合、
    −前記シャードルータ(50)が更に、前記別のシャードストア(20)の前記シャードストア識別子(22)を、前記メッセージ(60)の前記外部部分範囲集合(46)の前記所定の外部部分範囲(44)に対応する大域的部分範囲(54)を相関付けることにより、前記メッセージ(60)に基づいて自身の大域的部分範囲集合(52)を更新するステップを含む、請求項4に記載の方法。
  6. 移動部分範囲(70)内の全てのキー(12)が指すデータ(11)を含む移動シャード(72)の、前記所定シャードストア(20)から別のシャードストア(20)への移動動作(80)の結果、前記移動部分範囲(70)が前記所定シャードストア(20)の前記局所的部分範囲集合(42)から除去されて、前記別のシャードストア(20)の前記シャードストア識別子(22)と相関付けられた外部部分範囲(44)として前記所定シャードストア(20)の前記外部部分範囲集合(46)に追加される、請求項4または5に記載の方法。
  7. 移動部分範囲(70)内の全てのキー(12)が指すデータ(11)を含む移動シャード(72)の、前記所定シャードストア(20)から別のシャードストア(20)への前記移動動作(80)の結果、前記移動部分範囲(70)が局所的部分範囲(40)として前記別のシャードストア(20)の前記局所的部分範囲集合(42)に追加される、請求項6に記載の方法。
  8. 移動動作(80)の実行中に、前記移動動作(80)に関与する前記所定シャードストア(20)および/または前記別のシャードストア(20)の前記局所的部分範囲集合(42)の前記局所的部分範囲集合(42)だけが前記移動部分範囲(70)に基づいて更新される、請求項7に記載の方法。
  9. 前記移動動作(80)に関与する前記所定シャードストア(20)および前記別のシャードストア(20)が、公開局所的部分範囲集合(42PU)および非公開局所的部分範囲集合(42PR)を含み、そのような移動動作(80)の実行中に、
    −前記所定シャードストア(20)が前記移動部分範囲(70)に基づいて自身の公開局所的部分範囲集合(42PU)を更新するステップと、
    −前記所定シャードスト(20)が前記移動シャード(72)を前記別のシャードストア(20)へ送信するステップと、
    −前記別のシャードストア(20)が前記所定シャードストア(20)から前記移動シャード(72)を受信するステップと、
    −前記移動シャード(72)が正しく受信された場合、前記別のシャードストア(20)が、
    −自身の公開局所的部分範囲集合(42PU)および自身の非公開局所的部分範囲集合(42PR)の両方を前記移動部分範囲(70)に基づいて更新するステップと、
    −前記所定シャードストア(20)に移動肯定応答メッセージ(74)を送信するステップと、
    −前記所定シャードストア(20)が前記別のシャードストア(20)から前記移動肯定応答メッセージ(74)を受信した場合、前記所定シャードストア(20)が自身の非公開局所的部分範囲集合(42PR)を更新し、前記所定シャードストア(20)が前記移動シャード(72)を削除するステップと含む、請求項6〜8のいずれか1項に記載の方法。
  10. 前記所定シャードストア(20)が、移動動作(80)を実行してから所定時間後に、自身の公開局所的部分範囲集合(42PU)が、自身の非公開局所的部分範囲集合(42PR)とは異なることを検知した場合、前記所定シャードストア(20)が前記移動シャード(72)を前記別のシャードストア(20)へ再送信する、請求項9に記載の方法。
  11. 前記別のシャードストア(20)に対して、自身の公開局所的部分範囲集合(42PU)に既に存在する前記移動部分範囲(70)が前記所定シャードストア(20)により前記移動シャード(72)が提供されている場合、前記別のシャードストア(20)が、前記移動シャード(72)を受信することなく前記所定シャードストア(20)に対して移動肯定応答メッセージ(74)を送信する、請求項10に記載の方法。
  12. 前記移動シャード(72)が、前記所定シャードストア(20)のシャード(30)の少なくとも1個の順序付けられた部分集合を含むように生成される、請求項6〜11に記載の方法。
  13. サイズが移動サイズ閾値(90)を上回るシャード(30)の少なくとも1個の順序付けられた部分集合を移動させる移動ジョブ(82)が提供された場合、前記移動動作(80)の各々の前記移動シャード(72)のサイズが前記移動サイズ閾値(90)以下であるように、複数の移動動作(80)が前記移動ジョブ(82)に基づいて生成され、前記移動ジョブ(82)が、前記複数の移動動作(80)により、
    −移動ジョブキー範囲、
    −キー(12)の移動ジョブ量、および/または
    −前記シャード(30)
    の前記順序付けられた部分集合の移動ジョブサイズ
    の移動が完了するまでシャード(30)の順序付けられた部分集合を前記所定シャードストア(20)から別のシャードストア(20)へ移動させるリクエストを含む、請求項6〜12のいずれか1項に記載の方法。
  14. 所定シャード(30)について、前記所定シャード(30)の前記局所的部分範囲(40)に隣接する局所的部分範囲(40)を有する同一シャードストア(20)で別のシャード(30)が利用可能であることが検知された場合、当該所定シャード(30)が前記別のシャード(30)にマージされてマージ済みシャード(30)を形成すると共に、前記局所的部分範囲集合(42)が、前記所定シャード(30)の隣接する局所的部分範囲(40)および前記別のシャード(30)の両方を、マージ済みシャード(30)のマージ済み局所的部分範囲(40)にマージすることにより更新される、請求項1〜13のいずれか1項に記載の方法。
  15. プロセッサにより実行された場合に請求項1〜14のいずれか1項に記載の方法を実行すべく適合されたソフトウェアコードを含むコンピュータプログラム。
JP2015178972A 2014-09-18 2015-09-10 コンピュータ実装された動的シャーディング方法 Expired - Fee Related JP6198210B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP14185304.4 2014-09-18
EP14185304.4A EP2998881B1 (en) 2014-09-18 2014-09-18 A computer implemented method for dynamic sharding

Publications (2)

Publication Number Publication Date
JP2016062609A true JP2016062609A (ja) 2016-04-25
JP6198210B2 JP6198210B2 (ja) 2017-09-20

Family

ID=51589117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015178972A Expired - Fee Related JP6198210B2 (ja) 2014-09-18 2015-09-10 コンピュータ実装された動的シャーディング方法

Country Status (7)

Country Link
US (2) US9965539B2 (ja)
EP (1) EP2998881B1 (ja)
JP (1) JP6198210B2 (ja)
KR (1) KR101852136B1 (ja)
CN (1) CN105447075B (ja)
AU (1) AU2015221548B2 (ja)
CA (1) CA2903841A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020536341A (ja) * 2017-10-05 2020-12-10 ザダラ ストレージ インコーポレイテッド 動的キーレンジを有するkvストアにおけるシャードの維持
JP2022551335A (ja) * 2019-11-25 2022-12-08 グーグル エルエルシー ルール違反検出

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9323809B2 (en) 2014-03-10 2016-04-26 Interana, Inc. System and methods for rapid data analysis
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9747319B2 (en) * 2014-12-31 2017-08-29 Nexenta Systems, Inc. Read-modify-write processing of chunks at the storage server level in a distributed object storage system
US11106871B2 (en) 2015-01-23 2021-08-31 Conversica, Inc. Systems and methods for configurable messaging response-action engine
US11100285B2 (en) 2015-01-23 2021-08-24 Conversica, Inc. Systems and methods for configurable messaging with feature extraction
US10296507B2 (en) * 2015-02-12 2019-05-21 Interana, Inc. Methods for enhancing rapid data analysis
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
KR101765517B1 (ko) * 2016-04-06 2017-08-08 한양대학교 산학협력단 데이터베이스를 저널링하는 장치 및 방법
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11169706B2 (en) 2016-05-26 2021-11-09 Nutanix, Inc. Rebalancing storage I/O workloads by storage controller selection and redirection
US10628462B2 (en) * 2016-06-27 2020-04-21 Microsoft Technology Licensing, Llc Propagating a status among related events
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10146835B2 (en) 2016-08-23 2018-12-04 Interana, Inc. Methods for stratified sampling-based query execution
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10678817B2 (en) * 2017-02-03 2020-06-09 DataJaguar, Inc Systems and methods of scalable distributed databases
US10073888B1 (en) * 2017-02-27 2018-09-11 Timescacle, Inc. Adjusting partitioning policies of a database system in view of storage reconfiguration
CN107103032B (zh) * 2017-03-21 2020-02-28 中国科学院计算机网络信息中心 一种分布式环境下避免全局排序的海量数据分页查询方法
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
CN107491965B (zh) 2017-07-31 2020-07-10 阿里巴巴集团控股有限公司 一种生物特征库的建立方法和装置
US10769126B1 (en) * 2017-09-22 2020-09-08 Amazon Technologies, Inc. Data entropy reduction across stream shard
WO2019084321A1 (en) * 2017-10-26 2019-05-02 Conversica, Inc. SYSTEMS AND METHODS FOR CONFIGURABLE MESSAGE RESPONSE-ACTION ENGINE
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
CN107819875B (zh) * 2017-11-27 2021-04-09 深信服科技股份有限公司 一种云平台下用户专享服务方法及装置
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11188531B2 (en) 2018-02-27 2021-11-30 Elasticsearch B.V. Systems and methods for converting and resolving structured queries as search queries
US11914592B2 (en) 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US10685031B2 (en) * 2018-03-27 2020-06-16 New Relic, Inc. Dynamic hash partitioning for large-scale database management systems
US10901845B2 (en) * 2018-04-16 2021-01-26 Microsoft Technology Licensing, Llc Erasure coding for a single-image memory
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
CN108874753B (zh) * 2018-06-13 2022-05-10 百度在线网络技术(北京)有限公司 主题帖回复的查找方法、装置和计算机设备
US11251939B2 (en) * 2018-08-31 2022-02-15 Quantifind, Inc. Apparatuses, methods and systems for common key identification in distributed data environments
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10922142B2 (en) 2018-10-31 2021-02-16 Nutanix, Inc. Multi-stage IOPS allocation
US11461270B2 (en) * 2018-10-31 2022-10-04 Elasticsearch B.V. Shard splitting
US10997204B2 (en) 2018-12-21 2021-05-04 Elasticsearch B.V. Cross cluster replication
RU2744028C2 (ru) 2018-12-26 2021-03-02 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для хранения множества документов
US11030222B2 (en) 2019-04-09 2021-06-08 Fair Isaac Corporation Similarity sharding
US11943295B2 (en) 2019-04-09 2024-03-26 Elasticsearch B.V. Single bi-directional point of policy control, administration, interactive queries, and security protections
US11431558B2 (en) 2019-04-09 2022-08-30 Elasticsearch B.V. Data shipper agent management and configuration systems and methods
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US10891165B2 (en) 2019-04-12 2021-01-12 Elasticsearch B.V. Frozen indices
US10996887B2 (en) * 2019-04-29 2021-05-04 EMC IP Holding Company LLC Clustered storage system with dynamic space assignments across processing modules to counter unbalanced conditions
US11182093B2 (en) 2019-05-02 2021-11-23 Elasticsearch B.V. Index lifecycle management
CN113994626B (zh) * 2019-05-22 2023-01-17 妙泰公司 具有增强的安全性、弹性和控制的分布式数据存储方法及系统
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10977234B2 (en) 2019-08-02 2021-04-13 Timescale, Inc. Combining compressed and uncompressed data at query time for efficient database analytics
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11409711B2 (en) * 2019-12-03 2022-08-09 Western Digital Technologies, Inc. Barriers for dependent operations among sharded data stores
US11567899B2 (en) 2019-12-03 2023-01-31 Western Digital Technologies, Inc. Managing dependent delete operations among data stores
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
WO2021231554A1 (en) 2020-05-12 2021-11-18 AirMettle, Inc. Partitioning, processing, and protecting data
CN111858771A (zh) * 2020-07-30 2020-10-30 杭州复杂美科技有限公司 分布式数据存储方法、设备和存储介质
US11604674B2 (en) 2020-09-04 2023-03-14 Elasticsearch B.V. Systems and methods for detecting and filtering function calls within processes for malware behavior
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
WO2022177564A1 (en) * 2021-02-18 2022-08-25 Futurewei Technologies, Inc. Distributed naming scheme for network-attached storage devices
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11620274B2 (en) * 2021-04-30 2023-04-04 Intuit Inc. Method and system of automatically predicting anomalies in online forms
KR20240057605A (ko) * 2022-10-25 2024-05-03 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트 생성 시스템 및 방법
US11995084B1 (en) 2023-10-05 2024-05-28 Timescale, Inc. Database system for querying time-series data stored in a tiered storage using a cloud platform

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030165A (ja) * 2011-07-28 2013-02-07 Nhn Business Platform Corp データ格納方法及び装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693813B1 (en) * 2007-03-30 2010-04-06 Google Inc. Index server architecture using tiered and sharded phrase posting lists
US8392482B1 (en) * 2008-03-31 2013-03-05 Amazon Technologies, Inc. Versioning of database partition maps
WO2012068184A1 (en) 2010-11-15 2012-05-24 File System Labs Llc Methods and apparatus for distributed data storage
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
EP2469411B1 (en) 2010-12-27 2013-05-29 Amplidata NV A distributed object storage system
US9037618B2 (en) * 2011-03-31 2015-05-19 Novell, Inc. Distributed, unified file system operations
US9047331B2 (en) 2011-04-21 2015-06-02 International Business Machines Corporation Scalable row-store with consensus-based replication
US9231846B2 (en) * 2011-11-22 2016-01-05 Microsoft Technology Licensing, Llc Providing network capability over a converged interconnect fabric
US10489412B2 (en) 2012-03-29 2019-11-26 Hitachi Vantara Corporation Highly available search index with storage node addition and removal
EP2672387B1 (en) 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
US20140108421A1 (en) 2012-10-04 2014-04-17 Codefutures Corporation Partitioning database data in a sharded database
KR101544356B1 (ko) * 2012-10-31 2015-08-13 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
WO2014201402A1 (en) * 2013-06-14 2014-12-18 American Chemical Society Systems and methods for searching chemical structures

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030165A (ja) * 2011-07-28 2013-02-07 Nhn Business Platform Corp データ格納方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
近藤直樹ほか: "複数分散インデックス手法の実装・比較のための共通フレームワークの実現", 第4回データ工学と情報マネジメントに関するフォーラム論文集 (第10回日本データベース学会年次大会), JPN6017002185, 13 July 2012 (2012-07-13), JP *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020536341A (ja) * 2017-10-05 2020-12-10 ザダラ ストレージ インコーポレイテッド 動的キーレンジを有するkvストアにおけるシャードの維持
JP7345482B2 (ja) 2017-10-05 2023-09-15 ザダラ ストレージ インコーポレイテッド 動的キーレンジを有するkvストアにおけるシャードの維持
JP2022551335A (ja) * 2019-11-25 2022-12-08 グーグル エルエルシー ルール違反検出
JP7275392B2 (ja) 2019-11-25 2023-05-17 グーグル エルエルシー ルール違反検出

Also Published As

Publication number Publication date
CN105447075A (zh) 2016-03-30
JP6198210B2 (ja) 2017-09-20
AU2015221548B2 (en) 2017-01-19
US20180253484A1 (en) 2018-09-06
US9965539B2 (en) 2018-05-08
AU2015221548A1 (en) 2016-04-07
EP2998881B1 (en) 2018-07-25
CN105447075B (zh) 2019-03-15
KR20160037761A (ko) 2016-04-06
CA2903841A1 (en) 2016-03-18
US10776396B2 (en) 2020-09-15
US20160085839A1 (en) 2016-03-24
KR101852136B1 (ko) 2018-06-08
EP2998881A1 (en) 2016-03-23

Similar Documents

Publication Publication Date Title
JP6198210B2 (ja) コンピュータ実装された動的シャーディング方法
US10649988B1 (en) Artificial intelligence and machine learning infrastructure
US10613791B2 (en) Portable snapshot replication between storage systems
US20220318083A1 (en) Prioritizing Highly Performant Storage Systems For Servicing A Synchronously Replicated Dataset
US10209893B2 (en) Massively scalable object storage for storing object replicas
US10795817B2 (en) Cache coherence for file system interfaces
US9081841B2 (en) Asynchronous distributed garbage collection for replicated storage clusters
US20170220662A1 (en) Massively Scalable Object Storage System
US20170126805A1 (en) Allocating delegates for modification of an index structure
CN102708165B (zh) 分布式文件系统中的文件处理方法及装置
US20120233119A1 (en) Openstack database replication
CN103150394A (zh) 面向高性能计算的分布式文件系统元数据管理方法
US20180074903A1 (en) Processing access requests in a dispersed storage network
US11347647B2 (en) Adaptive cache commit delay for write aggregation
US11442645B2 (en) Distributed storage system expansion mechanism
US11422731B1 (en) Metadata-based replication of a dataset
US11868334B2 (en) Integrating change tracking of storage objects of a distributed object storage database into a distributed storage system
Cao Efficient Data Management and Processing in Big Data Applications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160106

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170419

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

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170815

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170825

R150 Certificate of patent or registration of utility model

Ref document number: 6198210

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees