当前位置: 首页 > 知识库问答 >
问题:

使用单表架构时,DynamoDB流计费两次

慕河
2023-03-14

我目前正在做一个项目,我使用DynamoDB作为我的nosql数据库。在开始之前,我试图学习如何建模nosql数据库,因为它与我们已知的关系数据库确实不同。我学到了我必须坚持单表模式

我使用DynamoDB流来聚合一些数据,例如产品的客户数量(还有一些更复杂的情况)。因为我只有一个表,所以我的lambda函数写在流来自的同一个表中
将新客户添加到表A-


共有1个答案

杜鸿彩
2023-03-14

总的来说,我建议不要使用这样的循环。在分布式系统中,依赖关系的循环可能会导致各种不希望的效果。在基于DDB Lambda的架构中,其中一些影响会被消除,但我仍然会尽量避免它。最重要的是,在这样的架构中,Lambda调用还有无限循环的风险。这可能会导致巨大的财务代价。即使你编写了最好的代码(甚至针对此类循环实施安全检查),我认为最好的做法是将架构设计为不可能出现循环。

因此,我肯定会将DDB表一分为二。

拆分为两个表的负面影响是:应用程序现在可能需要检索两个项目(从两个表中)以获得相同数量的信息,而不是只检索一个项目。

 类似资料:
  • 我一直在使用Dynamodb作为数据库构建一个无服务器应用程序,并且一直遵循单表设计模式(例如https://www.alexdebrie.com/posts/dynamodb-single-table/)。我开始遇到的问题是使用Dynamodb流——我希望能够使用Dynamodb流来保持Elasticsearch实例的最新状态。 在单个dynamodb表容纳大约10种不同类型的项目(将继续扩展)

  • 我正在尝试从模式注册表中检索给定kafka主题的模式主题版本。我可以使用成功发布新版本,但我不确定如何检索版本。我在下面尝试使用curl请求,但结果立即命中-1(空)。 我如何修复这个GET请求,或者更好的是,我应该如何使用模式注册中心来检索一个模式?

  • 我正在使用Avro模式向Kafka主题写入数据。起初,一切正常。在avro文件中添加多一个新字段(scan_app_id)后。我正面临这个错误。 Avro文件:{ “type”:“record”,“name”:“initiate_scan”,“namespace”:“avro”,“doc”:“initiate_scan的avro架构注册表”,“fields”:[{“name”:“app_id”,“

  • 我正在创建一个加密货币机器人,需要将其交易历史存储在某个地方。由于AWS DynamoDB在一定程度上是免费使用的,我认为它可以满足我的需求,但我在表结构方面有一些问题。 每笔交易都具有以下属性: 加密货币符号 每天,我计划对按排序的最后200个项目以及大约50个新项目插入进行1次选择查询。 据我所知,一个表需要有一个唯一的主键,因此我使用作为分区键,使用作为排序键,因为两者结合起来提供唯一性,但

  • 我们在当前的基础架构中安装了普通的apache Kafka,并开始记录一些我们想要使用Kafka Connect处理的数据。目前,我们使用Avro作为消息格式,但我们的基础架构中没有模式注册表。将来,我们计划用Confluent替换当前堆栈,并使用Schema Registry和Connect,但在一段时间内,我们只需要为此部署Connect。 是否可以以某种方式配置连接接收器,以便它们使用显式a

  • 对于跨网络汇流平台,我们有一个kafka集群在Premise上,另一个在AWS上,其中数据使用mirror Maker从on-prem复制到AWS。这两个集群都独立于它们自己的模式注册表、rest代理和Connect,这两个集群都有不同的生产者和消费者集,并且选择的主题在集群之间被镜像。 部署schema-registry的最佳实践应该是什么?我们是否应该在on-prem和AWS上有一个主服务器(