AWS DynamoBD NoSQL:具有复合键的多对多

时间:2016-04-24 16:35:06

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

我试图从NoSQL数据库开始,因此开始了一个简单的字典项目来训练。

我正在研究Amazon Web Services DynamoDB

我的词典需要用他们的语言和翻译来存储单词。 所以在SQL中我会有两个表,一个用于单词,一个用于翻译映射。

1。多对多

根据亚马逊的视频(here),为了建立N到M的关系,我们只需要创建一个包含复合主键的表:

  • 分区键:单词
  • 排序键:其翻译

表和PK交换的二级索引:

  • 分区键:表格的排序键(翻译)
  • 排序键:表格的分区键(单词)

这很有道理。

2。复合主键

我的单词有一种语言,需要参加主键,否则当用户输入两种语言的单词时,我会发生冲突。所以我的word table主键看起来像这样:

  • 分区键:语言
  • 排序键:单词

3。而......问题

现在,我想将N-to-M映射策略(1)应用于我的表(2);这是我的问题,我的表有一个复合键。所以我需要能够"合并"我的对话/单词,我对此没有好感:

  1. 使用语言和单词的串联是一种解决方案,但我不认为它对分区键有效(根据视频排序键是)
  2. 放弃转换表并将所有转换放在数组中作为单词表的第三个字段。这意味着我复制了所有内容,并且我的查询只能在一个方向上完成。
  3. 每种语言组合创建一个表格,这听起来也不是很漂亮。
  4. 所以现在我觉得我显然错过了NoSQL的一些东西,或者说我的方案在某处错了。只需要一个新的眼睛来发现我的错误:))

1 个答案:

答案 0 :(得分:3)

我会设计我的密钥以连接语言和单词,然后按照您的方法在翻译的单词上创建全局二级索引。例如: “en:vie”代表英文单词“vie”,“fr:vie”代表法语单词“vie”。

为什么你说这不是一个好方法?