Class: Groonga::Schema
- Inherits:
-
Object
- Object
- Groonga::Schema
- Defined in:
- lib/groonga/schema.rb
Overview
groongaのスキーマ(データ構造)を管理するクラス。
Groonga::Schemaを使うことにより簡単にテーブルやカラムを 追加・削除することができる。
のようなスキーマを定義する場合は以下のようになる。
Groonga::Schema.define do |schema|
schema.create_table("Items") do |table|
table.short_text("title")
end
schema.create_table("Users") do |table|
table.short_text("name")
end
schema.create_table("comments") do |table|
table.reference("item", "Items")
table.reference("author", "Users")
table.text("content")
table.time("issued")
end
end
Defined Under Namespace
Classes: ColumnDefinition, ColumnRemoveDefinition, Dumper, IndexColumnDefinition, TableDefinition, TableRemoveDefinition
Class Method Summary collapse
-
.change_table(name, options = {}, &block) ⇒ Object
call-seq: Groonga::Schema.change_table(name, options={}) {|table| …}.
-
.create_table(name, options = {}, &block) ⇒ Object
call-seq: Groonga::Schema.create_table(name, options={}) {|table| …}.
-
.define(options = {}) {|schema| ... } ⇒ Object
call-seq: Groonga::Schema.define(options={}) {|schema| …}.
-
.dump(options = {}) ⇒ Object
スキーマの内容を文字列で返す。返された値は Groonga::Schema.restoreすることによりスキーマ内に組 み込むことができる。.
-
.normalize_type(type) ⇒ Object
:nodoc:.
-
.remove_table(name, options = {}) ⇒ Object
名前がnameのテーブルを削除する。.
-
.restore(dumped_text, options = {}) ⇒ Object
Groonga::Schema.dumpで文字列化したスキーマを組み込む。.
Instance Method Summary collapse
-
#change_table(name, options = {}) {|definition| ... } ⇒ Object
call-seq: schema.change_table(name, options={}) {|table| …}.
-
#create_table(name, options = {}) {|definition| ... } ⇒ Object
call-seq: schema.create_table(name, options={}) {|table| …}.
-
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。.
-
#initialize(options = {}) ⇒ Schema
constructor
スキーマ定義を開始する。.
-
#load(dumped_text) ⇒ Object
Groonga::Schema.dumpで返されたスキーマの内容を読み込む。.
-
#remove_table(name, options = {}) ⇒ Object
名前がnameのテーブルを削除する。.
Constructor Details
#initialize(options = {}) ⇒ Schema
スキーマ定義を開始する。
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
263 264 265 266 |
# File 'lib/groonga/schema.rb', line 263 def initialize(={}) @options = ( || {}).dup @definitions = [] end |
Class Method Details
.change_table(name, options = {}, &block) ⇒ Object
call-seq:
Groonga::Schema.change_table(name, options={}) {|table| ...}
名前がnameのテーブルを変更する。以下の省略形。
Groonga::Schema.define do |schema|
schema.change_table(name, options) do |table|
...
end
end
ブロックにはGroonga::Schema::TableDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
194 195 196 197 198 |
# File 'lib/groonga/schema.rb', line 194 def change_table(name, ={}, &block) define do |schema| schema.change_table(name, , &block) end end |
.create_table(name, options = {}, &block) ⇒ Object
call-seq:
Groonga::Schema.create_table(name, options={}) {|table| ...}
名前がnameのテーブルを作成する。以下の省略形。
Groonga::Schema.define do |schema|
schema.create_table(name, options) do |table|
...
end
end
ブロックにはGroonga::Schema::TableDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
optionsに指定可能な値は以下の通り。
:force
-
true
を指定すると既存の同名のテーブルが存在してい ても、強制的にテーブルを作成する。 :type
-
テーブルの型を指定する。
:array
,:hash
,:patricia_trie
のいずれかを指定する。デフォルトで は:array
になる。 :context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
:path
-
テーブルを保存するパスを指定する。パスを指定すると 永続テーブルになる。
:persistent
-
テーブルを永続テーブルとする。
:path:
を省略した場 合はパス名は自動的に作成される。デフォルトでは永続 テーブルとなる。 :value_type
-
値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。
:sub_records
-
true
を指定するとGroonga::Table#groupでグループ化 したときに、Groonga::Record#n_sub_recordsでグルー プに含まれるレコードの件数を取得できる。
以下は:type
に:hash
あるいは:patricia_trie
を指定 した時に指定可能。
:key_type
-
キーの種類を示すオブジェクトを指定する。キーの種類 には型名(“Int32”や“ShortText”など)または Groonga::Typeまたはテーブル(Groonga::Array、 Groonga::Hash、Groonga::PatriciaTrieのどれか)を指 定する。
Groonga::Typeを指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは 4096バイトであるため、Groonga::Type::TEXTや Groonga::Type::LONG_TEXTは使用できない。
テーブルを指定した場合はレコードIDをキーとして使用 する。指定したテーブルのGroonga::Recordをキーとし て使用することもでき、その場合は自動的に Groonga::RecordからレコードIDを取得する。
省略した場合は文字列をキーとして使用する。この場合、 4096バイトまで使用可能である。
:default_tokenizer
-
Groonga::IndexColumnで使用するトークナイザを指定す る。デフォルトでは何も設定されていないので、テーブ ルにGroonga::IndexColumnを定義する場合は
"TokenBigram"
などを指定する必要がある。
以下は:type
に:patricia_trie
を指定した時に指定可能。
:key_normalize
-
true
を指定するとキーを正規化する。 :key_with_sis
-
true
を指定するとキーの文字列の全suffixが自動的に 登録される。
155 156 157 158 159 |
# File 'lib/groonga/schema.rb', line 155 def create_table(name, ={}, &block) define do |schema| schema.create_table(name, , &block) end end |
.define(options = {}) {|schema| ... } ⇒ Object
call-seq:
Groonga::Schema.define(options={}) {|schema| ...}
スキーマを定義する。ブロックにはGroonga::Schemaオブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。
schema = Groonga::Scheme.new()
...
schema.define
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
64 65 66 67 68 |
# File 'lib/groonga/schema.rb', line 64 def define(={}) schema = new() yield(schema) schema.define end |
.dump(options = {}) ⇒ Object
スキーマの内容を文字列で返す。返された値は Groonga::Schema.restoreすることによりスキーマ内に組 み込むことができる。
dump.rb:
File.open("/tmp/groonga-schema.rb", "w") do |schema|
dumped_text = Groonga::Schema.dump
end
restore.rb:
dumped_text = Groonga::Schema.dump
Groonga::Database.create(:path => "/tmp/new-db.grn")
Groonga::Schema.restore(dumped_text)
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
219 220 221 |
# File 'lib/groonga/schema.rb', line 219 def dump(={}) Dumper.new().dump end |
.normalize_type(type) ⇒ Object
:nodoc:
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/groonga/schema.rb', line 230 def normalize_type(type) # :nodoc: return type if type.nil? return type if type.is_a?(Groonga::Object) case type.to_s when "string" "ShortText" when "text" "Text" when "int", "integer" "Int32" when "float" "Float" when "decimal" "Int64" when "datetime", "timestamp", "time", "date" "Time" when "binary" "LongText" when "boolean" "Bool" else type end end |
.remove_table(name, options = {}) ⇒ Object
名前がnameのテーブルを削除する。
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
168 169 170 171 172 |
# File 'lib/groonga/schema.rb', line 168 def remove_table(name, ={}) define do |schema| schema.remove_table(name, ) end end |
.restore(dumped_text, options = {}) ⇒ Object
Groonga::Schema.dumpで文字列化したスキーマを組み込む。
224 225 226 227 228 |
# File 'lib/groonga/schema.rb', line 224 def restore(dumped_text, ={}) define() do |schema| schema.load(dumped_text) end end |
Instance Method Details
#change_table(name, options = {}) {|definition| ... } ⇒ Object
call-seq:
schema.change_table(name, options={}) {|table| ...}
名前がnameのテーブルを変更する。
テーブルの変更は#defineを呼び出すまでは実行されないこ とに注意すること。
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
399 400 401 402 403 404 |
# File 'lib/groonga/schema.rb', line 399 def change_table(name, ={}) = @options.merge( || {}).merge(:change => true) definition = TableDefinition.new(name, ) yield(definition) @definitions << definition end |
#create_table(name, options = {}) {|definition| ... } ⇒ Object
call-seq:
schema.create_table(name, options={}) {|table| ...}
名前がnameのテーブルを作成する。
テーブルの作成は#defineを呼び出すまでは実行されないこ とに注意すること。
optionsに指定可能な値は以下の通り。
:force
-
true
を指定すると既存の同名のテーブルが存在してい ても、強制的にテーブルを作成する。 :type
-
テーブルの型を指定する。
:array
,:hash
,:patricia_trie
のいずれかを指定する。デフォルトで は:array
になる。 :context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Schema.newで指定した Groonga::Contextを使用する。Groonga::Schema.newで指 定していない場合はGroonga::Context.defaultを使用する。
:path
-
テーブルを保存するパスを指定する。パスを指定すると 永続テーブルになる。
:persistent
-
テーブルを永続テーブルとする。
:path:
を省略した場 合はパス名は自動的に作成される。デフォルトでは永続 テーブルとなる。 :value_type
-
値の型を指定する。省略すると値のための領域を確保しな い。値を保存したい場合は必ず指定すること。
参考: Groonga::Type.new
:sub_records
-
true
を指定するとGroonga::Table#groupでグループ化 したときに、Groonga::Record#n_sub_recordsでグルー プに含まれるレコードの件数を取得できる。
以下は:type
に:hash
あるいは:patricia_trie
を指定 した時に指定可能。
:key_type
-
キーの種類を示すオブジェクトを指定する。キーの種類 には型名(“Int32”や“ShortText”など)または Groonga::Typeまたはテーブル(Groonga::Array、 Groonga::Hash、Groonga::PatriciaTrieのどれか)を指 定する。
Groonga::Typeを指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは 4096バイトであるため、Groonga::Type::TEXTや Groonga::Type::LONG_TEXTは使用できない。
テーブルを指定した場合はレコードIDをキーとして使用 する。指定したテーブルのGroonga::Recordをキーとし て使用することもでき、その場合は自動的に Groonga::RecordからレコードIDを取得する。
省略した場合は文字列をキーとして使用する。この場合、 4096バイトまで使用可能である。
:default_tokenizer
-
Groonga::IndexColumnで使用するトークナイザを指定す る。デフォルトでは何も設定されていないので、テーブ ルにGroonga::IndexColumnを定義する場合は
"TokenBigram"
などを指定する必要がある。
以下は:type
に:patricia_trie
を指定した時に指定可能。
:key_normalize
-
true
を指定するとキーを正規化する。 :key_with_sis
-
true
を指定するとキーの文字列の全suffixが自動的に 登録される。
365 366 367 368 369 |
# File 'lib/groonga/schema.rb', line 365 def create_table(name, ={}) definition = TableDefinition.new(name, @options.merge( || {})) yield(definition) @definitions << definition end |
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。
269 270 271 272 273 |
# File 'lib/groonga/schema.rb', line 269 def define @definitions.each do |definition| definition.define end end |
#load(dumped_text) ⇒ Object
Groonga::Schema.dumpで返されたスキーマの内容を読み込む。
読み込まれた内容は#defineを呼び出すまでは実行されない ことに注意すること。
279 280 281 |
# File 'lib/groonga/schema.rb', line 279 def load(dumped_text) instance_eval(dumped_text) end |
#remove_table(name, options = {}) ⇒ Object
名前がnameのテーブルを削除する。
テーブルの削除は#defineを呼び出すまでは実行されないこ とに注意すること。
optionsに指定可能な値は以下の通り。
:context
-
スキーマ定義時に使用するGroonga::Contextを指定する。 省略した場合はGroonga::Context.defaultを使用する。
381 382 383 384 |
# File 'lib/groonga/schema.rb', line 381 def remove_table(name, ={}) definition = TableRemoveDefinition.new(name, @options.merge( || {})) @definitions << definition end |