DynamoDB:用于文本搜索的表模式

时间:2013-10-02 07:02:05

标签: mysql amazon-web-services amazon-dynamodb

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

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

主键是使用userid和datetimemillis构建的

我需要做这样的查询:

  1. 检索特定用户标识的每一行
  2. 检索特定用户ID和typeid的每一行
  3. 检索特定用户ID和typeid的每一行,string1-4包含特定的字符串
  4. 我能够执行1.和2.使用userId作为hashkey进行查询,将typeId作为本地二级索引进行查询(需要使用范围键来删除具有特定用户标识的所有记录)。有没有选项可以在不使用扫描的情况下进行第三次查询?我的可能性是什么?使用CloudSearch?还是其他亚马逊服务?如果我需要更改我的架构,请告诉我。价格无所谓,它只能工作,即使我必须使用五十个额外的服务和dynamodb表。

1 个答案:

答案 0 :(得分:0)

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

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