标签: dynamodb

何时在 DynamoDB 中使用多个表?

DyanmoDB最佳实践明确指出:

您应该在 DynamoDB 应用程序中维护尽可能少的表。大多数设计良好的应用程序只需要一张表。

我觉得很有趣,我见过的处理 DyanmoDB 的几乎每个教程都有多表设计。

但这在实践中意味着什么?

让我们考虑一个具有三个主要实体的简单应用程序:用户、项目和文档。一个用户拥有多个项目,一个项目可以有多个文档。我们通常必须查询用户的项目和项目的文档。读取数量大大超过写入数量。

一个天真的教程的表格设计将使用三个表格:

Users
Hash key
user-id

Projects
Hash key       Global Index
project-id     user-id

Documents
Hash key       Global Index
document-id    project-id
Run Code Online (Sandbox Code Playgroud)

我们可以很容易崩溃Project,并Document为一个Documents表:

Documents
Hash key    Sort key        Global Index
project-id  document-id     user-id
Run Code Online (Sandbox Code Playgroud)

但为什么要停在那里?为什么不用一张桌子来统治他们呢?既然User是一切的根源...

Users
Hash key    Sort key
user-id     aspect
---------   ---------
foo         user                   email: foo@bar.com ...
foo         project:1              title: "The Foo Project"
foo         project:1:document:2   document-id: 2     ...
Run Code Online (Sandbox Code Playgroud)

然后我们将有一个全局索引,例如,email用于用户记录查找的document-id字段,以及另一个用于直接文档查找的字段。 …

database-design dynamodb index-design

11
推荐指数
1
解决办法
7214
查看次数

DynamoDB - 多个范围键

是否可以将多个字段作为范围键?

假设我有一个表,其中每一行都由 <A,B,C>

 -------------------------------
 A   |   B   |  C  |  D   |  E  |
 -------------------------------
Run Code Online (Sandbox Code Playgroud)

Ahash键在哪里

我想BC作为主range键。

如何在 DynamoDB 中将超过 2 个字段作为主键?

primary-key dynamodb unique-constraint

10
推荐指数
2
解决办法
3万
查看次数

将 CSV 或 JSON 文件导入 DynamoDB

我有 1000 个 CSV 文件。每个 CSV 文件的大小在 1 到 500 MB 之间,并且采用相同的格式(即相同的列顺序)。我有一个列标题的头文件,它与我的 DynamoDB 表的列名相匹配。我需要将这些文件导入到 DynamoDB 表中。这样做的最佳方式/工具是什么?

我可以将这些 CSV 文件连接成一个单一的巨型文件(尽管我宁愿避免这样做),或者在需要时将它们转换为 JSON。我知道BatchWriteItem的存在,所以我想一个好的解决方案将涉及批量写入。


例子:

  • DynamoDB 表有两列:first_name、last_name
  • 头文件只包含: first_name,last_name
  • 一个 CSV 文件看起来像

John,Doe
Bob,Smith
Alice,Lee
Foo,Bar
Run Code Online (Sandbox Code Playgroud)

import dynamodb csv

7
推荐指数
1
解决办法
3万
查看次数

将 AWS DynamoDB 地理空间索引与 Python 结合使用

亚马逊的 AWS DynamoDB 具有地理空间索引功能,可促进地理查询:

查询支持:框查询返回落在一对地理点内的项目,这些地理点定义了投影到球体上的矩形。Radius 查询返回距离地理点给定距离内的项目。

问题在于boto,用于访问 AWS 服务的 Python 库,缺少对 geo 对象的任何引用。另一方面,Java 等价物具有这样的支持

有没有办法使用 Python 在 AWS 上使用 DynamoDB 的地理功能?

spatial aws python dynamodb

3
推荐指数
1
解决办法
3702
查看次数