DATASETデータを格納するテーブルの作成と変更 - Teradata Database - Teradata Vantage NewSQL Engine - テーブル作成時のDATASET型の使用方法。

Teradata Vantage™ DATASETデータ型

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/pgs1512082344257.ditamap
dita:ditavalPath
ja-JP/pgs1512082344257.ditaval
dita:id
B035-1198
Product Category
Software
Teradata Vantage

CREATE TABLE文では、DATASETデータ型の列レベル属性をサポートしています。

列レベルのスキーマまたはインスタンス レベルのスキーマを使用して、DATASETテーブル列を定義できます。

列レベルのスキーマ

通常、テーブル列内のすべてのDATASET値は同じスキーマを継承しています。このような場合は、スキーマをテーブル列に関連付けることが適切です。CREATE storage_format SCHEMA文を使用してスキーマを指定し、CREATEまたはALTER TABLE文のWITH SCHEMA句を使用して、このスキーマにDATASET列を関連付けることができます。

列レベルのスキーマを使用すると、次のようなストレージとパフォーマンスの利点があります。
  • スキーマは、データ ディクショナリ内に一度格納されます。行に各DATASET値とともに格納されません。この結果、I/Oが減少するため、パフォーマンスはわずかに低下するものの、ストレージ領域を大幅に削減できます。
  • 多くの場合、スキーマは、クエリーの実行中にDATASET列に対して一度だけ解析する必要があります。スキーマの解析にはコストがかかるため、これにより大幅なパフォーマンス向上を実現できます。
次の例は、列レベルのスキーマを使用する、Avro格納形式のDATASET列を示しています。
CREATE AVRO SCHEMA avro_schema_1 as '{"type":"record",
    "name":"rec_0","fields":[
        {"name":"ProductID","type":"int"},
        {"name":"Price","type":"int"}
]}';
CREATE TABLE mytable(c1 INTEGER, c2 DATASET STORAGE FORMAT AVRO WITH SCHEMA avro_schema_1);
次の例は、列レベルのスキーマを使用する、CSV格納形式のDATASET列を示しています。
CREATE CSV SCHEMA myCSVSchema AS
'{
"field_delimiter" : "\t",
"record_delimiter" : ";"
}';
CREATE TABLE myDatasetTable02
(
id INTEGER,
csvFile DATASET(100000) INLINE LENGTH 5000 STORAGE FORMAT CSV CHARACTER SET LATIN WITH SCHEMA myCSVSchema
);

インスタンス レベルのスキーマ

CREATEまたはALTER TABLE文でWITH SCHEMA句を省略すると、DATASETの値はインスタンス レベルのスキーマを使用して定義されます。この場合、スキーマとデータの両方がデータベース行内に格納されます。これにより、DATASETテーブルの列に、異なるスキーマを持つデータ値を格納できます。この柔軟性と引き換えに、ストレージ使用量の増加と、スキーマ解析によるパフォーマンスの低下が生じます。

次に、CSV格納形式のDATASET値に対するインスタンス レベルのスキーマを示します。
CreateDATASET
(
'{"field_delimiter":"&", "record_delimiter":"#" }', 
'Item ID&Item Name&Item Color #55&bicycle&red#88&toy boat&pink#105&soap&#', 
CSV, 
UNICODE
)

DATASETの妥当性検査を無効にする

DATASETの値がDATASETテーブルの列に挿入されると、スキーマとデータ値が検証され、パフォーマンスが低下する可能性があります。DATASET列が列レベルのスキーマを使用して定義されている場合でも、挿入時にデータをスキーマと照らし合わせて検証する必要があります。この妥当性検査を無効にするには、DBSコントロール フィールドのDisableDATASETValidationをTRUEに設定します。