はじめに
Vertica9.0より、Universally Unique Identifier (以下、UUID)データ型をサポートしています。Vertica9.0からは、UUIDデータ型がサポートされ、16バイトで管理することができるようになりました。
これまでと比べ、ストレージ容量の削減はもちろんのこと、パフォーマンス向上にもつながります。
またUUID_GENERATE()関数というUUIDを自動生成する関数も使用できるようになりました。
これによりUUIDの生成をVerticaで簡単に行えるようになっています。
本記事ではUUIDデータ型を使用したテーブルの作成例とUUID_GENERATE()関数の使用例をご案内いたします。
UUIDデータ型を使用したテーブル作成
UUIDデータ型を使用したテーブルを作成します。通常のテーブル作成と同様CREATE TABLE文にて、列名の後に「UUID」と指定することでUUIDデータ型の列を定義することができます。
1 2 3 4 5 6 7 |
dbadmin=> CREATE TABLE public.Customers dbadmin-> ( dbadmin(> cust_id uuid, dbadmin(> lname varchar(36), dbadmin(> fname varchar(24) dbadmin(> ); CREATE TABLE |
UUIDを含むデータをロードします。
1 2 3 4 5 6 7 |
dbadmin=> COPY Customers FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> {cede66b7-3d29-4da6-b700-871fc0ac57be}|Kearney|Thomas >> 34462732ed5649838f3be735b0c32d50|Pham|Duc >> 9fb0-1de0-1d63-4d09-9415-90e0-b4e9-3b9a|Steinberg|Jeremy >> \. |
データがロードされていることを確認します。
1 2 3 4 5 6 7 |
dbadmin=> SELECT cust_id, fname, lname FROM Customers; cust_id | fname | lname --------------------------------------+--------+----------- cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney 34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham 9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg (3 rows) |
UUID_GENERATE()関数によるUUIDの生成
UUID_GENERATE()関数を使用することで、Vertica内でUUIDを生成することができます。UUID_GENERATE()関数にて生成したUUIDを含むデータをロードします。
1 2 3 4 5 6 7 8 |
dbadmin=> INSERT INTO Customers SELECT UUID_GENERATE(),'Rostova','Natasha'; OUTPUT -------- 1 (1 row) dbadmin=> COMMIT; COMMIT |
ロードしたデータを確認します。
1 2 3 4 5 6 7 8 |
dbadmin=> SELECT cust_id, fname, lname FROM Customers; cust_id | fname | lname --------------------------------------+---------+----------- cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney 34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham 9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg 59dcc700-3a1e-406b-b748-dcdff51fa1a1 | Natasha | Rostova ★UUIDが自動生成されている (4 rows) |
制限事項
・UUIDデータ型はCHAR型およびVARCHAR型でサポートされている関数をサポートしています。(例.MIN、MAX、CONCAT等)
・UUIDデータ型はSUMやAVGの算術演算子はサポートしていません。
参考情報
UUID Data Typehttps://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/SQLReferenceManual/DataTypes/UUID.htm
UUID_GENERATE
https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/UUID/UUID_GENERATE.htm