QLDB 是否与发件箱模式兼容?
Is QLDB compatible with the Outbox Pattern?
我有一个 QLDB 最有意义的用例。我还认为发件箱模式对于数据可靠性很有意义。但是,我担心发件箱条目会污染期刊。
我的理解是,虽然我可以将我的 'outbox' table 与我的主要数据 table 分开,但该日志在整个分类帐中共享。发件箱模式似乎传统上使用关系数据库,其中 immutable 期刊的概念并不重要。
随着数据集的增长,这会成为一个问题吗?更重要的是,是否有更有意义的替代模式?
由于日志是提交到账本的每笔交易的 immutable 历史,如果您将发件箱模式与 QLDB 一起使用,您的账本将包含通过您的发件箱传递的消息的永久历史记录 table。如果您需要排队等待发送的消息的不可伪造的审核历史记录以及它们正在发送的记录(从 table 中“删除”),这非常有用。但是,如果您不需要它,那么您将在分类帐的整个生命周期内为这些消息支付存储费用,而不会从中获得太多价值。
典型的事件驱动方法是使用 QLDB 的流功能,它将 Kinesis 数据流关联到您的账本。每次提交事务时,QLDB 都会将事务发布到 Kinesis Data Stream。这使您能够从分类帐中发生的交易中驱动事件。使用这种方法,您可以将业务数据提交到分类帐,而不必担心发件箱 table。该文档应包含您在消息传递中需要的信息。提交后,QLDB 将文档从交易推送到 Kinesis,您可以在 Kinesis 中使用 Lambda 函数处理它并向前发送消息。
需要注意的一件事是,QLDB 提供至少一次将数据传送到 Kinesis 的保证。这意味着您需要识别和处理(或容忍)潜在的重复消息。不过,您应该始终考虑分布式系统中的幂等性。
如果您不想为 Kinesis 付费并且不需要实时方法,您可以将计划的 QLDB 导出到 S3 以及对导出文件进行一些批处理,但我' d 从流媒体开始。如果您想了解更多有关导出方法的信息,请私信我。
另请参阅:
我有一个 QLDB 最有意义的用例。我还认为发件箱模式对于数据可靠性很有意义。但是,我担心发件箱条目会污染期刊。
我的理解是,虽然我可以将我的 'outbox' table 与我的主要数据 table 分开,但该日志在整个分类帐中共享。发件箱模式似乎传统上使用关系数据库,其中 immutable 期刊的概念并不重要。
随着数据集的增长,这会成为一个问题吗?更重要的是,是否有更有意义的替代模式?
由于日志是提交到账本的每笔交易的 immutable 历史,如果您将发件箱模式与 QLDB 一起使用,您的账本将包含通过您的发件箱传递的消息的永久历史记录 table。如果您需要排队等待发送的消息的不可伪造的审核历史记录以及它们正在发送的记录(从 table 中“删除”),这非常有用。但是,如果您不需要它,那么您将在分类帐的整个生命周期内为这些消息支付存储费用,而不会从中获得太多价值。
典型的事件驱动方法是使用 QLDB 的流功能,它将 Kinesis 数据流关联到您的账本。每次提交事务时,QLDB 都会将事务发布到 Kinesis Data Stream。这使您能够从分类帐中发生的交易中驱动事件。使用这种方法,您可以将业务数据提交到分类帐,而不必担心发件箱 table。该文档应包含您在消息传递中需要的信息。提交后,QLDB 将文档从交易推送到 Kinesis,您可以在 Kinesis 中使用 Lambda 函数处理它并向前发送消息。
需要注意的一件事是,QLDB 提供至少一次将数据传送到 Kinesis 的保证。这意味着您需要识别和处理(或容忍)潜在的重复消息。不过,您应该始终考虑分布式系统中的幂等性。
如果您不想为 Kinesis 付费并且不需要实时方法,您可以将计划的 QLDB 导出到 S3 以及对导出文件进行一些批处理,但我' d 从流媒体开始。如果您想了解更多有关导出方法的信息,请私信我。
另请参阅: