数据库的休息服务

时间:2018-03-01 12:50:30

标签: database rest apache-kafka

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

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

这样:

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

更确切地说:

  1. 我不想自己写休息服务
  2. 我需要这个服务用于多个数据库(不仅仅是一个项目)
  3. 我需要休息服务接近实时(没有缓存数据)
  4. 我正在寻找一些自动创建(封装)数据库(半)的解决方案,以便我可以快速地将我的新数据库插入我的基础架构中,并尽可能少地进行维护工作。

    有解决方案吗? 我在看卡夫卡,但我不确定这是否是我需要的......

    编辑:

    目前,lat说我需要它用于postgres数据库。

1 个答案:

答案 0 :(得分:0)

好的,所以如果你有一个卡夫卡形状的洞,并且你想在其中修复一个卡夫卡形状的钉子,这就是它的样子:

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

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

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

由于数据在Kafka中保留(基于时间,大小或无限制地使用压缩主题进行保留),因此您可以独立于多个使用者和连接器使用相同的数据。

但是所有这些都说......你不必使用Kafka。如果您想要执行所有,可以使用更简单的方法从数据库中访问数据。