### Navigation

- index
- next |
- previous |
- groonga v1.0.6 documentation »
- 3. チュートリアル »

# 3.3. さまざまな種類をもったデータの保存

groongaでは、さまざまなデータを格納させることが出来ます。

## 3.3.1. データ型

groongaでは、数値（整数・小数）や文字列や時刻や経緯度などの情報を格納することができます。

ここでは、Int32型のカラムに整数を格納、Float型のカラムに浮動小数点の小数を、ShortText型のカラムに文字列を、Time型のカラムに時間を格納する例を示します。経緯度の格納については、のちのチュートリアルで触れます。

その他のデータ型の一覧は、 データ型 を参照してください。

実行例

    > table_create --name Type --flags TABLE_HASH_KEY --key_type ShortText
    [[0,1280378823.87922,0.063618],true]
    > column_create --table Type --name number --type Int32
    [[0,1280378824.14361,0.066276],true]
    > column_create --table Type --name float --type Float
    [[0,1280378824.41063,0.0673],true]
    > column_create --table Type --name string --type ShortText
    [[0,1280378824.67863,0.067213],true]
    > column_create --table Type --name time --type Time
    [[0,1280378824.94662,0.05711],true]
    > load --table Type
    > [{"_key":"sample","number":12345,"float":42.195,"string":"GROONGA","time":1234567890.12}]
    [[0,1280378825.20443,0.201835],1]
    > select --table Type
    [[0,1280378825.60691,0.000155],[[[1],[["_id","UInt32"],["_key","ShortText"],["time","Time"],["string","ShortText"],["number","Int32"],["float","Float"]],[1,"sample",1234567890.0,"GROONGA",12345,42.195]]]]

## 3.3.2. テーブル型

table_createで作成したテーブルを、カラムの型として使うことが出来ます。

また、output_columnsにおいて「.」を区切りとして、参照先のテーブルに存在するカラムを指定すると、指定したカラムの値を表示することができます。

ここでは、先のチュートリアルで作成したSiteテーブルに手を加え、どのサイトをリンクしているのかを保存してみましょう。

他のテーブルを参照するカラムにデータを入力する場合には、参照先のテーブルの_keyカラムの値を代入する必要があります。

実行例

    > column_create --table Site --name link --type Site
    [[0,1280378825.80958,0.094424],true]
    > load --table Site
    > [{"_key":"http://example.org/","link":"http://example.net/"}]
    [[0,1280378826.10477,0.200507],1]
    > select --table Site --output_columns _key,title,link._key,link.title --query title:@this
    [[0,1280378826.50595,0.000522],[[[1],[["_key","ShortText"],["title","ShortText"],["link._key","ShortText"],["link.title","ShortText"]],["http://example.org/","This is test record 1!","http://example.net/","test record 2."]]]]

このように、linkカラムに他のサイトへの参照を保存することができました。また、参照先の_keyとtitleカラムの内容を表示することができました。

## 3.3.3. ベクターカラム

column_createコマンドでカラムを作成するとき、–flagsオプションでCOLUMN_VECTORフラグを指定すると、複数の値を配列で格納できるカラムが作成されます。

テーブル型で配列を格納するカラムは、1対多の参照関係を表すのに有効です。

テーブル型のチュートリアルでは、Siteテーブルに手を加え、どのサイトをリンクしているのかを保存しました。しかし、通常は1つのサイトから多くのサイトにリンクが張られています。複数のリンク情報を格納するために、複数の参照関係を保存するカラムを作成してみましょう。

他のテーブルを参照するベクターカラムにデータを入力する場合には、参照先のテーブルの_keyカラムの値の「配列」を代入する必要があります。

実行例

    > column_create --table Site --name links --flags COLUMN_VECTOR --type Site
    [[0,1280378826.70921,0.087662],true]
    > load --table Site
    > [{"_key":"http://example.org/","links":["http://example.net/","http://example.org/","http://example.com/"]}]
    [[0,1280378826.99769,0.200643],1]
    > select --table Site --output_columns _key,title,links._key,links.title --query title:@this
    [[0,1280378827.39899,0.000499],[[[1],[["_key","ShortText"],["title","ShortText"],["links._key","ShortText"],["links.title","ShortText"]],["http://example.org/","This is test record 1!",["http://example.net/","http://example.org/","http://example.com/"],["test record 2.","This is test record 1!","test test record three."]]]]]

このように、複数の参照関係が保存できました。また、output_columnsによって、複数の参照先のカラム値も表示させることができました。

### Navigation

- index
- next |
- previous |
- groonga v1.0.6 documentation »
- 3. チュートリアル »