0

我将一些数据从 MySQL 移动到 DynamoDB。现在我在模式设计上遇到了一个问题,以满足我的所有需求。我在 MySQL 中的表有这样的模式:

userid - int
datetimemillis - int
typeid - int
string1 - string
string2 - string
string3 - string
string4 - string

主键是用 userid 和 datetimemillis 构建的

我需要做这样的查询:

  1. 检索特定用户 ID 的每一行
  2. 检索特定用户标识和类型标识的每一行
  3. 检索 string1-4 包含特定字符串的特定用户 ID 和类型 ID 的每一行

我能够使用 userId 作为 hashkey,typeId 作为本地二级索引进行 1. 和 2. 查询(删除具有特定 userid 的所有记录需要范围键)。有没有什么选项可以在不使用扫描的情况下进行第三次查询?我的可能性是什么?使用云搜索?还是其他亚马逊服务?如果我需要更改我的架构,请告诉我。价格无关紧要,它必须有效,即使我必须使用 50 个额外的服务和 dynamodb 表。

4

1 回答 1

0

如果您尝试使用 String1-4 进行精确字符串匹配,则可以使用更多本地二级索引。DynamoDB 最多支持 5 个本地二级索引。

但是(我认为这就是您想要的)如果您尝试在其中一个字符串中搜索特定包含,我会使用 solr 之类的东西来索引所有这些字符串及其在 solr 中的相应 userId 并交叉引用 userId 来自使用 dynamodb 用户表中的 HashKey 进行 solr 搜索的结果集。

于 2013-10-19T22:16:56.630 回答