Kouhei Sutou
null+****@clear*****
Tue Aug 16 11:42:27 JST 2016
Kouhei Sutou 2016-08-16 11:42:27 +0900 (Tue, 16 Aug 2016) New Revision: f9c6f14ebd8e0931ce10da8a81a5891fb74fab9f https://github.com/groonga/groonga-schema/commit/f9c6f14ebd8e0931ce10da8a81a5891fb74fab9f Message: Fill Usage Modified files: README.md Modified: README.md (+122 -6) =================================================================== --- README.md 2016-08-16 11:05:25 +0900 (a8b2884) +++ README.md 2016-08-16 11:42:27 +0900 (0c62e40) @@ -17,9 +17,125 @@ Groonga-schema is a Ruby library and tool to processes [Groonga](http://groonga. ## Usage -TODO... +### As a tool + +Here are command lines provided by groonga-schema: + + * `groonga-schema-diff`: It reports difference between 2 schema. + +#### `groonga-schema-diff` + +`groonga-schema-diff` reports difference between 2 schema: + +```text +% groonga-schema-diff FROM_SCHEMA TO_SCHEMA +``` + +The output of `groonga-schema-diff` is a Groonga command list. It +means that you can apply difference by processing the output of +`groonga-schema-diff` by Groonga. The relation of them are similar to +`diff` and `patch`. + +The following example shows about it. + +Here are sample schema: + +`current.grn`: + +```text +table_create Logs TABLE_NO_KEY +column_create Logs timestamp COLUMN_SCALAR ShortText +``` + +`new.grn`: + +```text +table_create Logs TABLE_NO_KEY +column_create Logs timestamp COLUMN_SCALAR Time +``` + +In the `current.grn` schema, `Logs.timestamp` column's value type is +`ShortText`. In the `new.grn` schema, it's `Time`. + +Here is the output of `groonga-schema-diff`: + +```text +% groonga-schema-diff current.grn new.grn +column_create --flags "COLUMN_SCALAR" --name "timestamp_new" --table "Logs" --type "Time" +column_copy --from_name "timestamp" --from_table "Logs" --to_name "timestamp_new" --to_table "Logs" +column_rename --name "timestamp" --new_name "timestamp_old" --table "Logs" +column_rename --name "timestamp_new" --new_name "timestamp" --table "Logs" + +column_remove --name "timestamp_old" --table "Logs" +``` + +The output Groonga command list does the followings: + + 1. Create a new column `Logs.timestamp_new`. The value type of the new column is `Time` not `ShortText`. + + 2. Copy data to `Logs.timestamp_new` from `Logs.timestamp`. + + 3. Rename `Logs.timestamp` to `Logs.timestamp_old`. + + 4. Rename `Logs.timestamp_new` to `Logs.timestamp`. + + 5. Remove `Logs.timestamp_old`. + +It means that the output Groonga command list supports data migration. + +Here is a sample database to show data migration: + +```text +% groonga DB_PATH dump +table_create Logs TABLE_NO_KEY +column_create Logs timestamp COLUMN_SCALAR ShortText + +load --table Logs +[ +["_id","timestamp"], +[1,"2016-08-16 00:00:01"], +[2,"2016-08-16 00:00:02"], +[3,"2016-08-16 00:00:03"], +[4,"2016-08-16 00:00:04"], +[5,"2016-08-16 00:00:05"] +] +``` + +You can apply the change by the following command lines: + +```text +% groonga-schema-diff current.grn new.grn > diff.grn +% groonga --file diff.grn DB_PATH +``` + +Or: + +```text +% groonga-schema-diff current.grn new.grn | groonga DB_PATH +``` + +Here is the sample database after applying the changes: + +```text +% groonga DB_PATH dump +table_create Logs TABLE_NO_KEY +column_create Logs timestamp COLUMN_SCALAR Time + +load --table Logs +[ +["_id","timestamp"], +[1,1471273201.0], +[2,1471273202.0], +[3,1471273203.0], +[4,1471273204.0], +[5,1471273205.0] +] +``` + +`Logs.timestamp` column's value type is changed to `Time` from +`ShortText` and data are also converted. -## Examples +### As a library TODO... @@ -32,9 +148,10 @@ TODO... * English: [groonga-talk �� lists.sourceforge.net](https://lists.sourceforge.net/lists/listinfo/groonga-talk) * Japanese: [groonga-dev �� lists.sourceforge.jp](http://lists.sourceforge.jp/mailman/listinfo/groonga-dev) -## Thanks +## Chat -* ... +* English: [Gitter:groonga/en](https://gitter.im/groonga/en) +* Japanese: [Gitter:groonga/ja](https://gitter.im/groonga/ja) ## Authors @@ -44,5 +161,4 @@ TODO... LGPLv2.1 or later. See doc/text/lgpl-2.1.txt for details. -(Kouhei Sutou has a right to change the license including contributed -patches.) +(Kouhei Sutou has a right to change the license including contributed patches.) -------------- next part -------------- HTML����������������������������...Download