首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >nosql/dynamodb散列和范围用例

nosql/dynamodb散列和范围用例
EN

Stack Overflow用户
提问于 2014-02-26 16:32:11
回答 1查看 3.4K关注 0票数 4

这是我第一次使用NoSQL数据库,所以我真的很困惑。我真的很感激我能得到的帮助。

我想将包含公告的数据存储在我的表中。实际上,每个公告都有一个ID、一个日期和一个文本。

例如,公告的ID为1,日期为2014/02/26,文本为“这是一个示例公告”。较新的公告的ID值总是大于旧的通知,因为它们稍后会添加到表中。

我想在这个表上运行两种类型的查询:

  1. 我想检索按日期排序的公告文本。
  2. 我想检索x最新公告的文本和日期(例如,最近的3份公告)。

因此,我使用以下属性设置了表: ID (number)作为主键,date (string)作为范围

这是否适合我的用例?如果是这样的话,应该运行什么样的查询/读取/请求/扫描/其他(我对这里的术语也很困惑)来完成我想要进行的两种类型的查询?

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 16:59:02

你走在正确的轨道上。

至于排序,DynamoDB将根据范围键进行排序,因此date可以工作,但我建议将其存储为一个数字,可能是自Unix时代以来的毫秒,而不是字符串。这将使根据创建日期按升序或降序获取公告变得非常简单。

有关本地索引和全局辅助索引以及它们提供了哪些功能的概述,请参见此答案:Optional secondary indexes in DynamoDB

至于检索所有项目,您需要执行扫描。扫描不像查询那么高效,但是由于所有的Dynamo都在SSD上,所以它们仍然相对较快。如果有一种方法将通知与用户ID相关联,则可以获得比扫描更好的性能。

注意,在创建表后,不能修改表架构(哈希键、范围键和索引)。有一些方法可以手动迁移表或导入/导出表,但重点是您应该预先仔细考虑当前和未来的查询需求,并设计支持它们的表。但是,添加或停止存储非键或非项属性非常容易,这提供了很好的灵活性。

最后,尽量避免将Dynamo视为关系关系。使用Dynamo,在很多情况下,您最好去规范化或复制一些数据,以换取快速查询性能。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22056638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文