Amazon dynamodb 这是一个糟糕的DynamoDB数据库模式吗?

Amazon dynamodb 这是一个糟糕的DynamoDB数据库模式吗?,amazon-dynamodb,database-schema,dynamodb-queries,Amazon Dynamodb,Database Schema,Dynamodb Queries,看了几段关于DynamoDB及其最佳实践的视频后,我决定尝试一下;然而,我忍不住觉得我所做的可能是反模式的。据我所知,最好的做法是利用尽可能少的桌子,同时利用GSIs进行一些“繁重”的提升。不幸的是,我使用的用例实际上还没有严格定义访问模式,因为我们仍处于早期开发阶段 我们可能看到的一些早期访问模式是: 检索特定游戏的获胜次数:石头剪刀、布剪刀、拳击等[1快速查找] 检索用户拥有的硬币数量。[1快速查找] 检索某人购买的所有物品(不关心日期)。[不确定?] 可能检索与用户关联的所有属性(rps

看了几段关于DynamoDB及其最佳实践的视频后,我决定尝试一下;然而,我忍不住觉得我所做的可能是反模式的。据我所知,最好的做法是利用尽可能少的桌子,同时利用GSIs进行一些“繁重”的提升。不幸的是,我使用的用例实际上还没有严格定义访问模式,因为我们仍处于早期开发阶段

我们可能看到的一些早期访问模式是:

  • 检索特定游戏的获胜次数:石头剪刀、布剪刀、拳击等[1快速查找]
  • 检索用户拥有的硬币数量。[1快速查找]
  • 检索某人购买的所有物品(不关心日期)。[不确定?]
  • 可能检索与用户关联的所有属性(rps赢、方块赢、硬币等)。[我真的不知道。]
此外,我们可能需要完成2项操作。例如,如果用户赢了一个特定的游戏,他们可能会收到“硬币”。实际上,我们需要将硬币添加到用户的“硬币”属性中,并更新他们在游戏中获胜的次数

你认为我应该重新考虑这个策略吗?此外,我们可能会开始创建与各种游戏和每个游戏相关的“日志”


在不完全了解应用程序访问模式的情况下设计DynamoDB数据模型是一种反模式

花点时间定义您的实体(用户、游戏、订单等)、它们之间的关系以及您的应用程序密钥访问模式。当您刚刚开始工作时,这可能是一项艰巨的工作,但在使用DynamoDB时,做到这一点绝对至关重要。我们(或您,或任何人)如何评估您是否正确使用DDB

当我第一次使用DDB时,我以与您描述的类似的方式处理该过程。我习惯于使用SQL数据库,在那里我可以定义一些表,并随着我对应用程序访问模式的理解的发展,依靠SQL的魔力来支持我的访问模式。我很快意识到,如果我想使用DynamoDB,这是行不通的

相反,我从应用程序的前端开始。我在我的应用程序中勾勒出了不同的页面,并确定了应用程序中最重要的概念。诚然,我可能没有涵盖我的应用程序中的所有访问模式,但这个练习肯定确定了我需要有一个可用的应用程序的最低访问模式


如果你需要快速地原型化你的应用程序,以更好地理解ACCESS模式,考虑使用你和你的团队已经具备的技能。如果您已经了解了SQL数据库的数据建模,那么现在就开始吧。一旦您对访问模式有了更好的了解,并确定您的应用程序可以从使用NoSQL数据库中获益,您就可以再次访问DynamoDB。

说得好,我也同意。我认为不知道访问模式对于DynamoDB实现来说是很困难的,因为它完全是关于访问模式的。谢谢你的洞察力。