带排序的DynamoDb



我对Dynamo Db概念很陌生,所以如果我的问题有点愚蠢,请原谅我我有一个像这样的文件

Appel,www.appel.com,www.cnn.com,www.bla.com....
Blabla,www.test.com,www.fox.com,www.bla.com.....
test,www.test.com,www.fox.com,www.bla.com...
www.appel.com,300
www.cnn.com,400

等等。总之,每一行都是1:一个单词和所有的URL都在里面2:一个URL和数量的出现

需要做的是对给定单词的dynamo进行查询,输出需要是按外观排序的URL列表。

,例如到这个文件对于单词appel,输出为:

www.cnn.com,www.appel.com,www.bla.com....

我试图创建2个表'逆索引'和'排名'第一个为单词和URL的列表和第二个为URL和他的排名,但我找不到一种方法来使查询不排序我自己

那么首先:Dynamo结构(两个表)是正确的吗?是否有一种方法来查询数据库和排序的结果?

为了依赖DynamoDB对数据进行排序,您必须使用Range Key。也就是说,为了满足您的要求,number of appearance必须是Range Key的一部分。

Hash Key可以是单词(例如Appel或Blabla),最后您可以将url存储为每个记录中的字符串数组。

来自文档:

查询结果总是按范围键排序。如果数据类型为如果range键为Number,则结果按数字顺序返回;否则,将按ASCII字符码的顺序返回结果值。默认情况下,排序顺序是升序的。颠倒顺序使用ScanIndexForward参数设置为false。来源:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

您可以在以下链接中找到有关DynamoDB上可用密钥类型的更多信息:

何时使用什么主键类型

dynamodb表中的哈希范围有什么用

Q:如果我使用的外观数量作为范围键,我怎么能存储字符串数组?每个值都有一个不同的数字,所以如果每个记录有一个主键(词)范围键(数字)和值(字符串数组)在这种情况下的数字是什么?

在这种情况下,我建议您使用分隔符将Range Key与两个字段(数字和url)组成。"#")。最终的表结构应该是:

Hash Key : <Word>
Range Key : <AppearanceNumber>#<Url>

您的Range Key将是String类型,它仍然可以对您的数据进行排序,因为<AppearanceNumber>是前缀。

作为一个例子,通过<Word> 'Appel'查询,您将得到以下结果:

Appel,900#www.appel.com
Appel,800#www.cnn.com
Appel,700#www.bla.com

请注意,如果您希望尽量减少应用程序端的处理,您仍然可以将urlappearanceNumber作为表中的单独字段。

相关内容

  • 没有找到相关文章

最新更新