JP6291435B2 - プログラムおよびクラスタシステム - Google Patents
プログラムおよびクラスタシステム Download PDFInfo
- Publication number
- JP6291435B2 JP6291435B2 JP2015032141A JP2015032141A JP6291435B2 JP 6291435 B2 JP6291435 B2 JP 6291435B2 JP 2015032141 A JP2015032141 A JP 2015032141A JP 2015032141 A JP2015032141 A JP 2015032141A JP 6291435 B2 JP6291435 B2 JP 6291435B2
- Authority
- JP
- Japan
- Prior art keywords
- attribute
- hash
- value
- bit string
- index
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
現在広く利用されているデータベース(DB)として、RDB(Relational Data Base)が存在する。このRDBの技術は、Row(行)、Column(列)からなる2次元のテーブル構造でデータを表現し、SQL(Structured Query Language)言語等によるクエリに応じて、JOIN(結合)や正規化を実行することで、検索等の処理を実現することができる。様々なアプリケーションは、RDBを用いて作成されることが多く、その理由は多岐に渡るが、特に重要な要素として、単純なkey検索だけでなく、データの属性値(value)でも検索できる機能を有するところが大きいと言える。但し、従来の分散システムでは、単純なkeyを用いたアプリケーションには適用できるが、valueを操作するアプリケーションには適用できないか、できてもスケール変更できない状況のものが多かった。しかも、データの構造を分散プラットフォーム(PF)用に大きく見直す必要もあった。
分散システムの研究分野でも、上記を鑑み、単純key検索用途のNoSQLから、属性値検索を始めとしたRDB並みの操作能力を持つNewSQLへの検討が多くされつつある。
また、レプリカデータをリンクとして、データ容量の効率性を高めたMerDyという手法も存在する。
MerDyは、転置インデックス(属性検索用)を用いて、属性値による検索を可能にする分散DBにおいて、データの場所を示す識別子(hash値)を付与する。分散DBにおけるデータ配置のサーバへの配置の決定方法としては、データの属性タグや属性値等にhash値をかけて識別子とする。一方、サーバ毎に担当する識別子領域を割り当ててある。
上記別のhash関数は、「属性値を検索するためのhash関数」であり、検索したい属性値に対して適用される上記主のhash関数とは別の、属性値で検索されるh1(v0),h2(v1),h3(v2)である。例えば、h1(v0)は、文字コード変換などの連続hash関数、h2(v1)は、文字数などの連続hash関数、h3(v2)は、SHA1(Secure Hash Algorithm 1)などの不連続なhash関数である。なお、転置インデックス(属性検索用)のkeyをk1,k2,…で表すことがある。
前記した非特許文献1,2に記載のMercuryやMerDyでは、属性値に対して、keyと同様にhash関数を適用し、そのhash値のコンシステントハッシュ(Consistent Hashing)等の空間上の位置に該当するサーバに、転置インデックスを格納する。
本実施形態に係るクラスタシステム1について具体的に説明する。
図1は、本実施形態に係るクラスタシステムを含む全体構成を示す図である。
本実施形態に係るクラスタシステム1は、図1に示すように、ネットワークを介して、外部システムであるクライアント2等と接続される。そして、クライアント2からの入力データを受け取り、クラスタシステム1内でデータの保存、更新、検索等を行い、その結果を出力データとして、クライアント2に送信する。
図2に示すように、サーバ11は、制御手段110、入出力手段20は、メモリ手段30、および記憶手段40を含んで構成される。
hash bit列作成手段114は、インデックス作成時には、属性値を検索するためのhash関数に基づいて、属性値の属性種類分の属性のhash bit列を作成する。
図4は、「属性値を検索するためのhash関数」のbit列の構成を説明する図である。
図4に示すように、「属性値を検索するためのhash関数」のbit列は、「属性値から得られた連続hash bit列」(図4の符号(A)参照)と、「属性タグから得られた不連続hash bit列」(図4の符号(B)参照)と、「keyから得られた連続hash bit列」(図4の符号(C)参照)と、から構成される。
なお、図4の符号(A)に示す属性値から得られたhash bit列は、不連続hash bit列であってもよい。また、各hash bit列のビット長については、図5により後記する。
図4の符号(A)に示すように、属性値から得られたhash bit列「00000101101101」は、転置インデックス(属性検索用)のhash値である。なお、図4の符号(A)に示す属性値から得られた連続hash bit列は、従来例と同様の転置インデックスのhash値でもある。具体的には、本実施形態では、属性値に対して、keyと同様にhash関数を適用し、そのhash値(図4の符号(A)に示すhash bit列)のコンシステントハッシュ等の空間上の位置に該当するサーバに、転置インデックス(属性検索用)を格納する。
図4の符号(B)に示すように、属性タグから得られた不連続hash bit列「01001100101101」は、属性タグを不連続なMD5等のhash関数に適用して得られたhash値である。一例を挙げる。「居住地」が「東京」であるとすると、属性値は「東京」、属性タグは「居住地」となる。なお、「居住地」が「東京」であることは「属性」となる。この「属性」とは、key に紐付いたデータの中身である。前記図12を参照して説明すると、図12のマスターデータv0について、v0は属性値(属性)であり、属性値v0がどこのデータかということはkey により関係が紐付けられている。属性値(属性)とkey とは、例えば一対一で関係が紐付けられている。
図4の符号(C)に示すように、keyから得られた連続hash bit列「111010101101000」は、keyを連続なhash関数に適用して得られたhash値である。
[概要]
<インデックス作成時>
本bit連結インデクシング方法におけるbit列は、図4の符号(A)の部分に適用される。
本実施形態では、属性タグ、属性値、およびkeyに、コンシステントハッシュ等の空間で位置を決めるためのhash関数をそれぞれ適用した値を結合する。
特に、インデックスを作成する際に、全ての属性値のhash値を算出し、それをbit連結する。
(1)インデックス作成時には、各bit列間において、先頭は、異なる属性種類のhash値を配置するようにする。
(2)各bit列間においては、属性の連結順序をサイクリックに入れ替わるようにbit列の値をセットする。すなわち、bit連結する順序をサイクリックに入れ替え、どの属性も均等に各bit領域に割り当てられるようにする。
検索時には、積にされた検索条件の一つの属性を先頭bitにもつインデックスを選択し、それに対して範囲検索を実行する。どのような積条件でも、領域が小さな範囲検索となるので、膨大なインデックスの突合せがなく、検索の負荷は小さいという効果がある。
[インデックス作成時]
図5は、属性のhash値のbit連結インデクシング方法を説明する図である。
図5に示すように、データ50は、key に紐付いたマスターデータ(例えば、前記図12のマスターデータv0)である。図5では、keyは「1234」、その属性値は「山田」(属性タグは「姓」)、「太郎」(属性タグは「名」)、「男」(属性タグは「性別」)、および「東京」(属性タグは「居住地」)の各属性値を有するものとする。
インデックスを作成する際に、全ての属性値のhash値を算出する。
各属性値「山田」、「太郎」、「男」、および「東京」を、この順に属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)と記述する。属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)の下の矩形の中の数値が属性値から得られたhash bit列である。ここでは、8bitで表したがbit数はどのようなものでもよい。例えば、属性0(姓)のhash bit列「11010111」、属性1(名)のhash bit列「01110001」、属性2(性別)のhash bit列「00010100」、および属性3(居住地)のhash bit列「01011000」である。
図5の符号aに示すように、各属性値のhash値をbit連結したhash値を作成する。図5(a)の場合、「11010111」「01110001」「00010100」「01011000」がbit連結される。
そして、複数の属性値から算出されたhash値をbit列として結合した値に基づき、転置インデックスをクラスタ内のサーバ11に格納するようにする。
bit連結する順序をサイクリックに入れ替えることで、各bit列間において、先頭は、異なる属性種類のhash値を配置するようにする。
例えば、図5(b)に示すように、次の順序では、属性1(名)のhash bit列「01110001」を先頭にくるようにbit連結する順序を入れ替える。この例では、この入れ替えに伴い、いままで先頭であった属性0(姓)のhash bit列「11010111」が最後尾となる。なお、一般的な前方一致の場合、先頭のみが重視される。
bit連結する順序をサイクリックに入れ替えることで、図5(c)に示すように、次の順序では、属性2(性別)のhash bit列「00010100」を先頭にしたhash bit列が連結され、さらにその次の順序では、図5(d)に示すように、属性3(居住地)のhash bit列「01011000」を先頭にしたhash bit列が連結される。
このように、インデックスを作成する際に、bit連結する順序をサイクリックに入れ替え、どの属性も均等に各bit領域に割り当てられるようにする。積条件の組合せ数に依存しないのでインデクシング負荷等は小さいという効果がある。
図6および図7は、検索時のbit連結インデクシング方法を説明する図である。
検索時には、検索条件の一つの属性を先頭bitにもつインデックスを選択し、それに対して範囲検索を実行する。
<例1>
図6は、クラスタ内のサーバ11された転置インデックスに対して、属性2(性別)が男で、属性3(居住地)が東京を検索する場合の例である。属性0(姓)および属性1(名)は、検索対象外であるため「*」(ワイルドカード)となっている。
条件式は、下記で示される。
属性2(性別)=男 ∧ 属性3(居住地)=東京
∧は、積の記号である。なお、∧(積)が実現できれば、∨(和)、¬(否定)、⇒(ならば)などを用いて全てを実現できることが知られている。
図7は、クラスタ内のサーバ11された転置インデックスに対して、属性0(姓)が山田で、属性2(性別)が男を検索する場合の例である。属性1(名)および属性3(居住地)は、検索対象外であるため「*」(ワイルドカード)となっている。
条件式は、下記で示される。
属性0(姓)=山田 ∧属性2(性別)=男
この例2の場合、hash bit列の先頭の8bitが「山田」のhash値に、次のhash bit列の8bitが「男」のhash値で決まる。したがって、図7の符号aに示すように、hash空間上の当該hash領域を担当するインデックスを全て取得する。この例では、key「9876」「5432」「1234」「5678」を有するクラスタ内のサーバ11からインデックスを取得する。そして、「*」(ワイルドカード)の対象8bitが全て「11010111」「00000000」「000010100」「00000000」から「11010111」「11111111」「00010100」「11111111」までの領域に存在するインデックスを取得する。図6の符号b,cと符号d,eに示すhash bit列の領域に存在するインデックスを取得することで、「山田」∧「男」の検索が実現される。
<結合例1>
図8は、Hash値の結合例を示す図である。図8は、検索における積条件の登場頻度に従って結合する例1である。
属性値の属性種類として、前記図5に示す属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)があるものとする。また、これら属性種類の登場頻度は、属性2(性別)>属性0(姓)>属性3(居住地)>属性1(名)であることが分かっているとする。
図8(a)に示すように、登場頻度の高い順に、属性種類を並び替え、並び替えた属性値から算出されたhash 値をbit列として結合する。
また、図8(b)〜(d)に示すように、登場頻度順にサイクリックに入れ替えて、bit連結する。登場頻度が高い属性がより先頭にくるので、積条件検索全体の検索速度が向上する。
図9は、Hash値の結合例を示す図である。図9は、検索における積条件の登場頻度に従って結合する例2である。
属性値の属性種類として、前記図5に示す属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)があるものとする。また、これら属性種類の登場頻度は、属性2(性別)>属性0(姓)>属性3(居住地)>属性1(名)の順に多く、かつ登場確率PがP(性別)=0.5,P(姓)=0.4,P(居住地)=0.3,P(名)=0.2であるとする。
図9の符号aに示すように、それぞれの属性が必ず1回は先頭に来て、かつ、図9の符号bに示すように、結合するbit位置に応じて確率の重みづけ和をとるとともに、図9の符号cに示すように、この確率の重みづけ和が最大となる結合順序を決める。このようにすることで、よく出現する属性タグを条件式に含む場合の検索速度が向上する効果がある。
図10は、Hash値の結合例を示す図である。図10は、検索における積条件の組合せ頻度に従って結合する例である。
属性値の属性種類として、前記図5に示す属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)があるものとする。また、積条件の組合せ頻度が分かっているとする。
例えば、属性2(性別)∧属性3(居住地)、属性0(姓)∧属性3(居住地)、属性0(姓)∧属性2(性別)、および属性0(姓)∧属性1(名)∧属性3(居住地)の積条件の組合せ頻度が高いものとする。
図10(a)に示すように、積条件の組合せ頻度が高い、属性0(姓)および属性2(性別)のhash 値を上位にしてbit連結する。
ここで、積条件の組合せ頻度の検索が多い場合は、上記サイクリックな入れ替えはしないようにする。
なお、上記登場頻度(図9参照)、および上記組合せ頻度(図10参照)に関して、それを利用するために、検索の際に検索条件に含まれる属性種類を検索履歴として記録しておくようにする。このようにすることで、よく出現する属性タグの組合せの条件積における検索速度が向上する効果がある。
これまでの例では、属性数分だけのインデックスを作成していたが、固定数であれば属性数以上のインデックスを作成してもよい。また、同様な理由で属性数以下のインデックスでもよい。
<結合例4>
図11は、Hash値の結合例を示す図である。図11は、インデックス数を増減させて結合する例である。
前記図5の場合、属性数は、属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)の4つであり、図5(a)〜(d)に示すように属性数分だけのインデックスを作成していた。属性値が固定数であれば属性数以上のインデックスを作成してもよい。
例えば、図11(a)〜(d)に示すように、図5(a)〜(d)の場合と同様に属性数は、属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)の4つである。なお、図11(a)〜(d)については、図10(a)〜(d)の場合と同様の例を準用した。
図11(a)〜(d)に示すように、元の属性数は、4つであり、属性1(名)から始まるものは出現しない。そこで、図11(e)の符号aに示すように、属性1(名)から始まるものを追加する。
図12は、Hash値の結合例を示す図である。図12は、積条件として用いない属性があるならば結合しない例である。
これまでの例1〜3では、属性数分だけのhash値を結合していた。積条件として用いない属性があるならばそれは結合しなくてもよいものとする。
前記図5の場合、属性数は、属性0(姓)、属性1(名)、属性2(性別)、および属性3(居住地)の4つであり、図5(a)〜(d)に示すように属性数分だけのインデックスを作成していた。
仮に、属性1(名)が積条件として用いない属性であることが分かっている場合、属性1(名)は結合しなくてもよいものとする。
例えば、図12(a)〜(c)に示すように、属性1(名)が積条件として用いない属性である場合、属性1(名)を結合しない。属性数は3つとなる。その結果、この例では、重複を避けるためインデックスの数も3つとなる。
2 クライアント
11 サーバ
20 入出力手段
30 メモリ手段
40 記憶手段
110 制御手段
111 情報受信手段
112 構文解析手段
113 属性タグ情報格納手段
114 hash bit列作成手段
115 結合手段
116 検索手段
117 情報送信手段
Claims (6)
- KVS(Key Value Store)を用いた分散データベース(DB)において、属性値を検索するためのhash関数を適用し、得られたhash値のhash空間上の位置に該当するサーバに、転置インデックスを格納するクラスタシステム、を構成する各前記サーバとしてのコンピュータを、
インデックス作成時には、
前記属性値を検索するためのhash関数に基づいて、前記属性値の属性種類分の属性のhash bit列を作成するhash bit列作成手段、
前記属性種類分の属性のhash bit列を所定の連結順序で結合する結合手段、として機能させるためのプログラム。 - 前記結合手段は、
前記属性値の属性種類分のすべての属性が少なくとも一回、前記連結順序の先頭に配置して結合すること
を特徴とする請求項1に記載のプログラム。 - 前記結合手段は、
前記属性値の属性種類を登場頻度の高い順に並び替え、並び替えた属性値から算出されたhash 値をbit列として結合すること
を特徴とする請求項1に記載のプログラム。 - 前記結合手段は、
積条件の組合せ頻度が高い、前記属性値の属性種類のhash 値を上位にしてbit連結すること
を特徴とする請求項1に記載のプログラム。 - 前記サーバは、
検索時には、積にされた検索条件の属性を先頭hash bit列にもつインデックスを選択し、該インデックスに対して範囲検索を実行すること
を特徴とする請求項1に記載のプログラム。 - KVS(Key Value Store)を用いた分散データベース(DB)において、属性値を検索するためのhash関数を適用し、得られたhash値のhash空間上の位置に該当するサーバに、転置インデックスを格納するクラスタシステムであって、
前記サーバは、
インデックス作成時には、
前記属性値を検索するためのhash関数に基づいて、前記属性値の属性種類分の属性のhash bit列を作成するhash bit列作成手段と、
前記属性種類分の属性のhash bit列を所定の連結順序で結合する結合手段と、を備えること
を特徴とするクラスタシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015032141A JP6291435B2 (ja) | 2015-02-20 | 2015-02-20 | プログラムおよびクラスタシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015032141A JP6291435B2 (ja) | 2015-02-20 | 2015-02-20 | プログラムおよびクラスタシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016153976A JP2016153976A (ja) | 2016-08-25 |
JP6291435B2 true JP6291435B2 (ja) | 2018-03-14 |
Family
ID=56761023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015032141A Active JP6291435B2 (ja) | 2015-02-20 | 2015-02-20 | プログラムおよびクラスタシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6291435B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI720123B (zh) | 2016-03-11 | 2021-03-01 | 日商日本碍子股份有限公司 | 接續基板 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5477139B2 (ja) * | 2010-04-19 | 2014-04-23 | 日本電気株式会社 | 情報検索システム、情報検索方法およびプログラム |
WO2012079240A1 (en) * | 2010-12-17 | 2012-06-21 | Empire Technology Development Llc | Device discovery in a ubiquitous computing environment |
JP5597666B2 (ja) * | 2012-03-26 | 2014-10-01 | 株式会社東芝 | 半導体記憶装置、情報処理システムおよび制御方法 |
US9280570B2 (en) * | 2013-03-28 | 2016-03-08 | Avaya Inc. | System and method for deletion compactor for large static data in NoSQL database |
-
2015
- 2015-02-20 JP JP2015032141A patent/JP6291435B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI720123B (zh) | 2016-03-11 | 2021-03-01 | 日商日本碍子股份有限公司 | 接續基板 |
Also Published As
Publication number | Publication date |
---|---|
JP2016153976A (ja) | 2016-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Afrati et al. | Fuzzy joins using mapreduce | |
US9025892B1 (en) | Data record compression with progressive and/or selective decomposition | |
US8175875B1 (en) | Efficient indexing of documents with similar content | |
JP6119421B2 (ja) | エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム | |
KR20130062889A (ko) | 데이터 압축 방법 및 시스템 | |
US20120330908A1 (en) | System and method for investigating large amounts of data | |
US20140214838A1 (en) | Method and system for processing large amounts of data | |
Siddiqui et al. | Pseudo-cache-based IoT small files management framework in HDFS cluster | |
US11070231B2 (en) | Reducing storage of blockchain metadata via dictionary-style compression | |
CN109271487A (zh) | 一种相似文本分析方法 | |
US10902069B2 (en) | Distributed indexing and aggregation | |
US10990627B1 (en) | Sharing character data across lookups to identify matches to a regular expression | |
Um et al. | Distributed RDF store for efficient searching billions of triples based on Hadoop | |
Guzun et al. | Hybrid query optimization for hard-to-compress bit-vectors | |
JP5194856B2 (ja) | コンパクトな決定図を用いた効率的インデックス付け | |
JP6291435B2 (ja) | プログラムおよびクラスタシステム | |
JP5684671B2 (ja) | 条件検索データ保存方法、条件検索データベースクラスタシステム、ディスパッチャ、およびプログラム | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
Zhang et al. | Efficient searchable symmetric encryption supporting dynamic multikeyword ranked search | |
Fang et al. | Towards a Latin-square search engine | |
CN105426519A (zh) | 一种用于离线搜索的小规模索引数据存储方法 | |
Guzun et al. | Scalable preference queries for high-dimensional data using map-reduce | |
JP6192171B2 (ja) | プログラムおよびクラスタシステム | |
US11971856B2 (en) | Efficient database query evaluation | |
Peng et al. | Using partial evaluation in holistic subgraph search |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180126 |
|
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: 20180206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180209 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6291435 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |