JP2014130492A - インデックスの生成方法及び計算機システム - Google Patents
インデックスの生成方法及び計算機システム Download PDFInfo
- Publication number
- JP2014130492A JP2014130492A JP2012288087A JP2012288087A JP2014130492A JP 2014130492 A JP2014130492 A JP 2014130492A JP 2012288087 A JP2012288087 A JP 2012288087A JP 2012288087 A JP2012288087 A JP 2012288087A JP 2014130492 A JP2014130492 A JP 2014130492A
- Authority
- JP
- Japan
- Prior art keywords
- index
- filling rate
- buffer memory
- capacity
- page
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】SQL処理部111、パラメータ管理部112、バッファメモリ115、バッファメモリ管理部114、パラメータ生成部113、インデックス生成部116からなり、パラメータ生成部はパラメータ管理部から生成するインデックスの基本情報、テーブル情報、バッファメモリ容量を取得し、バッファメモリ容量と生成するインデックスの容量を比較してインデックスの階層ごとに充填率を計算する手段と、新たに生成する前記インデックスの容量と前記バッファメモリの前記格納領域の容量とを比較する手段と、比較の結果、前記バッファメモリ容量の容量が不足する場合には、該インデックスの前記葉ノードの充填率を高くして前記階層ごとに前記充填率を再設定した新たな前記インデックスを生成する手段とを持つ計算機システム。
【選択図】図1
Description
また、特許文献2には、B木インデックスを作成する際に、レコードの追加を想定して予めページの充填率を低くする手法についても開示されている。
p1=r/(e1×f1)・・・(1)
p2=p1/(e2×f2)・・(2)
p3=p2/(e2×f3)・・(3)
p4=p3/(e3×f4)・・(4)
このとき、インデックスの各階層のページの総容量440〜443は、それぞれインデックスの各階層のページ数420〜423とインデックスのページサイズ203を乗算することによって求めることができる。例えば、インデックスの各階層のページの総容量である440をsizep1とし、インデックスのページサイズである203をpagesizeとしたとき、sizep1は式(5)とする。
図4は、テーブル500の一例を示すものである。本実施例では、テーブルとして従業員テーブルを用いて説明する。テーブル500は、「社員番号」、「名前」、「部署」、「年齢」等のインデックスがあり、何れかのインデックスをキーにして従業員に関する情報の検索・利用ができる。
図5の例では、インデックス600の階層数が3であり、1階層の葉ノード604には60個余のエッジ602があり、テーブルのページ501〜503に対するエッジ(ポインタ612)が6枚のページ610に均等に格納され、エッジのキー値611として1、6、−、−、59が設定されている。2階層の内部ノード603には2枚のページに均等にエッジが格納され、キー値611として10、21、42、53が設定され、これに基づいて上下の階層である内部ノード603と葉ノード604は、6つのエッジ(ポインタ612)によって関連付けられている。同様に、3階層の根ノード601には1枚のページ610に全エッジが格納されており、キー値611として、30が設定され、これに基づいて上下の階層が2つのエッジ(ポインタ)によって関連付けられている。
計算機システム110は、SQL処理部111にユーザ100から処理命令132、設定値133、レコード134の少なくとも1つを入力データ131として通信150を通して受信する。
SQL処理部111は、バッファメモリ115の確保が完了すると、通信153を通じてデータ部120にテーブル500を作成しレコード134を追加する。このとき、SQL処理部111は、作成するテーブル500のテーブル名(インデックス名)302、レコード数303、レコード134のキー長304をパラメータ管理部112へ通信154を通じて送信する。
SQL処理部111は、処理命令132が「レコード134の更新又は追加又は削除」を指示する場合、処理命令132の実行にバッファメモリ115が必要になるならば、前記と同様にバッファメモリ115を確保する。SQL処理部111は、バッファメモリ115の確保が完了すると、通信153を通じてデータ部120に対して「レコード134の更新又は追加又は削除」を、バッファメモリ115を使用して行う。このとき、SQL処理部111は、テーブル500のテーブル名、レコード134のキー長、レコード数を、パラメータ管理部112へ通信154を通じて送信する。
計算機システム110は、インデックス生成部116にユーザ100から処理命令136、設定値137の少なくとも1つを入力データ135として通信160を通して受信する。
すなわち、ステップS806では、インデックスの階層数403、インデックスの各階層の充填率430〜433、インデックスの各階層のページ数420〜423をテーブルのレコード数304、各ノードの最大エッジ格納数404〜406、インデックスの最大充填率205、インデックスの最小充填率206から、「最大エッジ格納数」を計算する。
ステップS902では、インデックスの各階層の充填率430〜433を最大充填率205か最小充填率206のうち大きい値とする。もし、最大充填率205と最小充填率206の指定が無ければ、インデックスの各階層の充填率430〜433に一時的に適当な値を指定する。例えば、作成するインデックスが参照のみの処理命令を実行する場合、インデックスの各階層の充填率430〜433を100%とする。
ステップS903では、葉ノードのページ数420を式(1)に基づいて計算する。
ステップS904では、次に計算するインデックスの階層が根ノードであるか判定する。判定方法として、葉ノードのページ数420が根ノードの最大エッジ格納数406より小さいか判断する。
ステップS1006は、内部ノードの充填率とページ数を、葉ノードのページ数420、最小充填率206から算出する。このとき、葉ノードに近い内部ノードから順番に充填率を算出する。また、内部ノードの充填率は、最小充填率206以上であり、葉ノードに近い内部ノードの充填率431ほど高く設定し、根ノードに近い内部ノードの充填率432ほど低くなるように設定する。葉ノードに近い内部ノードの充填率から順に、充填率を可能な限り大きくしてまで計算する。もし、ある階層のページ数422が根ノードの充填率433と最大エッジ格納数406の積より小さい場合、根ノードの充填率433はページ数422を最大エッジ格納数406で割った値とする。このとき、ページ数を求めた回数を0からカウントし、カウントした値がインデックスの階層数となる。これらの計算結果に基づき、インデックス管理情報400B(図12)の数値が更新される。この例では、インデックスの階層数は3のままである。
Claims (15)
- プロセッサとバッファメモリと記憶装置とを備えた計算機システムであって、
前記記憶装置は、情報が格納されたテーブルを有し、
前記バッファメモリ及び前記記憶装置は、各々、前記テーブルを検索するためのインデックスの格納領域を有しており、
前記インデックスは、根ノードと葉ノードを含む複数のノードからなる階層構造のインデックスであり、
前記計算機システムは、
新たに生成する前記インデックスの容量と前記バッファメモリ容量とを比較して前記インデックスの階層ごとに充填率を計算する機能と、
設定された条件の範囲で各階層の前記充填率を小さくする機能と、
新たに生成する前記インデックスの容量と前記バッファメモリの前記格納領域の容量とを比較する機能と、
比較の結果、前記バッファメモリ容量の容量が不足する場合には、該インデックスの前記葉ノードの充填率を高くして前記階層ごとに前記充填率を再設定した新たな前記インデックスを生成する機能とを有する
ことを特徴とする計算機システム。 - 請求項1において、
新たに生成する前記インデックスの階層数が元のインデックスの階層数に対して減少している場合には、前記葉ノードの充填率を低くし前記階層ごとに前記充填率を再設定することにより前記階層数が変化しないようにした新たな前記インデックスを生成する機能を有する
ことを特徴とする計算機システム。 - 請求項2において、
前記インデックスは、データを格納するページと、前記テーブルのページが保持するキー値と、前記各ページへのポインタを含み、
前記記憶装置は、前記インデックスごとに生成されるインデックス管理情報を有し、
前記インデックス管理情報は、前記インデックスの階層ごとの各階層のページ数及び充填率の情報を有しており、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層の前記ページを前記バッファメモリに配置可能か否かを判定する機能と、
前記インデックスの前記ページの全てを格納しても前記バッファメモリに空き容量がある場合には、前記各階層のノードの充填率を小さくして新たな前記インデックスを生成するする機能とを有する
ことを特徴とする計算機システム。 - 請求項2において、
前記インデックスは、前記根ノードと前記葉ノードの間に少なくとも2階層の内部ノードを有し、かつ、データを格納するページと、前記テーブルのページが保持するキー値と、前記各ページへのポインタを含み、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層のページを前記バッファメモリに配置可能か否かを判定する機能と、
前記インデックスの前記ページの全てを格納できない場合には、前記内部ノードの充填率が、前記葉ノードに近い前記内部ノードの充填率ほど高く、前記根ノードに近い前記内部ノードの充填率ほど低くなるように再設定して新たな前記インデックスを生成するする機能とを有する
ことを特徴とする計算機システム。 - プロセッサとバッファメモリと記憶装置とを備えた計算機システムであって、
前記記憶装置は、情報が格納されたテーブルを有し、
前記バッファメモリ及び前記記憶装置は、各々、前記テーブルを検索するためのインデックスの格納領域を有しており、
前記インデックスは、根ノードと葉ノードを含む複数のノードからなる階層構造のインデックスであり、
前記計算機システムは、
入力データに基づいて、前記インデックスを生成するためのパラメータをインデックス管理情報として生成するパラメータ生成部と、
前記インデックス管理情報と前記入力データに基づいて、前記インデックスを生成するインデックス生成部とを備えており、
前記インデックス管理情報は、前記インデックスの階層ごとのページ数及び充填率の情報を有しており、
新たに生成する前記インデックスの容量と前記バッファメモリの前記格納領域の容量とを比較し、前記バッファメモリ容量の容量が不足している場合には、該インデックスの前記葉ノードの充填率を高くして前記階層ごとに前記充填率を再設定した新たな前記インデックスを生成する
ことを特徴とする計算機システム。 - 請求項5において、
新たに生成する前記インデックスの階層数が元のインデックスの階層数に対して減少している場合には、前記葉ノードの充填率を低くし前記階層ごとに前記充填率を再設定することにより前記階層数が変化しないようにした新たな前記インデックスを生成する
ことを特徴とする計算機システム。 - 請求項6において、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層のページを前記バッファメモリに配置可能か否かを判定し、
前記インデックスの前記ページの全てを格納しても前記バッファメモリに空き容量がある場合には、前記各階層のノードの充填率を小さくして新たな前記インデックスを生成する
ことを特徴とする計算機システム。 - 請求項6において、
前記入力データを受け付けて処理するSQL処理部と、
前記SQL処理部の処理結果の情報を管理するパラメータ管理部と、
前記バッファメモリの使用用途や容量を管理するバッファメモリ管理部とを備えており、
前記記憶装置は、前記インデックスのインデックス名、レコード数、キー長の情報を含むテーブル管理情報を有し、
前記パラメータ管理部は、前記SQL処理部から受信したデータに基づき、前記記憶装置に前記テーブル管理情報を作成し、前記インデックス名、前記レコード数、前記キー長を更新し、
前記パラメータ管理部は、前記SQL処理部からの前記データを全て前記テーブル管理情報に更新し、
前記パラメータ生成部及び前記インデックス生成部は、前記インデックス名毎に、前記階層構造の設定、更新を行う
ことを特徴とする計算機システム。 - 請求項7において、
前記記憶装置は、ユーザ設定情報及び前記インデックスごとに生成される前記インデックス管理情報を有し、
前記ユーザ設定情報は、前記インデックス名毎に、レコードのキー値及び前記ページのポインタからなるエッジやレコードを格納するページサイズ、前記ページに格納するエッジやレコードの最大充填率、前記ページに格納する前記エッジや前記レコードの最小充填率、前記テーブルや前記インデックスが利用可能な前記バッファメモリ容量に関して、各々に対応する数値データが格納されており、
前記インデックス管理情報は、前記パラメータ名として、前記インデックス名、前記インデックスの階層数、前記葉ノードの最大エッジ格納数、内部ノードの最大エッジ格納数、前記根ノードの最大エッジ格納数、前記インデックスの各階層の前記ページ数、前記インデックスの各階層の前記充填率、前記インデックスの各階層のページの総容量を保持しており、
前記パラメータ生成部及び前記インデックス生成部は、前記ユーザ設定情報及び前記インデックス管理情報に基づいて前記階層構造の設定、更新を行う
ことを特徴とする計算機システム。 - 計算機システムにおけるインデックスの生成方法であって、
前記計算機システムは、プロセッサとバッファメモリと記憶装置とを備え、
前記記憶装置は、情報が格納されたテーブルを有し、
前記バッファメモリ及び前記記憶装置は、各々、前記テーブルを検索するためのインデックスの格納領域を有しており、
前記インデックスは、根ノードと葉ノードを含む複数のノードからなる階層構造のインデックスであり、
設定された条件の範囲で各階層の充填率を小さくしながら、新たに生成する前記インデックスの階層ごとに前記充填率を計算し、
新たに生成する前記インデックスの容量と前記バッファメモリの前記格納領域の容量とを比較し、
比較の結果、前記バッファメモリ容量の容量が不足する場合には、該インデックスの前記葉ノードの充填率を高くして前記階層ごとに前記充填率を再設定した新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。 - 請求項10において、
新たに生成する前記インデックスの階層数が元のインデックスの階層数に対して減少している場合には、前記葉ノードの充填率を低くし前記階層ごとに前記充填率を再設定することにより前記階層数が変化しないようにした新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。 - 請求項11において、
前記インデックスは、データを格納するページと、前記テーブルのページが保持するキー値と、前記各ページへのポインタを含み、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層の前記ページを前記バッファメモリに配置可能か否かを判定し、
前記インデックスの前記ページの全てを格納しても前記バッファメモリに空き容量がある場合には、前記各階層のノードの充填率を小さくして新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。 - 請求項12において、
新たに生成する前記インデックスの階層数が元のインデックスの階層数に対して減少している場合には、前記葉ノードの充填率を低くし前記階層ごとに前記充填率を再設定することにより前記階層数が変化しないようにした新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。 - 請求項12において、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層のページを前記バッファメモリに配置可能か否かを判定し、
前記インデックスの前記ページの全てを格納しても前記バッファメモリに空き容量がある場合には、前記各階層のノードの充填率を小さくして新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。 - 請求項13において、
前記インデックスは、前記根ノードと前記葉ノードの間に少なくとも2階層の内部ノードを有し、
前記インデックスの容量と前記格納領域の容量との比較において、前記インデックスの全階層のページを前記バッファメモリに配置可能か否かを判定し、
前記インデックスの前記ページの全てを格納できない場合には、前記内部ノードの充填率が、前記葉ノードに近い前記内部ノードの充填率ほど高く、前記根ノードに近い前記内部ノードの充填率ほど低くなるように再設定して新たな前記インデックスを生成する
ことを特徴とするインデックスの生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012288087A JP2014130492A (ja) | 2012-12-28 | 2012-12-28 | インデックスの生成方法及び計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012288087A JP2014130492A (ja) | 2012-12-28 | 2012-12-28 | インデックスの生成方法及び計算機システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014130492A true JP2014130492A (ja) | 2014-07-10 |
Family
ID=51408826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012288087A Pending JP2014130492A (ja) | 2012-12-28 | 2012-12-28 | インデックスの生成方法及び計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014130492A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268639A (zh) * | 2018-01-18 | 2018-07-10 | 成都嗨翻屋文化传播有限公司 | 一种大数据环境下的指标计算方法 |
JP2019008788A (ja) * | 2017-06-20 | 2019-01-17 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法 |
JP2022058529A (ja) * | 2016-08-10 | 2022-04-12 | ムーンシャドウ モバイル,インコーポレイテッド | 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造 |
US11664979B2 (en) | 2019-09-13 | 2023-05-30 | Kioxia Corporation | Storage system of key-value store which executes retrieval in processor and control circuit, and control method of the same |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123426A (ja) * | 2006-11-15 | 2008-05-29 | Hitachi Ltd | インデックス処理方法及び計算機システム |
JP2012099133A (ja) * | 2011-12-27 | 2012-05-24 | Hitachi Ltd | インデックス処理方法及び計算機システム |
-
2012
- 2012-12-28 JP JP2012288087A patent/JP2014130492A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123426A (ja) * | 2006-11-15 | 2008-05-29 | Hitachi Ltd | インデックス処理方法及び計算機システム |
JP2012099133A (ja) * | 2011-12-27 | 2012-05-24 | Hitachi Ltd | インデックス処理方法及び計算機システム |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022058529A (ja) * | 2016-08-10 | 2022-04-12 | ムーンシャドウ モバイル,インコーポレイテッド | 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造 |
JP7257068B2 (ja) | 2016-08-10 | 2023-04-13 | ムーンシャドウ モバイル,インコーポレイテッド | 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造 |
JP2019008788A (ja) * | 2017-06-20 | 2019-01-17 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法 |
JP7001544B2 (ja) | 2017-06-20 | 2022-01-19 | 三星電子株式会社 | 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法 |
US11809722B2 (en) | 2017-06-20 | 2023-11-07 | Samsung Electronics Co., Ltd. | System and method for managing a memory device using indexes |
CN108268639A (zh) * | 2018-01-18 | 2018-07-10 | 成都嗨翻屋文化传播有限公司 | 一种大数据环境下的指标计算方法 |
CN108268639B (zh) * | 2018-01-18 | 2022-02-11 | 成都嗨翻屋科技有限公司 | 一种大数据环境下的指标计算方法 |
US11664979B2 (en) | 2019-09-13 | 2023-05-30 | Kioxia Corporation | Storage system of key-value store which executes retrieval in processor and control circuit, and control method of the same |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182356B2 (en) | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems | |
US9678969B2 (en) | Metadata updating method and apparatus based on columnar storage in distributed file system, and host | |
CN106021266B (zh) | 支持动态更新的快速多层索引 | |
Papagiannis et al. | Tucana: Design and implementation of a fast and efficient scale-up key-value store | |
US8229968B2 (en) | Data caching for distributed execution computing | |
Shukla et al. | Schema-agnostic indexing with Azure DocumentDB | |
US20210303537A1 (en) | Log record identification using aggregated log indexes | |
Kyrola | Drunkardmob: billions of random walks on just a pc | |
US9898501B2 (en) | Method and system for performing transactional updates in a key-value store | |
Nguyen et al. | Zing database: high-performance key-value store for large-scale storage service | |
JPWO2010084754A1 (ja) | データベースシステム、データベース管理方法、及びデータベース構造 | |
Chrysafis et al. | Foundationdb record layer: A multi-tenant structured datastore | |
Carniel et al. | A generic and efficient framework for spatial indexing on flash-based solid state drives | |
JP2014130492A (ja) | インデックスの生成方法及び計算機システム | |
US9229968B2 (en) | Management of searches in a database system | |
WO2022033099A1 (zh) | 一种构建索引方法及装置 | |
Ni et al. | Adaptive database schema design for multi-tenant data management | |
US9558221B2 (en) | Multi-pass, parallel merge for partitioned intermediate pages | |
Mao et al. | Comparison and evaluation of state-of-the-art LSM merge policies | |
Chao-Qiang et al. | RDDShare: reusing results of spark RDD | |
Azez et al. | JOUM: an indexing methodology for improving join in hive star schema | |
Joldzic et al. | The impact of cluster characteristics on HiveQL query optimization | |
JP6006740B2 (ja) | インデックス管理装置 | |
Bergami et al. | A Join Operator for Property Graphs. | |
Carter et al. | Nanosecond indexing of graph data with hash maps and VLists |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140908 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150710 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160426 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20161025 |