.. -*- rst -*- .. highlightlang:: none .. groonga-include : introduction.txt さまざまな種類をもったデータの保存 ================================== groongaでは、さまざまなデータを格納させることが出来ます。 データ型 -------- groongaでは、数値(整数・小数)や文字列や時刻や経緯度などの情報を格納することができます。 ここでは、Int32型のカラムに整数を格納、Float型のカラムに浮動小数点の小数を、ShortText型のカラムに文字列を、Time型のカラムに時間を格納する例を示します。経緯度の格納については、のちのチュートリアルで触れます。 その他のデータ型の一覧は、 :doc:`/type` を参照してください。 .. groonga-command .. table_remove Type .. include:: ../example/tutorial/introduction-1.log .. table_create --name Type --flags TABLE_HASH_KEY --key_type ShortText .. column_create --table Type --name number --type Int32 .. column_create --table Type --name float --type Float .. column_create --table Type --name string --type ShortText .. column_create --table Type --name time --type Time .. load --table Type .. [{"_key":"sample","number":12345,"float":42.195,"string":"GROONGA","time":1234567890.12}] .. select --table Type テーブル型 ---------- table_createで作成したテーブルを、カラムの型として使うことが出来ます。 また、output_columnsにおいて「.」を区切りとして、参照先のテーブルに存在するカラムを指定すると、指定したカラムの値を表示することができます。 ここでは、先のチュートリアルで作成したSiteテーブルに手を加え、どのサイトをリンクしているのかを保存してみましょう。 他のテーブルを参照するカラムにデータを入力する場合には、参照先のテーブルの_keyカラムの値を代入する必要があります。 .. groonga-command .. include:: ../example/tutorial/introduction-2.log .. column_create --table Site --name link --type Site .. load --table Site .. [{"_key":"http://example.org/","link":"http://example.net/"}] .. select --table Site --output_columns _key,title,link._key,link.title --query title:@this このように、linkカラムに他のサイトへの参照を保存することができました。また、参照先の_keyとtitleカラムの内容を表示することができました。 ベクターカラム -------------- column_createコマンドでカラムを作成するとき、--flagsオプションでCOLUMN_VECTORフラグを指定すると、複数の値を配列で格納できるカラムが作成されます。 テーブル型で配列を格納するカラムは、1対多の参照関係を表すのに有効です。 テーブル型のチュートリアルでは、Siteテーブルに手を加え、どのサイトをリンクしているのかを保存しました。しかし、通常は1つのサイトから多くのサイトにリンクが張られています。複数のリンク情報を格納するために、複数の参照関係を保存するカラムを作成してみましょう。 他のテーブルを参照するベクターカラムにデータを入力する場合には、参照先のテーブルの_keyカラムの値の「配列」を代入する必要があります。 .. FIXME: _idの配列ではダメなのかどうか。検証する。 .. groonga-command .. include:: ../example/tutorial/introduction-3.log .. column_create --table Site --name links --flags COLUMN_VECTOR --type Site .. load --table Site .. [{"_key":"http://example.org/","links":["http://example.net/","http://example.org/","http://example.com/"]}] .. select --table Site --output_columns _key,title,links._key,links.title --query title:@this このように、複数の参照関係が保存できました。また、output_columnsによって、複数の参照先のカラム値も表示させることができました。