QLDB 是否与发件箱模式兼容?

如何解决QLDB 是否与发件箱模式兼容?

我有一个最适合 QLDB 的用例。我还认为发件箱模式对数据可靠性很有意义。但是,我担心发件箱条目会污染日志。

我的理解是,虽然我可以将“发件箱”表与主数据表分开,但日记账在整个分类账中共享。似乎发件箱模式传统上使用关系数据库,其中不可变日志的概念不是问题。

随着数据集的增长,这会成为问题吗?更重要的是,是否有更有意义的替代模式?

解决方法

由于日志是提交到分类帐的每笔交易的不可变历史记录,如果您将发件箱模式与 QLDB 一起使用,您的分类帐将包含通过您的发件箱表的消息的永久历史记录。如果您需要排队等待发送的消息的不可篡改的审计历史记录以及它们被发送(从表中“删除”)的记录,这很好。但是,如果您不需要它,那么您将在分类帐的整个生命周期内为这些消息支付存储费用,而不会从中获得太多价值。

典型的事件驱动方法是使用 QLDB 的流功能,该功能将 Kinesis Data Stream 与您的分类账相关联。每次提交事务时,QLDB 都会将事务发布到 Kinesis Data Stream。这使您能够从分类帐中发生的交易中驱动事件。通过这种方法,您可以将业务数据提交到分类帐中,而不必担心发件箱表。该文件应包含您在消息传递中所需的信息。提交后,QLDB 将文档从事务推送到 Kinesis,您在其中使用 Lambda 函数处理它,该函数将消息向前发送。

需要注意的一点是,QLDB 提供了至少一次将数据传送到 Kinesis 的保证。这意味着您需要识别和处理(或仅仅容忍)潜在的重复消息。不过,无论如何,您应该始终考虑分布式系统中的幂等性。

如果您不想为 Kinesis 付费并且不需要实时方法,您可以通过计划的 QLDB 导出到 S3 和对导出文件进行一些批处理来做一些事情,但我会开始与流媒体。如果您想了解更多有关出口方法的信息,请私信我。

另见:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?