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(={}) = ( || {}).dup @definitions = [] end |
Class Method Details
.change_table(name, options = {}, &block) ⇒ Object
call-seq:
Groonga::Schema.change_table(name, ={}) {|table| ...}
名前がnameのテーブルを変更する。以下の省略形。
Groonga::Schema.define do |schema|
schema.change_table(name, ) 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, ={}) {|table| ...}
名前がnameのテーブルを作成する。以下の省略形。
Groonga::Schema.define do |schema|
schema.create_table(name, ) 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(={}) {|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, ={}) {|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, ={}) = .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, ={}) {|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, .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, .merge( || {})) @definitions << definition end |