7.22. シャーディング#
Added in version 5.0.0.
Groongaにはテーブルに格納できるレコード数に 制限事項 があります。1つのテーブルに268,435,455以上のレコードを追加できません。
この制限を解決するために、Groongaは時間ベースのシャーディング機能をサポートしています。
この機能は同一データベース内で動きます。複数のデータベースをまたいでは動きません。これは、このシャーディング機能はデータを複数のマシンに分散する用途では使えないということです。
もし、分散対応のシャーディング機能が欲しい場合は、 Mroonga または PGroonga を使ってください。MySQLまたはPostgreSQLが提供しているシャーディング機能を使うことができます。近い将来、 Droonga でも分散対応のシャーディング機能を使えるようになる予定です。
7.22.1. 概要#
シャーディングは sharding
プラグインとして実装されています。このプラグインはmrubyで書かれています。そのため、Groongaをビルドするときにmrubyを有効にする必要があります。
Groongaがmrubyをサポートしているかは groonga 実行ファイル の --version
引数を使うとわかります:
% groonga --version
groonga 5.0.5 [...,mruby,...]
configure options: <...>
mruby
があればあなたのGroongaはmrubyをサポートしています。
sharding
プラグインは検索系のコマンドだけを提供しています。これらのコマンドは logical_select や logical_range_filter というように、コマンド名に logical_
プレフィックスがついています。
sharding
プラグインはスキーマ定義コマンドとデータロードコマンドをまだ提供していません。そのため、既存の table_create 、 column_create 、 load コマンドを使う必要があります。
sharding
プラグインを使うにはいくつかのルールに則ってテーブルとカラムを作る必要があります。これについては後述します。
7.22.2. 用語集#
名前 |
説明 |
---|---|
論理テーブル |
複数のシャードをあわせて1つに見せているテーブルです。Groongaのデータベースの中には存在しません。私たちの頭の中にだけあります。 |
論理テーブル名 |
論理テーブルの名前です。これはシャード名のプレフィックスです。例えば、 |
シャード |
1日分または1ヶ月分のレコードを格納しているテーブルです。1つのシャードには一部のレコードのみがあります。 シャード名(=テーブル名)は 例えば、 |
7.22.3. ルール#
TODO