将数据写入表
关系数据库表包含数据行。行由列组成。
DynamoDB 表包含项目。项目由属性组成。
本节介绍如何将行 (或项目) 写入表。
SQL
关系数据库中的表是一个由行和列组成的二维数据结构。一些数据库管理系统还支持半结构化数据 (通常带本机 JSON 或 XML 数据类型)。但实施详情因供应商而异。
在 SQL 中,可使用 INSERT
语句向表添加行:
INSERT INTO Music (Artist, SongTitle, AlbumTitle, Year, Price, Genre, Tags) VALUES( 'No One You Know', 'Call Me Today', 'Somewhat Famous', 2015, 2.14, 'Country', '{"Composers": ["Smith", "Jones","Davis"],"LengthInSeconds": 214}' );
此表的主键包含 Artist 和 SongTitle。您必须为这些列指定值。
注意
在此示例中,我们使用 Tags 列存储有关 Music 表中的歌曲的半结构化数据。我们已将 Tags 列定义为类型 TEXT,可在 MySQL 中存储最多 65535 个字符。
DynamoDB
在 Amazon DynamoDB 中,您使用 PutItem
操作向表添加项目:
{ TableName: "Music", Item: { "Artist":"No One You Know", "SongTitle":"Call Me Today", "AlbumTitle":"Somewhat Famous", "Year": 2015, "Price": 2.14, "Genre": "Country", "Tags": { "Composers": [ "Smith", "Jones", "Davis" ], "LengthInSeconds": 214 } } }
此表的主键包含 Artist 和 SongTitle。您必须为这些属性指定值。
以下是要了解的有关此 PutItem
示例的几个关键事项:
-
DynamoDB 使用 JSON 提供对文档的本机支持。这使得 DynamoDB 非常适合存储半结构化数据,例如 Tags。您也可以从 JSON 文档中检索和操作数据。
-
除了主键 (Artist 和 SongTitle),Music 表没有预定义的属性。
-
大多数 SQL 数据库是面向事务的。当您发出
INSERT
语句时,数据修改不是永久性的,直至您发出COMMIT
语句。利用 Amazon DynamoDB,当 DynamoDB 通过 HTTP 200 状态代码 (OK
) 进行回复时,PutItem
操作的效果是永久性的。
注意
有关使用 PutItem
的代码示例,请参阅 DynamoDB 入门。
以下是其他几个 PutItem
示例。
{ TableName: "Music", Item: { "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle":"Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 } }
{ TableName: "Music", Item: { "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle":"Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 } }
{ TableName: "Music", Item: { "Artist": "The Acme Band", "SongTitle": "Still In Love", "AlbumTitle":"The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying":[ "KHCR", "KBQX", "WTNR", "WJJH" ], "TourDates": { "Seattle": "20150625", "Cleveland": "20150630" }, "Rotation": "Heavy" } } }
{ TableName: "Music", Item: { "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle":"The Buck Starts Here", "Price": 0.99, "Genre": "Rock" } }
注意
除了 PutItem
之外,Amazon DynamoDB 还支持同时写入多个项目的 BatchWriteItem
操作。