在 NoSQL 数据库中创建设置表

Oza*_*ver 5 database amazon-web-services nosql amazon-dynamodb

我有一个应用程序使用 DynamoDB 表中的所有数据。我使用单表架构,因此我的应用程序的所有部分都有一个且唯一的表。我只是根据我的访问模式存储数据;

PK: COMPANY#1318723
SK: EMPLOYEE#31931823
Run Code Online (Sandbox Code Playgroud)

但除了这些飞行数据之外,我还想在数据库中存储静态和只读数据,例如,存储国家和城市名称、与其他应用程序共享的常量值、不在我的应用程序中硬编码的静态字符串,以及许多其他事情。我有 RDBS 背景,我们过去常常创建设置表来存储此类数据。我的设置表曾经是这样的;

TABLE_COUNTRY_NAMES

Id     Name          Code       DialCode
1      Germany       de         49
2      Turkey        tr         90
.      .             .          .
.      .             .          .
.      .             .          .
Run Code Online (Sandbox Code Playgroud)

为了使用它,我曾经在我的应用程序代码中使用枚举,例如;

{
 1: "GERMANY",
 2: "TURKEY",
 .
 .
 .
}
Run Code Online (Sandbox Code Playgroud)

它使我的代码更加清晰且易于理解。将这些数据存储在数据库中而不是将其硬编码在我的应用程序中也是一种更好的做法,以便我可以在与我的主应用程序一起工作的其他应用程序中使用它,安全地跨应用程序共享静态值并应用更改无需去编辑每个应用程序源代码中的数据。现在,当我想通过单表设计将该方法引入 DynamoDB 端时,我想确定什么是最佳实践。

  1. 我可以再次使用单个表设计创建另一个 DynamoDB 表,并将所有静态值存储到该表中。
  2. 我可以将所有静态值与主应用程序存储在同一个表中,只需为主键值和辅助键值设置正确的命名即可。但这会让我的单人桌子变得更脏。
  3. 我可以使用 RDBS(例如 PostgreSQL)将这些静态值存储并分发到单独的设置表中,例如TABLE_SETUP_COUNTRY_NAMES、TABLE_SETUP_PROMPT_MESSAGES、TABLE_SETUP_CONSTANT_VALUES等。

我想听听您对这种情况下的最佳实践的想法,以及您通常如何在应用程序中实现它。

谢谢。

Sab*_*bil 1

由于您将在不同的应用程序中使用该静态数据,因此在我看来,您可以创建另一个 DynamoDB 表(同样采用单表设计),并将所有静态值存储到该表中。

您可以更轻松地维护这些静态数据并使用 DynamoDB 单表访问这些数据。