[Groonga-commit] groonga/groonga-schema at f9c6f14 [master] Fill Usage

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index