JP2021500649A - シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム - Google Patents

シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム Download PDF

Info

Publication number
JP2021500649A
JP2021500649A JP2020520560A JP2020520560A JP2021500649A JP 2021500649 A JP2021500649 A JP 2021500649A JP 2020520560 A JP2020520560 A JP 2020520560A JP 2020520560 A JP2020520560 A JP 2020520560A JP 2021500649 A JP2021500649 A JP 2021500649A
Authority
JP
Japan
Prior art keywords
shard
database
records
record
bloom
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
JP2020520560A
Other languages
English (en)
Other versions
JP2021500649A5 (ja
JP7046172B2 (ja
Inventor
ワレン、クロード、ネルソン、ジュニア
リャン、マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021500649A publication Critical patent/JP2021500649A/ja
Publication of JP2021500649A5 publication Critical patent/JP2021500649A5/ja
Application granted granted Critical
Publication of JP7046172B2 publication Critical patent/JP7046172B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • 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/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations

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)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】シャード・データベースのシャード・テーブルにレコードを記憶する、およびそこからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品およびシステムを提供する。【解決手段】シャード・データベースは、複数のデータベース・シャードを含む。データベース・シャードは、それぞれが、シャード・テーブルのレコードの部分集合を記憶するように構成される。データベース・シャードは、また、それぞれが、それぞれのブルーム・フィルタと関連する。複数のそれぞれのブルーム・フィルタのそれぞれと共に用いるために、記憶されるレコードのシャーディング・キーのそれぞれの表現を生成することによって、レコードが、シャード・テーブルに挿入される。次に、複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現との間のハミング距離が計算され、レコードを記憶するためのデータベース・シャードが、計算されたハミング距離に基づき、それらのデータベース・シャードの中から選択される。【選択図】図1

Description

本発明は、シャード・データベースに関する。詳しくは、本発明は、シャード・データベースのシャード・テーブルにレコードを記憶する、およびそこからレコードを検索するための方法、システム、およびコンピュータ・プログラム製品に関する。
データベースのシャーディングとは、データベースを、データベース・シャードとして知られている、いくつかのより小さな部分に分けるための知られている技術である。この技術は、また、水平パーティショニング(horizontal partitioning)と称されることもある。
一般に、シャーディングがデータベースに適用されるときには、データベース・シャードのそれぞれが、他のデータベース・シャードの全部と同じスキーマ(これは、データベース全体またはその何らかの部分集合のスキーマである可能性がある)を含むように構成される。換言すると、データベース・シャードのそれぞれが、他のデータベース・シャードのそれぞれと同じテーブル定義を含む。データベース・シャーディング技術が適用される間には、あるテーブルが、シャード・テーブルとなるように構成されることがあり得る。これは、そのようなテーブルのためのレコードは、それぞれのデータベース・シャードにおけるそのようなテーブルに記憶されているレコード(またはデータ)がそれぞれのデータベース・シャードに対して異なるように、データベース・シャードの間で分散される、ということを意味する。データベース・シャードの間でのシャード・テーブルのレコードの分散は、典型的には、シャード・テーブルの1つまたは複数のフィールドから導かれるシャーディング・キーの値に基づいて、決定される。たとえば、シャーディング・キーは、シャード・テーブルの「id」フィールドとして定義され得るのであるが、第1の範囲に属する「id」を有するレコードが、第1のデータベース・シャードにおけるテーブルに記憶され得るのに対し、他方で、異なる第2の範囲に属する「id」を有するレコードは、第2のデータベース・シャードにおけるテーブルに記憶され得る。したがって、たとえデータベース・シャードが相互に同じスキーマを有する場合であっても、それらは、そのスキーマの内部のいずれかのシャード・テーブルに対するレコードの部分集合を含むだけである。シャード・テーブルからレコードを検索するためには、どのデータベース・シャードが関心対象であるレコードを記憶しているのかを決定することが、最初に必要である。これは、たとえば、そのレコードが第1のデータベース・シャードに記憶されるべきであったのか、または第2のデータベース・シャードに記憶されるべきだったのかを判断するために、シャーディング・キーが第1の範囲に属するのか、または第2の範囲に属するのかを判断することによって、達成され得る。
シャード・テーブルに加え、シャード・データベースは、また、データベース・シャードのそれぞれの間で複製される複製テーブルも含み得る。これは、データベース・シャードのそれぞれが、それらの複製テーブルのための全部のレコードを含む、ということを意味する。シャード・データベースのテーブルのうちのいくつかを複製テーブルとして含むことによって、異なるデータベース・シャードの間で実行される必要のあるルックアップの回数を減少させることが可能であり、それによって、シャード・データベースのパフォーマンスを向上させることになる。
データベースのシャーディングは、データベースのパフォーマンスを向上させるために、用いられ得る。たとえば、データベースが非常に多数のレコードを記憶する、または非常に多数のクエリを受け取る場合に、別個の計算機での動作が可能ないくつかのデータベース・シャードを作成するように、データベースのシャーディングが用いられ得るのであって、それにより、多数のレコードを記憶するまたは多数のクエリに応答するためのデータベース・システムの容量を向上させることになる。これは、それぞれのデータベース・シャードが記憶される計算機が、そのデータベース・シャードに記憶されているデータの部分集合に関するクエリを独立に処理できるからである。
データベースのシャーディングから実現される利点を最大化するためには、データベース・シャードのそれぞれのために要求されるストレージ要件と計算能力とがおおよそ均衡するように、シャード・テーブルのレコードが、データベース・シャードのそれぞれの間で均等に分散されることが望ましい。さらに、計算能力またはストレージ要件におけるいずれかの増加が充足されることを許容されるように、追加的なデータベース・シャードがシャード・データベースに動的に追加されることを可能にすることが望ましい。
典型的には、シャード・データベースにおけるシャード・テーブルにレコードを配分するための方法は、結果的に、データベース・シャードのそれぞれのために要求されるストレージ要件と計算能力とが均衡するように、ランダムに分散されたレコードを生じさせることはない。たとえば、「id」フィールドが、第1の範囲に属するのか、それとも第2の範囲に属するのか、に基づいてレコードをシャードの間で分散させるという方法は、より低い「id」を有するレコードが、同じデータベース・シャードに集められ得るということを意味する。より古いレコードがより低い「id」を有する、というように、「id」がインクリメンタルに割り当てられる場合には、より新しいレコードの方がより規則的にクエリを受ける場合に、データベース・シャードの間で計算負荷に関する不均衡が生じることになり得る。
加えて、シャード・データベースにおけるシャード・テーブルにレコードを配分するための典型的な方法は、データベース・シャードが追加されるときに、追加的なデータベース・シャードが動的に追加されることを許容しないか、または、結果的に複雑性を増大させるかのいずれかであり、シャード・データベースからレコードを検索するときのパフォーマンスを低下させる。
本発明のある態様によると、シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法が提供される。シャード・データベースは、複数のデータベース・シャードを含む。データベース・シャードは、それぞれが、シャード・テーブルのレコードの部分集合を記憶するように構成される。データベース・シャードは、また、それぞれのブルーム・フィルタと関連している。ブルーム・フィルタは、特定のシャーディング・キーと関連するレコードが、それが関連するデータベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成される。この方法は、記憶されるレコードのためのシャーディング・キーを取得することを含む。このシャーディング・キーは、レコードの1つまたは複数のフィールドに基づく。この方法は、さらに、複数のそれぞれのブルーム・フィルタのそれぞれと共に用いるためのシャーディング・キーのそれぞれの表現を生成することを含む。与えられたブルーム・フィルタのための表現が、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数をシャーディング・キーに適用することによって、生成される。この方法は、さらに、複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現との間のハミング距離を計算することを含む。この方法は、さらに、計算されたハミング距離に基づき、データベース・シャードを選択することと、レコードを選択されたデータベース・シャードに記憶することとを含む。
ブルーム・フィルタは、ある要素が、ある集合の元であるかまたは元でないかをテストするのに用いられ得る、既知のデータ構造である。ブルーム・フィルタは、固定長のビット・ベクトル(または、アレイ)におけるその集合に含まれるかどうかを表す確率的なデータ構造である。最初は、ブルーム・フィルタによって表される集合が空集合であるときには、ベクトルにおける各ビットは「0」である。固定長のビット・ベクトルに加え、各ブルーム・フィルタは、それ自体と関連する所定の個数の異なるハッシュ・アルゴリズムを有する。これらのハッシュ・アルゴリズムは、それぞれが、任意の与えられた要素を、ベクトルにおける特定のビットにマッピングする。ブルーム・フィルタによって表される集合に、要素が追加されると、ブルーム・フィルタは、各ハッシュ・アルゴリズムを、それぞれの追加された要素に適用し、追加された要素がそのハッシュ・アルゴリズムによってマッピングされるビット・ベクトルの対応するビットを、「1」に設定する。
ある特定の要素がブルーム・フィルタによって表される集合に属するかどうかをテストするために、ハッシュ・アルゴリズムが、その要素に適用され、その要素がハッシュ・アルゴリズムによってマッピングされたビット・ベクトルのビットが、点検される。その要素がマッピングされたビットのいずれかが「0」である場合には、その要素は、ブルーム・フィルタによって表される集合に属さない。しかし、その要素がマッピングされたビットがすべて「1」である場合には、その要素は、ブルーム・フィルタによって表される集合に属する。
ブルーム・フィルタは、ある特定の要素が集合に属さないことを確定的に判断するのに用いることが可能であるが、実際には属していないときに、ある特定の要素が集合に属すると誤って示す偽陽性を返す場合があり得る。これは、やはりそれらのビットにマッピングされる他の要素がその集合に挿入されていることを通じて、その要素がマッピングされるビットが「1」に設定される場合があり得るからである。換言すると、ブルーム・フィルタは、ある与えられた要素に対して、2つの結論、すなわち、(1)その要素は、ブルーム・フィルタによって表される集合に属さない、または、(2)その要素は、ブルーム・フィルタによって表される集合に属する可能性がある、のうちの一方を提供し得るのである。ブルーム・フィルタが偽陽性を提供する蓋然性は、ブルーム・フィルタによって用いられるビット・ベクトルにおけるビット数と、それによって用いられる異なるハッシュ・アルゴリズムの個数とによって、決定される。これらのパラメータは、したがって、ブルーム・フィルタから偽陽性を受け取る所望の蓋然性を提供するためにブルーム・フィルタを実装するときに、選択することが可能である。
ブルーム・フィルタが集合への所属の有無を表す態様のため、ブルーム・フィルタによって表される集合から項目を削除することは、可能でない。しかし、表されている集合から項目が削除されることを可能にするブルーム・フィルタにおける変動は、知られている。特に、カウンティング・フィルタは、ベクトルにおける各ビットを、代わりにnビットのカウンタに拡張するタイプのブルーム・フィルタであり、挿入された要素によって各ビットがマッピングされた回数が記録されることを可能にする。これにより、削除される要素がハッシュ・アルゴリズムによってマッピングされるベクトルにおける位置を決定し、それらの位置におけるnビットのカウンタをデクリメントすることによって、カウンティング・フィルタによって表される集合から要素が削除されることが可能になる。
ハミング距離とは、長さの等しい2つのストリングの間の差に関する尺度である。ハミング距離は、一方のストリングを他方のストリングに変化させるのに要求される置換の最小回数(すなわち、2つのストリングが相互に異なっている位置の個数)を測定する。たとえば、4ビットのバイナリ・ストリングである1001と1010との間のハミング距離は2であるが、その理由は、最後の2ビットが相互に異なり、他方で、最初の2ビットは同じであるから、である。
本出願の発明者たちは、シャード・データベースにおけるレコードの分散を向上させるために、ブルーム・フィルタを、ハミング距離と共に、シャード・データベースにおいて用いることが可能である、ということを認識したのである。特に、各データベース・シャードと関連するブルーム・フィルタとそのフィルタと共に用いるためのシャーディング・キーの表現との間のハミング距離に基づいて、レコードを記憶するデータベース・シャードを選択することにより、提案されている実施形態は、シャード・データベースのデータベース・シャードの間で、レコードを、より均一に分散させることができる。これで、シャード・データベースの性能を向上させることができる。
さらに、そのようなハミング距離に基づいてデータベース・シャードの間でレコードを分散させる(または、割り当てる)ことで、データベース・シャードからのレコードの検索も、向上させることが可能になる。たとえば、レコードをデータベース・シャードに割り当てるためにハミング距離を用いることにより、類似のデータは同じ場所に配置される可能性が、より高くなる。次に、ブルーム・フィルタは、特定のレコードを記憶しないデータベース・シャードを削除する非常に迅速な方法を提供する。
データベース・シャードとそれぞれ関連する各ブルーム・フィルタは、オプションであるが、同じビット数と同じハッシュ関数を用いることができる。用いられるビット数とハッシュ関数とに関してブルーム・フィルタを同じにすることによって、シャーディング・キーの1つの表現だけを生成することが必要になる。この表現は、各ブルーム・フィルタと共に用いるのに適切であり得る。
それぞれのブルーム・フィルタは、それぞれが、オプションであるが、カウンティング・フィルタであり得る。カウンティング・フィルタを用いることで、レコードを削除することが可能になり、それらの削除をカウンティング・フィルタによって表すことが可能になるために、削除されるレコードのためのシャーディング・キーの表現に対するフィルタ・マッチングの結果として、偽陽性が提供されることを回避できる。
選択されるデータベース・シャードは、計算されたハミング距離が計算されたハミング距離の中で最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードであり得る。ブルーム・フィルタが、そのブルーム・フィルタと共に用いられるレコードの表現からのハミング距離が最小であるようなデータベース・シャードにレコードを記憶することにより、各ブルーム・フィルタを相互から、より明確に分けて保持することができる、と考えられる。この結果として、平均すると、特定のレコードに対するマッチを示すブルーム・フィルタがより少数となり、レコードを検索するためにサーチされる必要があるデータベース・シャードの個数を削減させる。この技術は、また、データベース・シャードのそれぞれへのレコードの割り当てを均衡させるように機能し得るのであって、それにより、レコードが発散し過ぎることが回避される。
レコードをデータベース・シャードの間で分散させるために提案されているアプローチは、また、各データベース・シャードと関連するブルーム・フィルタに対する偽陽性を減少させることができる。この理由は、ブルーム・フィルタと共に用いるためのそれらの表現という点で最も類似しているレコードは、同じデータベース・シャード上に記憶される可能性がより高く、したがって、シャード・データベースにおいて同じブルーム・フィルタによって表される可能性が、より高いからである。偽陽性の比率が低下することで、平均では、特定のレコードを検索するためにサーチする必要があるデータベース・シャードの個数が少なくなり得る。
計算されたハミング距離が計算されたハミング距離の中の最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードを選択することは、計算されたハミング距離が最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードの中からデータベース・シャードをランダムに選択することを含み得る。これは、複数のブルーム・フィルタがシャーディング・キーのそれらのそれぞれの表現への最小のハミング距離を有するときに、データベース・シャードを選択する有効な方法を提供することができる。
シャード・データベースは、オプションであるが、それぞれのデータベース・シャードが新たなレコードを記憶するために利用可能であるかまたは利用不可能であるかに関する指示をさらに含み得る。この場合に、シャーディング・キーのそれぞれの表現が生成される複数のブルーム・フィルタは、使用不可能であると示されているデータベース・シャードと関連するどのブルーム・フィルタも含まないことがあり得る。これは、記憶し過ぎているすなわち過負荷状態のデータベース・シャードは、どのような追加的なレコードを記憶することに関しても考慮から排除することができ、各データベース・シャードの性能を最小レベルよりは上に維持するのに役立ち得る。
いくつかの実施形態では、オプションであるが、使用可能であると示されている全部のデータベース・シャードと関連するそれぞれのブルーム・フィルタと共に用いられるシャーディング・キーの表現が、生成され得る。このようにして、提案されている実施形態によると、利用可能なデータベース・シャードの全体でのレコードのよりよい分散が保証され得る。
シャード・データベースは、オプションであるが、データベース・シャードのそれぞれの中に挿入されたレコードのそれぞれの個数をカウントするための、それぞれの挿入カウンタをさらに含むことがある。提案されている実施形態では、レコードを記憶するように選択されたデータベース・シャードのための挿入カウンタを、インクリメントすることができる。この挿入カウンタは、したがって、各データベース・シャードの中に挿入されたレコードの個数の計数を、提供し得る。
提案されている実施形態は、オプションであるが、選択されたデータベース・シャードの中に挿入されたレコードの個数が所定の閾値を超えるかどうかを判断して、超える場合には、選択されたデータベース・シャードに、新たなレコードを記憶するためには利用不可能であるとのマークを付することを、さらに含むことがあり得る。このようにして、実施形態によると、データベース・シャードが、シャード・データベースの性能を低下させ得るような態様で過剰に用いられる状態になるのを回避することができる。
実施形態によると、オプションであるが、新たなデータベース・シャードと、関連するブルーム・フィルタとをシャード・データベースに追加することが、さらに含まれ得る。レコードをシャード・データベースに記憶するための提案されている概念は、新たなデータベース・シャードがシャード・データベースに挿入されることに関して柔軟性を提供し得る。新たなデータベース・シャードをシャード・データベースの中に動的に挿入することによって、シャード・データベースの容量と性能とを、需要を満たすために、増大させることができる。また、挿入されたレコードを記憶するデータベース・シャードを選択するためにハミング距離を用いることにより、新たに挿入されたデータベース・シャードを組み入れるために自動的な再均衡化がなされるように、データベース・シャードの全体でのレコードの配分が可能になり得る。
本発明の別の態様によると、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法が提供される。シャード・データベースは、複数のデータベース・シャードを含む。データベース・シャードは、それぞれが、シャード・テーブルのレコードの部分集合を記憶するように構成されている。データベース・シャードは、また、それぞれがそれぞれのブルーム・フィルタと関連する。ブルーム・フィルタは、特定のシャーディング・キーと関連するレコードが、それと関連するデータベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されている。この方法は、検索されるレコードのためのシャーディング・キーを取得することを含む。このシャーディング・キーは、レコードの1つまたは複数のフィールドに基づく。この方法は、さらに、複数のデータベース・シャードと関連する各ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現を生成することを含む。得られたブルーム・フィルタの表現は、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数をシャーディング・キーに適用することによって、生成される。この方法は、さらに、それぞれのブルーム・フィルタのうちのどれが、シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別することを含み得る。この方法は、さらに、レコードを見つけて提供するために、識別されたブルーム・フィルタと関連するデータベース・シャードをサーチすることを含み得る。
各データベース・シャードと関連するブルーム・フィルタを使用することにより、残存しているデータベース・シャードに関する徹底的なサーチが行われる必要がある前に、多数のデータベース・シャードを非常に迅速かつ効率的に考慮から除くことができる可能性が高くなる。これにより、シャード・データベースのシャード・テーブルからレコードを検索する効率を向上させることができる。
データベース・シャードとそれぞれ関連するブルーム・フィルタは、それぞれが、オプションではあるが、同じビット数と同じハッシュ関数とを用いることが表される。それらが用いるビット数とハッシュ関数という点でブルーム・フィルタを同一にすることにより、シャーディング・キーの表現は、ただ1つだけ、生成する必要があり得る。そして、そのような表現は、各ブルーム・フィルタと共に用いるのに適切であり得る。
本発明の別の態様によると、シャード・データベースを記憶するためのシステムが提供される。シャード・データベースは、複数のデータベース・シャードを含む。データベース・シャードは、それぞれが、シャード・テーブルのレコードの部分集合を記憶するように構成されている。データベース・シャードは、また、それぞれが、それぞれのブルーム・フィルタと関連する。ブルーム・フィルタは、特定のシャーディング・キーと関連するレコードがそれと関連するデータベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されている。このシステムは、複数の計算システムを含む。それぞれの計算システムは、複数のデータベース・シャードのうちの1つまたは複数を記憶するように構成されている。このシステムは、さらに、シャード・データベースのシャード・テーブルからレコードを検索するための上述された方法に従って、シャード・データベースのシャード・テーブルからレコードを検索するように構成されたコントローラを含む。
このコントローラは、オプションであるが、シャード・データベースのシャード・テーブルにレコードを記憶するための上述された方法に従って、シャード・データベースのシャード・テーブルにレコードを記憶するように構成され得る。
シャード・データベースは、さらに、オプションであるが、それぞれの削除カウンタを含み得る。この削除カウンタは、それらのそれぞれのデータベース・シャードから削除されたレコードの個数の計数を維持し得る。コントローラは、さらに、オプションであるが、特定のデータベース・シャードから削除されたレコードの個数が当該データベース・シャードのためのそれぞれの所定の閾値を超えるかどうかを判断するように構成することができる。削除されたレコードの個数がそれぞれの所定の閾値を超える場合には、コントローラは、当該データベース・シャードに現に記憶されているレコードに基づいて、当該データベース・シャードに対するブルーム・フィルタを再構成することができる。削除の回数が所定の閾値をいったん超えるときに、データベース・シャードのためにブルーム・フィルタを再構築することによって、コントローラは、ブルーム・フィルタから結果的に生じる可能性が高い、削除されたレコードに基づいてマッチを示す偽陽性の個数を減らすことができる。
本発明の別の態様によると、シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ・プログラム製品が、提供される。このコンピュータ・プログラム製品は、コンピュータ可読記憶媒体を構成している。コンピュータ可読記憶媒体は、その上にプログラム命令が記憶されていて、これは、プロセッサによって実行可能である。プログラム命令は、シャード・データベースのシャード・テーブルにレコードを記憶するための上述された方法のステップを遂行するように、プロセッサによって実行可能である。
本発明の別の態様によると、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ・プログラム製品が、提供される。このコンピュータ・プログラム製品は、コンピュータ可読記憶媒体を構成している。コンピュータ可読記憶媒体は、その上にプログラム命令が記憶されていて、これは、プロセッサによって実行可能である。プログラム命令は、シャード・データベースのシャード・テーブルからレコードを検索するための上述された方法のステップを遂行するように、プロセッサによって実行可能である。
別の態様により、シャード・データベースのシャード・テーブルにレコードを記憶するためのシステムが提供されるが、シャード・データベースは、複数のデータベース・シャードを含み、データベース・シャードのそれぞれは、シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、このシステムは、記憶されるレコードのためのシャーディング・キーであって、レコードの1つまたは複数のフィールドに基づくシャーディング・キーを取得し、複数のそれぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数をシャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現を生成し、複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現との間のハミング距離を計算し、計算されたハミング距離に基づき、データベース・シャードを選択し、および、レコードを選択されたデータベース・シャードに記憶するように、構成可能である。
別の態様により、シャード・データベースのシャード・テーブルからレコードを検索するためのシステムが提供されるが、シャード・データベースは、複数のデータベース・シャードを含み、データベース・シャードのそれぞれは、シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、このシステムは、検索されるレコードのためのシャーディング・キーであって、レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得し、データベース・シャードのそれぞれと関連するそれぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数をシャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるためのシャーディング・キーのそれぞれの表現を生成し、それぞれのブルーム・フィルタのうちのどれが、シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別し、レコードを見つけるために、識別されたブルーム・フィルタと関連するデータベース・シャードをサーチし、レコードを提供するように構成可能である。
次に、本発明の実施形態が、単に例によって、以下の添付された図面を参照して、説明される。
本発明の実施形態がその上で動作し得る例示的なコンピュータ・システムの概略的図解である。 本発明の実施形態による例示的なシャード・データベースの概略的図解である。 本発明の実施形態による、シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法の概略的図解である。 本発明の実施形態による、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法の概略的図解である。
以下の説明と図面において、本発明のある特定の実施形態が説明される。しかし、本発明は説明される実施形態に限定されないこと、いくつかの実施形態は以下で説明される特徴の全部を含むことはないことが、理解されるであろう。しかし、添付の特許請求の範囲に記載されている本発明のより広い思想および範囲から逸脱することなく、本明細書において様々な修正および変更を行い得ることは明らかであろう。また、本発明の実施形態がある方法を構築している本出願のコンテキストでは、そのような方法は、コンピュータによる実行のためのプロセス(すなわち、コンピュータ実装方法)であることを理解されたい。この方法の様々なステップは、したがって、コンピュータ・プログラムの様々な部分(たとえば、1つまたは複数のアルゴリズムの様々な部分)を反映する。
添付の図面の図1は、本発明の実施形態がその上で動作し得る例示的なコンピュータ・システム100を概略的に図解している。例示的なコンピュータ・システム100は、コンピュータ可読記憶媒体102と、メモリ104と、プロセッサ106と、1つまたは複数のインターフェース108とを備えており、これらは、すべて、1つまたは複数の通信バス110を経由して相互にリンクされている。例示的なコンピュータ・システム100は、たとえば、デスクトップ・コンピュータ、パーソナル・コンピュータ、ラップトップ、タブレット、スマートフォン、スマートウォッチ、仮想現実ヘッドセット、サーバ、メインフレーム・コンピュータなどのような、従来型のコンピュータ・システムの形態を取り得る。
コンピュータ可読記憶媒体102またはメモリ104あるいはその両方は、1つもしくは複数のコンピュータ・プログラム(もしくはソフトウェアもしくはコード)またはデータあるいはその両方を記憶し得る。コンピュータ可読記憶媒体102に記憶されているコンピュータ・プログラムは、コンピュータ・システム100が機能するためにプロセッサ106が実行するオペレーティング・システムを含み得る。コンピュータ可読記憶媒体102またはメモリ104あるいはその両方に記憶されているコンピュータ・プログラムは、本発明の実施形態によるコンピュータ・プログラム、または、プロセッサ106によって実行されると、本発明の実施形態による方法をプロセッサ106に行わせるコンピュータ・プログラムを、含み得る。
プロセッサ106は、コンピュータ可読記憶媒体102またはメモリ104あるいはその両方に記憶されているコンピュータ・プログラムに属するような、1つまたは複数のコンピュータ可読プログラム命令を実行するために適切ないずれかのデータ処理装置であり得る。1つまたは複数のコンピュータ可読プログラム命令の実行の一部として、プロセッサ106は、コンピュータ可読記憶媒体102もしくはメモリ104またはその両方にデータを記憶する、もしくは、コンピュータ可読記憶媒体102もしくはメモリ104またはその両方からデータを読み出す、または、その両方を行い得る。プロセッサ106は、単一のデータ処理装置を、または、並列的にもしくは相互に協働して動作する複数のデータ処理装置を、含み得る。プロセッサ106は、1つまたは複数のコンピュータ可読プログラム命令の実行の一部として、コンピュータ可読記憶媒体102もしくはメモリ104またはその両方にデータを記憶する、もしくは、コンピュータ可読記憶媒体102もしくはメモリ104またはその両方からデータを読み出す、または、その両方を行い得る。
1つまたは複数のインターフェース108は、コンピュータ・システム100がネットワークを経由して他のコンピュータ・システムと通信することを可能にするネットワーク・インターフェースを含み得る。このネットワークは、あるコンピュータ・システムから別のコンピュータ・システムへデータを送信するまたは通信するのに適切な、いずれかの種類のネットワークであり得る。たとえば、ネットワークは、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、ワイヤレス通信ネットワークなどのうちの1つまたは複数であり得る。コンピュータ・システム100は、いずれかの適切な通信機構/プロトコルを介して、ネットワーク経由で、他のコンピュータ・システムと通信し得る。プロセッサ106は、ネットワーク・インターフェースにデータまたはコマンドあるいはその両方をネットワーク経由で別のコンピュータ・システムに送らせるため、1つまたは複数の通信バス110を介して、ネットワーク・インターフェースと通信し得る。同様に、1つまたは複数の通信バス110により、コンピュータ・システム100によってネットワークを経由し他のコンピュータ・システムからネットワーク・インターフェースを介して受け取られたデータまたはコマンドあるいはその両方に対して、プロセッサ106が動作することが可能になる。
インターフェース108は、あるいはまたは追加的に、ユーザ入力インターフェースまたはユーザ出力インターフェースあるいはその両方を含み得る。ユーザ入力インターフェースは、入力をシステム100のユーザまたはオペレータから受け取るように構成され得る。ユーザは、この入力を、マウスもしくはそれ以外のポインティング・デバイス、トラックボール、またはキーボードなど、1つまたは複数のユーザ入力デバイス(図示せず)を介して、提供し得る。ユーザ出力インターフェースは、ディスプレイ、モニタ、またはスクリーン(図示せず)上で、グラフィカルな/視覚的な出力を、システム100のユーザまたはオペレータに提供するように、構成され得る。プロセッサ106は、ユーザ出力インターフェースに対し、ディスプレイに所望のグラフィカルな出力を示させる画像/ビデオ信号を形成するように、命令し得る。ディスプレイは、ディスプレイに触れるまたはディスプレイを押下することによってユーザが入力を提供することを可能にする、接触感知型であり得る。
図1に図解されており上述されたコンピュータ・システム100のアーキテクチャは単に例示的なものであって、代替的なコンポーネントを用いるまたはより多くまたはより少ないコンポーネントを用いる異なるアーキテクチャが代わりに用いられることもあり得る、ということが理解されるであろう。
添付の図面の図2は、本発明の実施形態による例示的なシャード・データベース200を概略的に図解している。シャード・データベース200は、複数のデータベース・シャード210を含む。たとえば、図2に図解されているシャード・データベース200は、第1のデータベース・シャード210(1)と第2のデータベース・シャード210(2)とを含む。しかし、追加的なデータベース・シャード210も同様に用いられ得る、ということが理解されるであろう。データベース・シャード210のそれぞれは、シャード・データベース200のスキーマに属する共通な1組の1つまたは複数のテーブル220を含む。個別のデータベース・シャードは、(たとえば、データベースの別個の垂直的なパーティション化の一部として)要求される場合には、同様に追加的なテーブルを含むことがあり得る、ということが理解されるであろう。
1つまたは複数のテーブル220の共通の組は、シャード・テーブル220(1)を含む。シャード・テーブル220(1)のためのスキーマは複数のデータベース・シャード210の間で同じであるが、データベース・シャード210のそれぞれにおけるシャード・テーブル220(1)のコピーに記憶されているレコード230の組は、異なる。特に、データベース・シャード210のそれぞれは、シャード・テーブル220(1)に属するレコードの部分集合を記憶する。たとえば、図2に図解されているシャード・データベース200は、第1のデータベース・シャード210(1)に記憶されているシャード・テーブル220(1)に属するレコード230(1)の第1の部分集合と、第2のデータベース・シャード210(2)に記憶されているレコード230(2)の第2の部分集合とを有する。しかし、より多くのデータベース・シャード210が、シャード・データベース200と共に用いられる場合には、シャード・テーブル220のためのレコード230の組は、より多くの部分集合に分割され、したがってデータベース・シャード210の全体に分散されることがあり得る。
テーブル220の共通の組に属するテーブル220(2)および220(3)のうちのいくつかは、複製されたテーブルであり得る。これは、データベース・シャード210のそれぞれにおける複製されたテーブル220(2)および220(3)のコピーは同一であって、相互に同一であるレコードの組を含む、ということを意味する。しかし、共通の組のテーブル220は、いずれかの複製されたテーブルを含むことを必ずしも必要としない、ということが理解されるであろう。
シャード・データベース200は、複数のデータベース・シャード210のそれぞれのために1つ存在する、1つまたは複数のブルーム・フィルタ240を、さらに含む。ブルーム・フィルタ240のそれぞれは、シャード・テーブル220(1)のある特定のレコードが、それと関連するデータベース・シャード210に記憶されているかどうかに関する指示を提供するように、構成されている。これを行うため、ブルーム・フィルタ240は、それらのそれぞれのデータベース・シャード210に挿入されたレコードの部分集合230(1)または230(2)を表す固定サイズのビット・ベクトルを維持する。たとえば、図2に図解されているシャード・データベース200は、第1のデータベース・シャード210(1)と関連する第1のブルーム・フィルタ240(1)と、第2のデータベース・シャード210(2)と関連する第2のブルーム・フィルタ240(2)とを有しており、ブルーム・フィルタ240のそれぞれのビット・ベクトルは、「1」に設定された数ビット(図2に図解されているビット・ベクトルのテーブル表現では、黒い影によって表されている)を、それらのそれぞれのデータベース・シャード210に既に記憶されているレコードの結果として、含む。シャード・データベース200が追加的なデータベース・シャード210を含む場合には、それぞれの追加的なデータベース・シャード210が、当該データベース・シャード210に記憶されているレコードの部分集合を表すそれ自体のブルーム・フィルタ240と関連付けられる、ということが理解されるであろう。ブルーム・フィルタのそれぞれによって維持されるレコードの部分集合230(1)および230(2)の表現は、後で論じられるように、それぞれのレコードのシャーディング・キー260に基づく。
次に、図2に図解されているシャード・データベース200について、本発明の実施形態による、シャード・データベース200のシャード・テーブル220(1)にレコード250を記憶するためのコンピュータ実装方法300の概略的な図解である図3をさらに参照して、論じられる。
ステップ310では、方法300が、記憶されるレコード250のためのシャーディング・キー260を取得する。シャーディング・キー260は、シャード・テーブル220(1)の中に挿入されるレコードの1つまたは複数のフィールドに基づく。その最も簡潔な形式では、シャーディング・キー260は、「id」フィールドなどの単一のフィールドから、導かれ得る。しかし、その代わりに、たとえば、各レコードのフィールドのいくつかまたは全部から導かれる複合キーを含み、他のより複雑で複合的なシャーディング・キー260が用いられる場合もある。シャーディング・キー260は、記憶されるレコードと共に提供される場合があるし、または、記憶されるレコードの1つもしくは複数のフィールドから生成される場合もある。シャーディング・キー260は、シャード・テーブル220(1)に属するレコード230の組の間から、シャード・テーブル220(1)の各レコードを、一意的に識別するように機能し得る。しかし、このようであることは、必ずしも必要ない。その代わりに、シャーディング・キーは、複数の異なるレコードが同一のシャーディング・キーと関連するように、形成される場合もあり得る。
ステップ320では、方法300が、データベース・シャード210と関連するブルーム・フィルタ240と共に用いられるためのシャーディング・キー260の1つまたは複数の表現270を生成する。シャーディング・キー260のこの表現270は、各ブルーム・フィルタ240によって用いられるハッシュ関数をシャーディング・キー260に適用することによって生成され、その結果として、シャーディング・キー260のビット・ベクトル表現270が生成されるが、これは、各ブルーム・フィルタ240によって維持されるレコード230(1)および230(2)の部分集合のビット・ベクトル表現と同じ長さである。各データベース・シャード210のために用いられるブルーム・フィルタ240は、それらが用いるビット・ベクトルの長さとハッシュ関数とに関して、相互に同一であり得る(ただし、各ブルーム・フィルタ240の値は、もちろん、それぞれの関連するデータベース・シャード210に挿入されたレコードに応じて、異なる)。この場合に、シャーディング・キー260の表現270は、ただ1つだけ、生成される必要があるが、その理由は、表現270が、すべてのブルーム・フィルタ240に対して同一であるからである。しかし、ブルーム・フィルタ240のうちのいくつか(または、全部)が、長さが異なるビット・ベクトルを有する、または、異なる(もしくは、異なる個数の)ハッシュ・アルゴリズムを用いるなど、構成が異なることがあり得る、ということが理解されるであろう。この場合に、シャーディング・キー260の表現270は、ブルーム・フィルタ240のそれぞれの異なる構成に対して、生成されることが必要となる。たとえば、図2に図解されている例示的なシャード・データベース200では、記憶されるレコード250のために、シャーディング・キー260の単一の表現270が、両方のブルーム・フィルタ240と共に用いられるために生成され得るが、これは、両方のブルーム・フィルタ240が同一であるからである。この例では、ブルーム・フィルタ240のためのハッシュ・アルゴリズムを挿入されるレコード250のシャーディング・キー260に適用することによって、「100100000」というビット・ベクトル表現が生成される。しかし、異なるレコードの場合には、その結果として、異なるビット・ベクトル表現が生成される、ということが理解されるであろう。
ステップ330で、方法300は、各ブルーム・フィルタ240に対して生成されたシャーディング・キー260のビット・ベクトル表現270とブルーム・フィルタ240の値との間のハミング距離を計算する(各データベース・シャード210上に既に記憶されているレコードの部分集合230(1)および230(2)を表す)。図2に図解されている例示的なシャード・データベース200に戻ると、そこでは、第1のブルーム・フィルタ240(1)によって維持される第1のデータベース・シャード210(1)に記憶されている項目の第1の部分集合230(1)のビット・ベクトル表現は「101000100」であり、他方で、第2のブルーム・フィルタ240(2)によって維持される第2のデータベース・シャード210(2)に記憶されている項目の第2の部分集合230(2)のビット・ベクトル表現は「000001010」である。したがって、この例では、記憶されるレコード250のためのシャーディング・キー260の表現270と第1のブルーム・フィルタ240(1)との間のハミング距離は「3」であり(それらが、別々の3つの位置で異なるため)、他方で、第2のブルーム・フィルタ240(2)へのハミング距離は「4」である(それらが、4つの位置で異なるため)。
ステップ340で、方法300は、計算されたハミング距離に基づいて、データベース・シャード210を選択する。すなわち、データベース・シャード210の選択は、ハミング距離の関数に基づく。一例として、選択されるデータベース・シャード210は、記憶されるレコード250のためのシャーディング・キー260の表現270から最小のハミング距離を有するブルーム・フィルタ240と関連するデータベース・シャード210であり得る。いくつかの場合には、ただ1つのデータベース・シャード210が、最小のハミング距離を有するブルーム・フィルタ240と関連する、ということが理解されるであろう。そのような場合には、データベース・シャード210の選択は、自動的であり得る(すなわち、最小のハミング距離を有するブルーム・フィルタと関連する、そのただ1つのデータベース・シャード210となる)。しかし、他の場合には、最小のハミング距離は、複数のブルーム・フィルタ240によって提供され得る。たとえば、いくつかのブルーム・フィルタが、計算されたハミング距離の間で最小の距離である同じハミング距離を有し得る。そのような場合には、データベース・シャード210が、そのブルーム・フィルタが最小のハミング距離という基準を有するデータベース・シャードの間から、選択され得る。たとえば、計算されたハミング距離の間で最小の距離である同じハミング距離を有するようなデータベース・シャードの間から、データベース・シャード210が、ランダムに選択されることがある。しかし、データベース・シャード210を選択するための他の手段が、代わりに用いられてもかまわない。たとえば、その上に記憶されているレコードが最も少ないデータベース・シャード210が、最少ハミング距離という基準を満たすデータベース・シャード210の間から選択されることもある。ハミング距離に基づいて選択を行うための様々な他のファクタまたは方法が、当業者には、容易に明らかになるであろう。図2に図解されている例に戻ると、第1のデータベース・シャード210(1)が、レコード250を記憶するための場所として選択されるのであるが、その理由は、シャーディング・キー260の表現270と第1のブルーム・フィルタ240(1)との間のハミング距離が、第1のブルーム・フィルタ240(1)に対して計算されたハミング距離である「3」と第2のブルーム・フィルタ240(2)に対して計算されたハミング距離である「4」とのそれぞれのうちの最小値である「3」を有するからである。
ステップ350では、方法300が、レコード250を、選択されたデータベース・シャード210に記憶する。レコード250がデータベース・シャード210に記憶されると、データベース・シャード210と関連するブルーム・フィルタ240は、当該レコード250が今ではブルーム・フィルタ240によって表される項目の部分集合の一部であることを表すように、更新される。したがって、図2に図解されている例では、第1のブルーム・フィルタ240(1)が、ブルーム・フィルタ240(1)によって維持されるビット・ベクトル表現が「101100100」になるように、そのレコード250のためのシャーディング・キー260のビット・ベクトル表現270を追加するように、更新され得る。ブルーム・フィルタ240と関連するデータベース・シャード210にレコードが記憶されるときには常にそのブルーム・フィルタ240を更新することによって、それらのブルーム・フィルタ240が維持するレコードの部分集合の表現は、それぞれのデータベース・シャード210上に記憶されるレコードを、正確に反映することになる。
シャード・データベース200のデータベース・シャード210上により多くのレコードが記憶されるにつれて、データベース・シャード210のうちのいくつかが、データベース・シャード210の(したがって、シャード・データベース200全体の)性能が一定のレベルよりも下降することを回避するために、それ以上のレコードがそれらのデータベース・シャード210上に記憶されるのを回避するのが望ましいレベルに到達することがあり得る。これを助けるため、シャード・データベース200が、それぞれのデータベース・シャードが新たなレコードを記憶するために利用可能なのかそれとも利用不可能なのかに関する指示(またはマーキング)をさらに含む場合がある。たとえば、シャード・データベース200が、データベース・シャード210が利用可能なのか利用不可能なのかを表すために、それぞれのデータベース・シャード210と関連するバイナリ・フラグを含む場合がある(ただし、代わりに、新たなレコードを記憶するためのデータベース・シャード210の利用可能性を示す他の技術を用いることもできる)。新たなレコードを記憶するためのそれぞれのデータベース・シャード210の利用可能性の指示が存在するときには、方法300は、新たなレコードを記憶するためには利用不可能だと示されているデータベース・シャード210を、考慮から除外できる。すなわち、方法300が、ステップ320で、シャーディング・キー260の1つまたは複数の表現270を生成するときには、方法300は、利用不可能であると示されているデータベース・シャード210と関連するどのブルーム・フィルタ240と共に用いるための表現も、生成しない場合があり得る。その代わりに、方法300が、新たなレコードを記憶するために利用可能であると示されているブルーム・フィルタ240のそれぞれ(または、その何らかの部分集合)と共に用いられるための表現270を生成するだけの場合も、あり得る。次に、方法300は、ハミング距離に基づいてデータベース・シャードを選択するときに、新たなレコードを記憶するために利用可能なデータベース・シャード210だけが考慮されるように、そのために表現270が生成されているブルーム・フィルタのそれぞれを用いて、ハミング距離を計算するように進むことができる。
データベース・シャード210に記憶されているいくつかのレコードが、新たなレコードを記憶するためには利用不可能であるとのマークが付されるべきレベルに、いつ到達したのかを判断するためには、シャード・データベース200は、データベース・シャード210のそれぞれと関連する挿入カウンタを有する場合がある。関連するデータベース・シャード210上にレコードが記憶されるたびに挿入カウンタをインクリメントすることによって、挿入カウンタを、任意の与えられた時間において、データベース・シャード210のそれぞれにそれまでに挿入されたレコードの個数の現在値を判断するのに、用いることができる。各データベース・シャード210が記憶できるレコードの個数に関して、所定の閾値を設定することができる。この所定の閾値は、シャード・データベース200における全部のデータベース・シャード210に対して同一とすることがあり得るし、または、当該データベース・シャード210に利用可能なリソースのいずれかの差異を反映させるために、各データベース・シャード210に対して異なる設定をすることもあり得る。このようにして、方法300は、データベース・シャード210のいずれかにそれまでに挿入されたレコードの個数が当該データベース・シャード210に対する所定の閾値を超えるかどうかを判断して、超える場合には、そのデータベース・シャード210に、どのような新たなレコードを記憶するためにも利用不可能である、というマークを付すことができる。この判断は、ステップ340で選択されたデータベース・シャード210に記憶されているレコードの個数が、そのデータベース・シャード210に対する所定の閾値を超えるかどうかを考慮することによって、レコードが方法300によって記憶されるたびに、実行され得る。しかし、この判断は、たとえば、シャード・データベース200を周期的に管理する責任を有するデータベース管理システムによって行われる場合など、新たなレコードを記憶するための方法300とは独立して、行われる場合もある。
シャード・データベース200の容量または性能を向上させるためには、シャード・データベース200に、追加的なデータベース・シャード210を、動的に追加することができる。これは、たとえば、新たなレコードを記憶するために利用可能な所定の個数のデータベース・シャード210を維持するため、あるデータベース・シャード210に、新たなレコードを記憶するために利用不可能である、というマークが付されるときには常に、方法300の一部として実行され得る。しかし、新たなデータベース・シャード210の挿入は、また、シャード・データベース200を管理する責任のあるデータベース管理システムによるなど、方法300とは独立に、行われることもある。そのようなデータベース管理システムは、たとえば、シャード・データベース200を連続的にモニタしており、所定のレベルのパフォーマンスを維持するために必要であるとして、新たなデータベース・シャード210をシャード・データベース200に追加することができる。
新たなデータベース・シャード210がシャード・データベース200に追加されると、新たなデータベース・シャード210と関連する新たな空のブルーム・フィルタ240も、追加される。シャード・データベース200におけるブルーム・フィルタ240の動作により、新たなレコードを記憶するために利用可能であるようなデータベース・シャード210の全体において、記憶されたレコードを均衡させるように機能する態様で、新たなレコードが新たなデータベース・シャード210に記憶され始める。この理由は、より多くのレコードが記憶されているデータベース・シャード210のためのブルーム・フィルタは、「1」に設定される多数のビットを含む可能性が高いからである。したがって、前から存在しているデータベース・シャード210に記憶されているレコードが多ければ多いほど、どの新たなレコードのためのシャーディング・キー260の表現270も、ハミング距離という観点では、前から存在していたブルーム・フィルタ240よりも、新たに加えられたデータベース・シャード210(当初において、そのビット・ベクトルの全ビットが「0」に設定されている)のための空のブルーム・フィルタ240の方に、より近いことになる。これは、新たなレコードは、当初において、前から存在していたデータベース・シャード210よりも、新たなデータベース・シャードに記憶される可能性の方が高いことを意味する。
図4は、シャード・データベース200のシャード・テーブル220(1)からレコードを検索するためのコンピュータ実装方法400を、概略的に図解している図面である。
ステップ410で、方法400は、検索されるレコードのためのシャーディング・キー260を取得する。レコードをシャード・データベース200に記憶するための方法300のステップ310との関係で上述されたように、シャーディング・キー260は、レコードの1つまたは複数のフィールドに基づく。検索されるレコードのためのシャーディング・キー260は、たとえば、当該シャーディング・キー260と関連するレコードを検索するリクエスト280の一部として、方法400への入力として提供され得る。あるいは、シャーディング・キー260は、検索されるレコードに関するリクエスト280の一部として提供されるデータから、導かれ得る。
ステップ420で、方法400は、ブルーム・フィルタ240と共に用いられるためのシャーディング・キー260の表現270を生成する。レコードをシャード・データベース200に記憶するための方法300のステップ320との関係で上述されたように、特定のブルーム・フィルタ240と共に用いられるためのシャーディング・キー260の表現は、当該ブルーム・フィルタ240のためのハッシュ関数をシャーディング・キー260に適用することによって、生成される。レコードを検索するときにはデータベース・シャード210のそれぞれが考慮される必要があるから(新たなレコードの記憶に関してアクティブではないとのマークが付された、どのデータベース・シャードも含めて)、シャーディング・キー260の表現270が、ブルーム・フィルタのそれぞれと共に用いられるために、生成される。しかし、再び、それぞれのデータベース・シャード210のために用いられるブルーム・フィルタ240が相互に同じ形状である(すなわち、それぞれのブルーム・フィルタのために用いられるビット・ベクトルの長さとハッシュ関数とが同じである)場合に、そのようなブルーム・フィルタ240の全部に対して表現270は同じであるから、シャーディング・キー260の表現270は、1つだけ、生成されることが必要である。
ステップ430では、方法400は、それぞれのブルーム・フィルタ240のうちのどれが、シャーディング・キー260のそれらのそれぞれの表現270とマッチするのかを識別する。シャーディング・キー260の表現270がそのそれぞれのブルーム・フィルタ240とマッチするかどうかを判断するには、シャーディング・キー260がハッシュ・アルゴリズムによってマッピングされる位置におけるビットのうちのいずれかが「0」であるかどうかを判断するために、ブルーム・フィルタ240のビット・ベクトルが、解析される。シャーディング・キー260がマッピングされるビットのいずれかが「0」である場合には、シャーディング・キー260の表現270は、ブルーム・フィルタ240とマッチせず、これは、シャーディング・キー260が関係するレコードが、当該ブルーム・フィルタ240と関連するデータベース・シャード210に記憶されていない、ということを示す。しかし、ビットの全部が「1」である場合には、シャーディング・キー260の表現270がブルーム・フィルタ240とマッチし、これは、シャーディング・キー260が関係するレコードが、ブルーム・フィルタ240と関連するデータベース・シャード210に記憶されている場合があり得る、ということを示す。
方法400のステップ420における表現270の生成は、方法400のステップ430においてシャーディング・キー260とマッチするブルーム・フィルタを決めることの一部として、非明示的に行われることがある、ということが理解されるであろう。すなわち、シャーディング・キー260のビット・ベクトル表現270を明示的に計算するのではなく、方法400は、それぞれのブルーム・フィルタのハッシュ・アルゴリズムをシャーディング・キー260に適用することによって、ブルーム・フィルタのそれぞれのビット・ベクトルのどの位置にシャーディング・キー260がマッピングされるのかを決定することにより、表現270を非明示的に計算し得る。
ステップ440において、方法400は、レコードを見つけるために、識別されたブルーム・フィルタ240と関連するデータベース・シャード210をサーチする。ブルーム・フィルタ240の確率的性質のため、複数のブルーム・フィルタ240が、シャーディング・キー260の表現270とのマッチを示すこともあり得る。これは、ブルーム・フィルタ240のうちの1つまたは複数によって偽陽性(false positive)が提供されるときに、生じる。したがって、方法400は、レコードを見つけるために、シャーディング・キー260の表現270とのマッチを示したブルーム・フィルタ240と関連するデータベース・シャード210のそれぞれを、サーチする。
ステップ450において、方法400は、レコードを提供する。レコードは、外部システムからのリクエストへの直接的応答として提供される場合があり得るし、または、より大きなクエリ動作の一部として、内部リクエストへの応答として提供される場合もあり得る。
本発明をより明確に説明するために、1つのシャード・テーブル220(1)を有するシャード・データベース200を用いて、上述されたシャード・データベース200と関連する方法300および400とが論じられ、図2において図解された。しかし、シャード・データベース200が、データベース・シャード210の間でそのレコードが分散されている複数のシャード・テーブル220を含む場合もあり得る、ということが理解されるであろう。この場合には、複数のブルーム・フィルタ240が、シャード・テーブル200のそれぞれに対して1つというように、それぞれのデータベース・シャード210と関連し得る。シャード・テーブルにレコードを記憶する、およびそこからレコードを検索するための方法300および400は、これらの方法がその上で動作しているシャード・テーブル220のための、関係のあるブルーム・フィルタ240を参照し得る。
上述されたシャード・データベース200は、複数のコンピュータ・システム(またはデバイス)100を含むシステム上に記憶され得る。シャード・データベース200のデータベース・シャード210のそれぞれは、コンピュータ・システム100のそれぞれが複数のデータベース・シャード210のうちの1つまたは複数を記憶するように、システムのそれぞれのコンピュータ・システム100上に記憶され得る。システムは、シャード・データベース200のシャード・テーブル220(1)からレコードを検索するための上述された方法400を行うように構成されているコントローラ290を、さらに含む。図2に図解されているように、コントローラ290は、データベース・シャード210からは論理的に分離されていて、別個のコンピュータ・システム100上で実装されることが可能である。あるいは、コントローラ290が、データベース・シャード210のうちの1つまたは複数を記憶するのにも用いられる単一のコンピュータ・システム上で実装されることも可能である。シャード・データベース200のシャード・テーブル220(1)からレコードを検索するどのリクエスト280でも、単一のコントローラ290に方向付けることができる。あるいは、コントローラ290は、データベース・シャード210のうちの1つまたは複数を記憶するのに用いられる複数のコンピュータ・システム100(または、そのようなコンピュータ・システム100の全部)の間で、分散され得る。この場合には、シャード・データベース200のシャード・テーブル220(1)からレコードを検索するというリクエスト280を、コントローラが配置されているコンピュータ・システム100のいずれかにおけるコントローラに方向付けることができる。
コントローラ290は、また、上述された方法300を用いて、シャード・データベース200のシャード・テーブル220(1)にレコード250を記憶するようにも、構成され得る。したがって、レコード250を記憶するというリクエストは、コントローラ290がその上に存在するコンピュータ・システム100のどれにでも方向付けることができる。
コントローラ290は、また、シャード・データベース200のシャード・テーブル220(1)からレコードが削除されることを可能にするように構成されることもある。これは、レコードがその上に配置されているデータベース・シャード210の場所を確認し、データベース・シャード210上に記憶されているシャード・テーブル220(1)のレコードの部分集合230から、そのレコードを除去することによって、行われ得る。しかし、ブルーム・フィルタの制約のため、データベース・シャード210と関連するブルーム・フィルタ240を、それが表すレコードの組からの当該レコードの除去を反映するように更新することは、可能でない。したがって、データベース・シャード210から削除されるレコードが多ければ多いほど、シャード・テーブル220(1)からレコードを検索することを試みるときに、そのデータベース・シャード210のためのブルーム・フィルタ240が偽陽性を返す確率は高くなる。この問題に対処するために、シャード・データベース200は、データベース・シャード210のそれぞれと関連する削除カウンタを含むことがあり得る。レコードが、そのレコードと関連するデータベース・シャード210から削除されるたびに、削除カウンタをインクリメントすることによって、削除カウンタを、いくつのレコードが、それらの関連するデータベース・シャード210にもはや記憶されていないレコードの組のそれぞれのブルーム・フィルタの表現に含まれているかを判断するのに用いられ得る。コントローラ290は、次に、特定のデータベース・シャード210から削除されたレコードの個数が、そのシャードのための所定の閾値を超えるかどうかを判断することができるが、超えている場合には、そのデータベース・シャード210に現に記憶されているレコードから、ブルーム・フィルタ240を再構成することができる。次に、再構成されたブルーム・フィルタが関連するデータベース・シャード210のための削除カウンタは、リセットされ得る。
ブルーム・フィルタ240の再構成は、本質的に、それぞれのビットが「0」に設定されるようにそのビット・ベクトルをリセットし、ブルーム・フィルタ240のためのハッシュ・アルゴリズムを記憶されているレコードのシャーディング・キー260に再適用し、ブルーム・フィルタの適切なビットを「1」に設定することによって、そのデータベース・シャード210に記憶されているシャード・テーブル220(1)のためのレコードのそれぞれをビット・ベクトルに再度加えることを含む。ブルーム・フィルタ240が再構築される間、データベース・シャード210は、一時的に、新たなレコードを記憶するためには利用不可能であるとのマークが付され得るが、それにより、データベース・シャード210のうちの1つまたは複数と関連するブルーム・フィルタ240が再構築されている間であっても、シャード・データベース200が、記憶のための新たなレコードを引き続き受け取ることが可能になる。同様に、ブルーム・フィルタ240が再構築される前に、そのビット・ベクトル(またはアレイ)の現在値がキャッシュされ得ることにより、データベース・シャード210のうちの1つまたは複数と関連するブルーム・フィルタ240が再構築されている間であっても、レコードをシャード・テーブル220(1)から引き続き検索することが可能になる。
代替的な実施形態では、上述されたシャード・データベース200は、ブルーム・フィルタの代わりに、カウンティング・フィルタを含む場合がある。上述されたように、カウンティング・フィルタにより、このカウンティング・フィルタによって維持されるレコードの組の表現からレコードを削除することが可能になる。したがって、この代替的な実施形態では、あるレコードがシャード・テーブル220(1)から削除されると、コントローラ290は、フィルタを再構築することを必要とせずに、そのレコードが削除されたデータベース・シャード210と関連するカウンティング・フィルタを更新し得る。カウンティング・フィルタへのハミング距離を計算するためには、カウンティング・フィルタの値が、ビット・ベクトル表現まで平坦化され得る。換言すると、カウンティング・フィルタによって維持されるベクトルのそれぞれの位置におけるnビット・カウンタは、nビット・カウンタの値が「0」である場合に「0」であり、nビット・カウンタの値が「0」よりも大きい場合に「1」である、1ビット表現に変換され得る。たとえば、カウンティング・フィルタの現在値が「01023002」である場合には、これは、ハミング距離を計算するという目的のために、「01011001」という1ビット・ベクトル表現に平坦化され得る。
本発明は、いずれかの可能な技術的詳細レベルの統合におけるシステム、方法またはコンピュータ・プログラム製品あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の諸態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(単数または複数)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって用いられるための命令を保持し記憶することが可能な有形的なデバイスであり得る。コンピュータ可読記憶媒体は、たとえば、これらに限定されることはないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記のいずれかの適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非排他的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク(R)、パンチカードまたは命令がそこに記録された溝における***構造など機械的にエンコードされたデバイス、および上記のいずれかの適切な組合せを含み得る。本明細書で用いられるコンピュータ可読記憶媒体とは、無線波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体(たとえば、光ファイバケーブルを通過する光パルス)を通過して伝搬する電磁波、またはワイヤを通過して伝送される電気信号などの一過性の信号それ自体としては、解釈されないものとする。
本明細書で説明されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、ダウンロードされることが可能であり、または、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワークあるいはそれらの組合せなどのネットワークを経由して、外部コンピュータもしくは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはそれらの組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイスの内部のコンピュータ可読記憶媒体に記憶するために、転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のためのコンフィギュレーション・データ、または、ソース・コードもしくはオブジェクト・コードであり得るが、ここで、ソース・コードとオブジェクト・コードとは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語と、を含む、1つまたは複数のプログラミング言語のいずれかの組合せとして、記述される。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行される場合、一部がユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして実行される場合、一部がユーザのコンピュータ上で一部が遠隔コンピュータ上で実行される場合、または、全体が遠隔コンピュータもしくはサーバ上で実行される場合があり得る。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合があり得るし、または、(たとえば、インターネット・サービス・プロバイダを用いて、インターネットを通じて)外部コンピュータへの接続がなされる場合もあり得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の諸態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて、その電子回路をカスタマイズ(personalize)することにより、コンピュータ可読プログラム命令を実行する場合がある。
本発明の諸態様は、本明細書においては、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートによる図解またはブロック図あるいはその両方を参照して、説明されている。フローチャートによる図解またはブロック図あるいはその両方の各ブロックと、フローチャートによる図解またはブロック図あるいはその両方における複数のブロックの組合せとは、コンピュータ可読プログラム命令によって実装され得る、ということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはそれ以外のプログラム可能なデータ処理装置のプロセッサを経由して実行されるこれらの命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定されている機能/作用を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータ、またはそれ以外のプログラム可能なデータ処理装置のプロセッサに提供されることで、マシンを構成することができる。これらのコンピュータ可読プログラム命令は、また、命令が記憶されているこのコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに特定されている機能/作用の諸態様を実装する命令を含む製品を構成するように、コンピュータ、プログラム可能なデータ処理装置またはそれ以外のデバイスあるいはそれらの組合せに対し特定の態様で機能するように命令することができるコンピュータ可読記憶媒体に、記憶され得る。
コンピュータ可読プログラム命令は、また、コンピュータ、それ以外のプログラム可能な装置、またはそれ以外のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定されている機能/作用を実装させるように、コンピュータ、それ以外のプログラム可能なデータ処理装置、または他のデバイスの上にロードされ、そのコンピュータ、それ以外のプログラム可能な装置、または他のデバイス上で、一連の動作ステップが実行されるようにすることで、コンピュータ実装プロセスを生じさせることができる。
図面におけるフローチャートとブロック図とは、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能および動作を図解している。この点で、フローチャートまたはブロック図における各ブロックは、特定された論理機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図面に記載されている順序とは異なる順序で、生じることがあり得る。たとえば、連続するように示されている2つのブロックが、実際には、関係する機能に応じて、実質的に同時に実行される場合があるし、または、これらのブロックが、ときには、逆の順序で実行される場合もある。ブロック図またはフローチャート図あるいはそれらの両方の各ブロックと、ブロック図またはフローチャート図あるいはそれらの両方における複数のブロックの組合せとは、特定の機能もしくは作用を実行するまたは専用のハードウェアとコンピュータ命令との組合せを実行する専用のハードウェア・ベースのシステムによって実装され得る、ということも、注意されるべきである。

Claims (27)

  1. シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法であって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記コンピュータ実装方法が、
    記憶される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得することと、
    複数の前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成することと、
    前記複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるための前記シャーディング・キーの前記それぞれの表現との間のハミング距離を計算することと、
    前記計算されたハミング距離に基づき、データベース・シャードを選択することと、
    前記レコードを前記選択されたデータベース・シャードに記憶することと
    を含む、コンピュータ実装方法。
  2. 前記それぞれのブルーム・フィルタのそれぞれが、同じビット数と同じハッシュ関数とを用いる、請求項1に記載のコンピュータ実装方法。
  3. 前記それぞれのブルーム・フィルタのそれぞれが、カウンティング・フィルタである、請求項1に記載のコンピュータ実装方法。
  4. データベース・シャードを選択することが、前記計算されたハミング距離が前記計算されたハミング距離の中の最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードを選択することを含む、請求項1に記載のコンピュータ実装方法。
  5. 前記計算されたハミング距離が前記計算されたハミング距離の中の最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードを選択することが、前記計算されたハミング距離が最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードの中から前記データベース・シャードをランダムに選択することを含む、請求項4に記載のコンピュータ実装方法。
  6. 前記シャード・データベースが、それぞれのデータベース・シャードが新たなレコードを記憶するために利用可能であるかまたは利用不可能であるかに関する指示をさらに含み、前記シャーディング・キーのそれぞれの表現が生成される前記複数のブルーム・フィルタが、使用不可能であると示されているデータベース・シャードと関連するどのブルーム・フィルタも含まない、請求項1に記載のコンピュータ実装方法。
  7. 前記シャーディング・キーの表現がそのために生成される前記複数のブルーム・フィルタが、使用可能であると指示されている全部のデータベース・シャードと関連する前記それぞれのブルーム・フィルタを含む、請求項6に記載のコンピュータ実装方法。
  8. 前記シャード・データベースが、前記データベース・シャードのそれぞれの中に挿入されたレコードのそれぞれの個数をカウントするためのそれぞれの挿入カウンタをさらに含み、前記コンピュータ実装方法が、
    前記選択されたデータベース・シャードのための前記挿入カウンタをインクリメントすることをさらに含む、請求項1に記載のコンピュータ実装方法。
  9. 前記選択されたデータベース・シャードの中に挿入されたレコードの前記個数が所定の閾値を超えるかどうかを判断することと、
    前記選択されたデータベース・シャードの中に挿入されたレコードの前記個数が所定の閾値を超えるかどうかを判断することに応答して、前記選択されたデータベース・シャードに、新たなレコードを記憶するためには利用不可能であるとのマークを付することと
    をさらに含む、請求項8に記載のコンピュータ実装方法。
  10. 新たなデータベース・シャードと、関連するブルーム・フィルタとを前記シャード・データベースに追加することをさらに含む、請求項1に記載のコンピュータ実装方法。
  11. シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法であって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記コンピュータ実装方法が、
    検索される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得することと、
    前記データベース・シャードのそれぞれと関連する前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成することと、
    前記それぞれのブルーム・フィルタのうちのどれが、前記シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別することと、
    前記レコードを見つけるために、前記識別されたブルーム・フィルタと関連する前記データベース・シャードをサーチすることと、
    前記レコードを提供することと
    を含む、コンピュータ実装方法。
  12. 前記それぞれのブルーム・フィルタのそれぞれが、同じビット数と同じハッシュ関数とを用いる、請求項11に記載のコンピュータ実装方法。
  13. シャード・データベースを記憶するためのシステムであって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記システムが、
    それぞれが、前記複数のデータベース・シャードのうちの1つまたは複数を記憶するように構成されている、複数の計算システムと、
    コントローラであって、
    検索されるレコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得し、
    前記データベース・シャードのそれぞれと関連する前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することにより、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成し、
    前記それぞれのブルーム・フィルタのうちのどれが、前記シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別し、
    前記レコードを見つけるため、前記識別されたブルーム・フィルタと関連する前記データベース・シャードをサーチし、
    前記レコードを提供することにより、
    前記シャード・データベースの前記シャード・テーブルから前記レコードを検索するように構成されている、前記コントローラと
    を備える、システム。
  14. 前記それぞれのブルーム・フィルタのそれぞれが、同じビット数と同じハッシュ関数とを用いる、請求項13に記載のシステム。
  15. 前記それぞれのブルーム・フィルタのそれぞれが、カウンティング・フィルタである、請求項13に記載のシステム。
  16. 前記コントローラが、さらに、
    記憶されるレコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得し、
    複数の前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することにより、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成し、
    前記複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるための前記シャーディング・キーの前記それぞれの表現との間のハミング距離を計算し、
    前記計算されたハミング距離に基づき、データベース・シャードを選択し、
    前記レコードを前記選択されたデータベース・シャードに記憶することによって、
    前記シャード・データベースの前記シャード・テーブルに前記レコードを記憶するように構成されている、請求項13に記載のシステム。
  17. データベース・シャードを選択することが、前記計算されたハミング距離が前記計算されたハミング距離の中の最小値であるそれぞれのブルーム・フィルタと関連するデータベース・シャードを選択することを含む、請求項16に記載のシステム。
  18. 前記シャード・データベースが、それぞれのデータベース・シャードが新たなレコードを記憶するために利用可能であるかまたは利用不可能であるかに関する指示をさらに含み、前記シャーディング・キーのそれぞれの表現が生成される前記複数のブルーム・フィルタが、前記レコードを記憶するとき、使用不可能であると示されているデータベース・シャードと関連するどのブルーム・フィルタも含まない、請求項16に記載のシステム。
  19. 前記シャード・データベースが、前記データベース・シャードのそれぞれに挿入されたレコードのそれぞれの個数をカウントするためのそれぞれの挿入カウンタをさらに含み、前記コントローラが、さらに、前記レコードが記憶されると前記選択されたデータベース・シャードのための前記挿入カウンタをインクリメントするように構成されている、請求項16に記載のシステム。
  20. 前記コントローラが、さらに、
    前記選択されたデータベース・シャードに挿入されたレコードの前記個数が所定の閾値を超えるかどうかを判断し、
    前記選択されたデータベース・シャードに挿入されたレコードの前記個数が前記所定の閾値を実際に超えるとの判断に応答して、前記選択されたデータベース・シャードに、新たなレコードを記憶するために利用不可能であるとのマークを付す
    ように構成されている、請求項19に記載のシステム。
  21. 前記コントローラが、さらに、
    前記シャード・データベースに、新たなデータベース・シャードと、関連するブルーム・フィルタとを追加するように構成されている、請求項16に記載のシステム。
  22. 前記シャード・データベースが、前記データベース・シャードのそれぞれから削除されたレコードのそれぞれの個数をカウントするそれぞれの削除カウンタをさらに含む、請求項16に記載のシステム。
  23. 前記コントローラが、さらに、
    特定のデータベース・シャードから削除されたレコードの前記個数が当該データベース・シャードのためのそれぞれの所定の閾値を超えるかどうかを判断し、前記特定のデータベース・シャードから削除されたレコードの前記個数が当該データベース・シャードのための前記それぞれの所定の閾値を超えるとの判断に応答して、当該データベース・シャードに現に記憶されているレコードに基づき、当該データベース・シャードのための前記ブルーム・フィルタを再構築するように構成されている、請求項22に記載のシステム。
  24. シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ・プログラム製品であって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記コンピュータ・プログラム製品が、
    プロセッサによって実行可能な第1のプログラム命令であって、前記プロセッサに、記憶される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを取得させる、前記第1のプログラム命令と、
    前記プロセッサによって実行可能な第2のプログラム命令であって、前記プロセッサに、複数の前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成させる、前記第2のプログラム命令と、
    前記プロセッサによって実行可能な第3のプログラム命令であって、前記プロセッサに、前記複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるための前記シャーディング・キーの前記それぞれの表現との間のハミング距離を計算させる、前記第3のプログラム命令と、
    前記プロセッサによって実行可能な第4のプログラム命令であって、前記プロセッサに、前記計算されたハミング距離に基づき、データベース・シャードを選択させる、前記第4のプログラム命令と、
    前記プロセッサによって実行可能な第5のプログラム命令であって、前記プロセッサに、前記レコードを前記選択されたデータベース・シャードに記憶させる、第5のプログラム命令と
    がその上にエンコードされたコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
  25. シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ・プログラム製品であって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記コンピュータ・プログラム製品が、
    プロセッサによって実行可能な第1のプログラム命令であって、前記プロセッサに、検索される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを取得させる、前記第1のプログラム命令と、
    前記プロセッサによって実行可能な第2のプログラム命令であって、前記プロセッサに、前記データベース・シャードのそれぞれと関連する前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成させる、前記第2のプログラム命令と、
    前記プロセッサによって実行可能な第3のプログラム命令であって、前記プロセッサに、前記それぞれのブルーム・フィルタのうちのどれが、前記シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別させる、前記第3のプログラム命令と、
    前記プロセッサによって実行可能な第4のプログラム命令であって、前記プロセッサに、前記レコードを見つけるために、前記識別されたブルーム・フィルタと関連する前記データベース・シャードをサーチさせる、前記第4のプログラム命令と、
    前記プロセッサによって実行可能な第5のプログラム命令であって、前記プロセッサに、前記レコードを提供させる、前記第5のプログラム命令と、
    がその上にエンコードされたコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
  26. シャード・データベースのシャード・テーブルにレコードを記憶するためのシステムであって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記システムが、
    記憶される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得し、
    複数の前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成し、
    前記複数のブルーム・フィルタのそれぞれの現在値と当該ブルーム・フィルタと共に用いるための前記シャーディング・キーの前記それぞれの表現との間のハミング距離を計算し、
    前記計算されたハミング距離に基づき、データベース・シャードを選択し、および
    前記レコードを前記選択されたデータベース・シャードに記憶するように、構成可能である、システム。
  27. シャード・データベースのシャード・テーブルからレコードを検索するためのシステムであって、前記シャード・データベースは、複数のデータベース・シャードを含み、前記データベース・シャードのそれぞれは、前記シャード・テーブルのレコードの部分集合を記憶するように構成され、特定のシャーディング・キーと関連するレコードが当該データベース・シャードに記憶されていることがあり得るかどうかに関する指示を提供するように構成されたそれぞれのブルーム・フィルタと関連し、前記システムが、
    検索される前記レコードのためのシャーディング・キーであって、前記レコードの1つまたは複数のフィールドに基づくシャーディング・キーを、取得し、
    前記データベース・シャードのそれぞれと関連する前記それぞれのブルーム・フィルタのそれぞれのために、当該ブルーム・フィルタによって用いられる1つまたは複数のハッシュ関数を前記シャーディング・キーに適用することによって、当該ブルーム・フィルタと共に用いるための前記シャーディング・キーのそれぞれの表現を生成し、
    前記それぞれのブルーム・フィルタのうちのどれが、前記シャーディング・キーのそれらのそれぞれの表現とマッチするかを識別し、
    前記レコードを見つけるために、前記識別されたブルーム・フィルタと関連する前記データベース・シャードをサーチし、
    前記レコードを提供するように構成可能である、システム。
JP2020520560A 2017-10-25 2018-10-18 シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム Active JP7046172B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/793,100 US10585915B2 (en) 2017-10-25 2017-10-25 Database sharding
US15/793,100 2017-10-25
US15/813,577 2017-11-15
US15/813,577 US10592532B2 (en) 2017-10-25 2017-11-15 Database sharding
PCT/EP2018/078495 WO2019081322A1 (en) 2017-10-25 2018-10-18 BASIC PARTITIONING OF DATA

Publications (3)

Publication Number Publication Date
JP2021500649A true JP2021500649A (ja) 2021-01-07
JP2021500649A5 JP2021500649A5 (ja) 2021-04-22
JP7046172B2 JP7046172B2 (ja) 2022-04-01

Family

ID=66169387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020520560A Active JP7046172B2 (ja) 2017-10-25 2018-10-18 シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム

Country Status (6)

Country Link
US (2) US10585915B2 (ja)
JP (1) JP7046172B2 (ja)
CN (1) CN111247518B (ja)
DE (1) DE112018004222T5 (ja)
GB (1) GB2581738A (ja)
WO (1) WO2019081322A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3128761C (en) * 2017-02-27 2023-04-04 Timescale, Inc. Scalable database system for querying time-series data
US11126625B2 (en) 2019-05-31 2021-09-21 Salesforce.Com, Inc. Caching techniques for a database change stream
US10977234B2 (en) 2019-08-02 2021-04-13 Timescale, Inc. Combining compressed and uncompressed data at query time for efficient database analytics
US11194773B2 (en) * 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
CN110968265B (zh) * 2019-11-05 2023-08-08 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
JP7458485B2 (ja) 2019-12-20 2024-03-29 ナイアンティック, インコーポレイテッド 予測可能なクエリ応答時間を有するジオロケーションデータのシャードストレージ
US11531666B1 (en) 2020-08-20 2022-12-20 Amazon Technologies, Inc. Indexing partitions using distributed bloom filters
CN112162981A (zh) * 2020-09-08 2021-01-01 杭州涂鸦信息技术有限公司 一种自适应的路由分库分表方法及***
CN112417276A (zh) * 2020-11-18 2021-02-26 北京字节跳动网络技术有限公司 分页数据获取方法、装置、电子设备及计算机可读存储介质
US11568065B2 (en) * 2021-01-15 2023-01-31 Bank Of America Corporation System for securing electronic data by aggregation of distributed electronic database entries
US11829394B2 (en) * 2021-03-11 2023-11-28 International Business Machines Corporation Soft deletion of data in sharded databases
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052698A (ja) * 2005-08-19 2007-03-01 Kddi Corp 暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システム
JP2010152676A (ja) * 2008-12-25 2010-07-08 Nec Corp 情報転送装置、情報転送方法およびプログラム
US20100312749A1 (en) * 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
US20160110391A1 (en) * 2014-10-21 2016-04-21 Microsoft Corporation Composite Partition Functions

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9275129B2 (en) 2006-01-23 2016-03-01 Symantec Corporation Methods and systems to efficiently find similar and near-duplicate emails and files
US8209178B1 (en) 2008-01-10 2012-06-26 Google Inc. Randomized language models
CN102667761B (zh) 2009-06-19 2015-05-27 布雷克公司 可扩展的集群数据库
US8996568B2 (en) * 2009-07-14 2015-03-31 Qualcomm Incorporated Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库***的数据分区方法
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8924426B2 (en) 2011-04-29 2014-12-30 Google Inc. Joining tables in a mapreduce procedure
US9165074B2 (en) 2011-05-10 2015-10-20 Uber Technologies, Inc. Systems and methods for performing geo-search and retrieval of electronic point-of-interest records using a big index
EP2629212A1 (en) * 2012-02-14 2013-08-21 Alcatel Lucent Method for storing and searching tagged content items in a distributed system
US8856234B2 (en) 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US9507824B2 (en) * 2014-08-22 2016-11-29 Attivio Inc. Automated creation of join graphs for unrelated data sets among relational databases
US9727275B2 (en) 2014-12-02 2017-08-08 International Business Machines Corporation Coordinating storage of data in dispersed storage networks
US20160328429A1 (en) 2015-03-17 2016-11-10 Cloudera, Inc. Mutations in a column store
US9886441B2 (en) 2015-04-06 2018-02-06 Sap Se Shard aware near real time indexing
US11210279B2 (en) 2016-04-15 2021-12-28 Apple Inc. Distributed offline indexing
US10430598B2 (en) * 2017-06-08 2019-10-01 The Government Of The United States, As Represented By The Secretary Of The Army Secure generalized bloom filter

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052698A (ja) * 2005-08-19 2007-03-01 Kddi Corp 暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システム
JP2010152676A (ja) * 2008-12-25 2010-07-08 Nec Corp 情報転送装置、情報転送方法およびプログラム
US20100312749A1 (en) * 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
US20160110391A1 (en) * 2014-10-21 2016-04-21 Microsoft Corporation Composite Partition Functions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佐保 航輝: "検索可能暗号におけるブルームフィルタを応用した検索方式の提案", 電子情報通信学会技術研究報告, vol. 第115巻 第45号, JPN6021042733, 14 May 2015 (2015-05-14), pages 47 - 53, ISSN: 0004632785 *

Also Published As

Publication number Publication date
US20190121901A1 (en) 2019-04-25
WO2019081322A1 (en) 2019-05-02
US20190121902A1 (en) 2019-04-25
JP7046172B2 (ja) 2022-04-01
CN111247518A (zh) 2020-06-05
US10585915B2 (en) 2020-03-10
CN111247518B (zh) 2024-05-14
GB2581738A (en) 2020-08-26
DE112018004222T5 (de) 2020-05-14
US10592532B2 (en) 2020-03-17
GB202007157D0 (en) 2020-07-01

Similar Documents

Publication Publication Date Title
JP7046172B2 (ja) シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム
US10628449B2 (en) Method and apparatus for processing database data in distributed database system
CN109600447B (zh) 用于处理数据的方法、装置和***
US8793227B2 (en) Storage system for eliminating duplicated data
JP6542909B2 (ja) ファイル操作方法及び装置
CN107704202B (zh) 一种数据快速读写的方法和装置
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
US20190005101A1 (en) Method and apparatus for accessing time series data in memory
US20230267116A1 (en) Translation of tenant identifiers
CN111857539B (zh) 用于管理存储***的方法、设备和计算机可读介质
US20140214775A1 (en) Scalable data deduplication
CN115438016A (zh) 分布式对象存储中动态分片方法、***、介质及设备
US9898518B2 (en) Computer system, data allocation management method, and program
US11163801B2 (en) Execution of queries in relational databases
US11151110B2 (en) Identification of records for post-cloning tenant identifier translation
US10083121B2 (en) Storage system and storage method
JP6076882B2 (ja) 情報処理システム、管理装置及びキー割当プログラム
US11455309B2 (en) Partition key adjustment based on query workload
WO2017094194A1 (ja) 計算機システム、及び、装置の管理方法
CN115858539A (zh) 一种数据存储方法、装置、电子设备及存储介质
CN116431615A (zh) 一种面向复杂业务场景的灵活数据分区路由方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210309

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220322

R150 Certificate of patent or registration of utility model

Ref document number: 7046172

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150