使用流从数据库获取数据

Fetching Data from DB using streams

提问人:Aravindh_P 提问时间:11/8/2023 更新时间:11/8/2023 访问量:52

问:

最近,有人问我如何在不使用 SQL 查询的情况下从数据库中检索数据。他们建议使用流来完成此操作,我希望有人解释如何做到这一点。

我最初提到了 ORM 框架,但面试官说这不是正确的答案,因为这些框架使用针对数据库的 sql 查询来检索数据。

Java

评论

0赞 Chaosfire 11/8/2023
我们是否遗漏了一些背景?因为如果要从数据库中检索数据,则需要使用数据库支持的任何语法 period 编写查询。
0赞 Jim Garrison 11/8/2023
向您提出的问题(“在不使用 SQL 查询的情况下从数据库中检索数据”)缺乏足够的上下文来回答。他们显然正在寻找一个非常具体的答案,这取决于他们环境的细节。如果这导致你没有通过面试,我会说你很幸运现在发现了。

答:

0赞 David Weber 11/8/2023 #1

如果您使用数据库,例如在 SQL 中,您必须创建一个用于查询的 SQL 查询。别无他法。

如果您使用数据库,例如在 Mongo 中,则必须创建一个用于查询的 Mongo 查询。别无他法。

ORM 在其后台使用特定于 SQL/Mongo/DB 的查询。

所以你看...

使用 Streams 获取数据的唯一方法是不要使用真实的数据库作为数据库,而是使用一个或多个文件。

我不想评判,但使用手动创建的文件而不是真正的数据库不是一个好主意。

但:

也许他们的意思是 SQL 流式处理:https://materialize.com/guides/streaming-sql/

0赞 morsapaes 11/8/2023 #2

他们正在寻找的答案可能是基于日志的变更数据捕获 (CDC),通过 Debezium 等已建立的工具或定制的 CDC 连接器。此方法的要点是在数据库中发生 CRUD 操作时直接从预写日志中读取,而不是使用 SQL(也称为基于查询的 CDC)按某种节奏轮询数据库。