关系(SQL)数据库和 DynamoDB 在向表写入数据方面的差异 - Amazon DynamoDB

关系(SQL)数据库和 DynamoDB 在向表写入数据方面的差异

关系数据库表包含数据。行由组成。Amazon 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}' );

此表的主键包含 ArtistSongTitle。您必须为这些列指定值。

注意

该示例使用 Tags 列存储有关 Music 表中歌曲的半结构化数据。Tags 列定义为类型 TEXT,可在 MySQL 中存储最多 65535 个字符。

在 DynamoDB 中将数据写入表

在 Amazon DynamoDB 中,您可以使用 DynamoDB API 或 PartiQL(一种与 SQL 兼容的查询语言)将项目添加到表中。

DynamoDB API

使用 DynamoDB API,您可以使用 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 } } }

此表的主键包含 ArtistSongTitle。您必须为这些属性指定值。

以下是要了解的有关此 PutItem 示例的几个关键事项:

  • DynamoDB 使用 JSON 提供对文档的原生支持。这使得 DynamoDB 非常适合存储半结构化数据,例如标记。您也可以从 JSON 文档中检索和操作数据。

  • 除了主键(ArtistSongTitle)外,Music 表没有任何预定义属性。

  • 大多数 SQL 数据库是面向事务的。当您发出 INSERT 语句时,数据修改不是永久性的,直至您发出 COMMIT 语句。利用 Amazon DynamoDB,当 DynamoDB 回复 HTTP 200 状态代码(OK)时,PutItem 操作的效果是永久性的。

以下是其他几个 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 之外,DynamoDB 还支持使用 BatchWriteItem 操作同时写入多个项目。

PartiQL for DynamoDB

使用 PartiQL,您可以通过使用 PartiQL Insert 语句来使用 ExecuteStatement 操作向表添加项目。

INSERT into Music value { 'Artist': 'No One You Know', 'SongTitle': 'Call Me Today', 'AlbumTitle': 'Somewhat Famous', 'Year' : '2015', 'Genre' : 'Acme' }

此表的主键包含 ArtistSongTitle。您必须为这些属性指定值。

注意

有关使用 InsertExecuteStatement 的代码示例,请参阅 PartiQL for DynamoDB Insert 语句