【问题标题】:Storing data in Apache Kafka as alternative?将数据存储在 Apache Kafka 作为替代方案?
【发布时间】:2020-05-13 21:09:43
【问题描述】:

我开发了一个分布式系统来处理订单并在其中进行一些计算。

所有订单都进入 Apache Kafka,分布在特定服务之间。

我可以将 Apache Kafka 视为存储订单数据的持久数据库吗?

我很困惑,因为订单更适合存储在关系数据库中,如 MySQL。

如何做决定?

在功能中我想对所有订单进行分析,并按日期、金额等进行选择,是否可以使用Kafka?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    是的,您可以使用 Apache Kafka 进行持久存储。

    请参阅this article 了解原因,this article 了解公司在生产中执行此操作的示例,this talk 了解为什么使用 Kafka 作为记录系统实际上是一个非常明智的想法与其他技术(例如 ksqlDB)一起在需要时从数据中实现视图。

    还有来自 Martin Kleppmann 的 this very interesting talk,它考虑了 Kafka 本身是否甚至可以被视为数据库本身。


    那么选择数据如何像 SQL 中那样呢?例如,我需要获得所有已完成的订单或已付款的订单

    使用ksqlDB等流处理器:

    SELECT * FROM orders_topics WHERE ORDER_STATUS='FINISHED';
    
    SELECT * FROM orders_topics WHERE PAID=TRUE;
    

    我需要订单和付款之间的关系

    SELECT * FROM ORDERS O LEFT JOIN PAYMENTS P ON O.ID=P.ORDER_ID; 
    

    【讨论】:

    • 但是选择数据如何像 SQL 中一样呢?例如,我需要获得所有已完成的订单或已付款的订单
    • 我知道 Kafka 适合实时处理数据,但是如何使用存储在 Kafka 中的常量数据进行选择?例如,如果我需要订单和付款之间的关系
    • 我已经修改了答案
    • 那么,KSQL 与 JSON 一起工作,我可以根据 JSON 字段名称构建 SQL 选择吗?
    • 可以更好地读取主题并将数据写入 SQL 或 Mongodb 数据库吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2011-08-21
    • 2013-11-24
    • 2023-04-04
    • 2011-04-27
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多