【问题标题】:Rest service for Database数据库休息服务
【发布时间】:2018-08-09 13:06:04
【问题描述】:

有时客户端无法直接连接到数据库(例如 web js 客户端 - Qlik Sense Extensions...),但它们确实需要来自数据库的直接数据。 好的方法是将数据库封装在 REST 服务中,这样您就可以从这些客户端访问数据,而无需给客户端提供数据库访问权限。

如果您正在寻找更通用的解决方案,(不仅仅是当前项目),我相信,必须有更好的解决方案,然后为每个数据库编写您自己的 REST 服务(尽管我知道如何编写它,并且是的工作量不大),因为那时您需要编写自己的服务,维护它们,...

所以:

如果我想要一个 REST 服务来提供数据库数据,最好的解决方案是什么?

更准确地说:

  1. 不想自己写休息服务
  2. 我需要这项服务用于多个数据库(不仅仅是一个项目)
  3. 我需要近乎实时的休息服务(无缓存数据)

我正在寻找一些解决方案,它可以(半)自动创建(封装)数据库,这样我就可以快速地将我的新数据库插入到我的基础架构中,并且尽可能少地进行维护工作。

有解决办法吗? 我在看 Kafka,但我不确定这是否是我需要的,...

编辑:

现在,lat 说我需要它用于 postgres 数据库。

【问题讨论】:

  • 哪些数据库?是什么驱动了这一切?在没有更多上下文的情况下,这听起来像是一组奇怪的要求。
  • 您到底需要什么?数据库之上的 REST 层?使用 Kafka,您可以使用数据库连接器从 Kafka 主题向/从数据库提供/流式传输数据。
  • 从我从您的问题中得到的信息来看,卡夫卡不是正确的选择。它是一个分布式日志,可以解决与 REST API 完全不同的问题
  • 感谢您的意见。我编辑了我的帖子,所以我希望更清楚我的想法。老实说,我没有完全深入研究 Kafka,也不明白它有什么可能。但从快速阅读来看,它看起来很有前途,因为它是数据精简器(从数据库到我的客户端)......
  • 从我从你的问题中得到的信息来看,就“无需编码的 web/http 接口”而言,Dremio、Streamsets 或 Apache Nifi 可能适合你的解决方案

标签: database rest apache-kafka


【解决方案1】:

好的,所以如果你有一个卡夫卡形状的洞,你想在里面固定一个卡夫卡形状的钉子,它可能看起来像这样:

您对数据库使用更改数据捕获 (CDC) 工具,将数据库(或特定表)中发生的每个更改实时流式传输到 Kafka。一旦数据进入 Kafka,您就可以将其提供给任何消费者(众多客户端 API 库,以及 REST proxy)。

您可以将多个异构数据库流式传输到 Kafka,以使不同的数据可用于相同的消费应用程序。您甚至可以使用 Apache Kafka's Streams API 过滤或加入这些入站数据流。您也可以使用KSQL 单独使用类似 SQL 的流处理语言来执行此操作。

有了 Kafka 中的数据,您不仅可以使用消费者 API 或 REST 代理来使用它,还可以使用 Kafka Connect 将其放到其他数据存储中。

由于数据在 Kafka 中持久化(基于时间、大小或无限期压缩主题的保留),您可以独立于多个消费者和连接器使用相同的数据。

但是所有这一切都表明……你不必使用 Kafka。如果您想要全部这样做,还有更简单的方法可以从数据库中访问数据。

【讨论】:

  • 感谢您的帖子。很有意思。现在,我只需要获取数据库值,但我会记住这一点。你说有更简单的方法……你能介绍一些吗?
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 2015-03-15
  • 2012-06-29
  • 2017-07-28
  • 1970-01-01
相关资源
最近更新 更多