database - 在 NoSQL 数据库中创 build 置表

标签 database amazon-web-services nosql amazon-dynamodb

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

PK: COMPANY#1318723
SK: EMPLOYEE#31931823
但除了这些飞行数据,我还想在我的数据库中存储静态和只读数据,例如,存储国家和城市名称、与其他应用程序共享的常量值、在我的应用程序中不硬编码的静态字符串,以及许多其他事情。我来自 RDBS 背景,我们过去常常创 build 置表来存储这种数据。我的设置表过去看起来像这样;
TABLE_COUNTRY_NAMES
Id     Name          Code       DialCode
1      Germany       de         49
2      Turkey        tr         90
.      .             .          .
.      .             .          .
.      .             .          .
为了使用它,我曾经在我的应用程序代码中使用枚举,例如;
{
 1: "GERMANY",
 2: "TURKEY",
 .
 .
 .
}
它使我的代码更加清晰和易于理解。将这些数据存储在数据库中而不是在我的应用程序中对其进行硬编码也是一种更好的做法,这样我就可以在与我的主应用程序一起工作的其他应用程序中使用它,在应用程序之间安全地共享静态值,并应用更改无需在每个应用程序的源代码中编辑数据。现在,当我想通过单表设计将该方法引入 DynamoDB 端时,我想确定什么是最佳实践。
  • 我可以再次使用单个表设计创建另一个 DynamoDB 表,并将所有静态值存储到该表中。
  • 我可以将所有静态值与我的主应用程序存储在同一个表中,只需为主键和辅助键值设置正确的命名。但这会使我的单 table 更脏。
  • 我可以使用诸如 PostgreSQL 之类的 RDBS 将这些静态值存储并分发到单独的设置表中,例如 TABLE_SETUP_COUNTRY_NAMES、TABLE_SETUP_PROMPT_MESSAGES、TABLE_SETUP_CONSTANT_VALUES

  • 我想听听您关于在这种情况下什么是最佳实践以及您通常如何在您的应用程序中实现它的想法。
    谢谢。

    最佳答案

    由于您将在不同的应用程序中使用这些静态数据,因此在我看来,您可以创建另一个 DynamoDB 表,同样采用单表设计,并将所有静态值存储到该表中。
    您可以更轻松地维护这些静态数据并使用该 DynamoDB 单表访问这些数据。

    关于database - 在 NoSQL 数据库中创 build 置表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69082110/

    相关文章:

    mysql - 列名和撇号

    database - 双向关系(数据库设计缺陷)

    node.js - Mongodb子字段选择

    php - 如何使用规范化删除冗余?

    java - jdbc mysql 给我 NumberFormatException

    java - 如何正确设置 S3 和 IAM 以将文件上传到 S3 存储桶?

    hadoop - 大数据分析选择技术栈

    jpa - Hibernate OGM vs. 昆德拉

    amazon-web-services - 将电子邮件地址列表传递到 SNS 订阅端点

    ruby-on-rails - AWS S3 : The bucket you are attempting to access must be addressed using the specified endpoint