关系(SQL)数据库和 DynamoDB 在创建表方面的差异 - Amazon DynamoDB

关系(SQL)数据库和 DynamoDB 在创建表方面的差异

表是关系数据库和 Amazon DynamoDB 中的基本数据结构。关系数据库管理系统 (RDBMS) 要求您在创建表时定义表的架构。相比之下,DynamoDB 表没有架构—与主键不同,您在创建表时无需定义任何属性或数据类型。

以下章节将使用 SQL 创建表的方式与使用 DynamoDB 创建表的方式进行了比较。

使用 SQL 创建表

通过 SQL,您将使用 CREATE TABLE 语句创建表,如以下示例所示。

CREATE TABLE Music ( Artist VARCHAR(20) NOT NULL, SongTitle VARCHAR(30) NOT NULL, AlbumTitle VARCHAR(25), Year INT, Price FLOAT, Genre VARCHAR(10), Tags TEXT, PRIMARY KEY(Artist, SongTitle) );

此表的主键包含 ArtistSongTitle

您必须定义表的所有列和数据类型以及表的主键。(如有必要,您稍后可以使用 ALTER TABLE 语句更改这些定义。)

许多 SQL 实现可让您将表的存储规范定义为 CREATE TABLE 语句的一部分。除非另外指明,否则使用默认存储设置创建表。在生产环境中,数据库管理员可以帮助确定最佳存储参数。

使用 DynamoDB 创建表

使用 CreateTable 操作可创建预调配的模式表,同时指定参数,如下所示:

{ TableName : "Music", KeySchema: [ { AttributeName: "Artist", KeyType: "HASH" //Partition key }, { AttributeName: "SongTitle", KeyType: "RANGE" //Sort key } ], AttributeDefinitions: [ { AttributeName: "Artist", AttributeType: "S" }, { AttributeName: "SongTitle", AttributeType: "S" } ], ProvisionedThroughput: { // Only specified if using provisioned mode ReadCapacityUnits: 1, WriteCapacityUnits: 1 } }

此表的主键包括 Artist(分区键)和 SongTitle(排序键)。

您必须向 CreateTable 提供以下参数:

  • TableName – 表名称。

  • KeySchema – 用于主键的属性。有关更多信息,请参阅表、项目和属性主键

  • AttributeDefinitions – 键架构属性的数据类型。

  • ProvisionedThroughput (for provisioned tables) – 每秒需对此表执行的读取和写入次数。DynamoDB 将保留足量的存储和系统资源,以便始终满足您的吞吐量需求。如有必要,您稍后可使用 UpdateTable 操作后更改这些设置。由于存储分配完全由 DynamoDB 管理,因此您无需指定表的存储要求。