首页 > 解决方案 > DynamoDB 索引协助和获取我的数据

问题描述

我在所有这一切的开头都说我仍在积极学习 DynamoDB,我认为对我的问题的回答将有助于我理解一些事情。

我有一个分析微服务,我将自定义(内部)分析事件推送到 DynamoDB 表中。我们的 Dynamo 行/项目中的列包括如下数据:

我们想从这个数据库中提取的主要问题之一是:

我很难理解我应该如何索引我的数据库来解决这种请求?我设置了一个针对拆分测试 ID 的“仅限键”索引,收集这些的查询相当有效,但它只提取用户 ID 和拆分测试 ID。理想情况下,我想要一个高效的查询,它还返回多个其他关联值……</p>

我如何实现这一目标?我需要做一些不同的事情吗?此外,如果根据我的解释,我对 Dynamo 的任何理解在某些方面听起来完全缺乏,请指出我正确的方向!

标签: amazon-web-servicesindexingnosqlamazon-dynamodb

解决方案


您将 DynamoDB 视为无模式数据库,显然它就是。但是,这并不意味着模式不重要。NoSQL 数据库中的模式通常比 SQL 数据库中的模式更重要,而且它们通常不那么简单。

确定您将如何存储数据的最重要的事情是您将如何访问它。您必须考虑访问数据的所有方式,并通过创建必要的数据列和必要的索引来确保它是可能的。在这种情况下,如果您想知道两个值以某种方式组合了多少次,您可以轻松地添加一个包含这些组合值的列(例如,splitId#splitValue)并在索引中使用它。

如果您想了解更多关于高级模式等的信息,我建议您观看Rick Houlihan 的著名 re:invent 演讲或阅读DynamoDB 书

最后一点,我想补充一点,切换到 SQL 服务器通常不是解决方案。选择 NoSQL 而不是 SQL 通常是基于非功能性需求。NoSQL 数据库用于需要非常低延迟地检索大型数据集中的数据的应用程序是有原因的,但与所有事情一样,权衡是游戏的名称。


推荐阅读