有时客户端不能直接连接到数据库(例如WebJSClient-QlikSenseExtensions,…),但它们确实需要来自数据库的直接数据。好的方法是将数据库封装在rest服务中,这样,您就可以从这些客户机访问数据,而不需要给客户机数据库访问权限。
如果您正在寻找更通用的解决方案(不仅仅是针对当前项目),我相信,一定会有更好的解决方案,然后针对每个数据库编写您自己的rest服务(尽管我知道如何编写它,而且是的,它没有那么多工作),因为这样您就需要编写您自己的服务,维护它们,。。。
所以:
如果我想使用rest服务来提供数据库数据,那么最好的解决方案是什么?
更准确地说:
我不想自己写rest服务
我需要这个多数据库服务(不只是一个项目)
我需要rest服务接近实时(没有缓存数据)
我正在寻找一些解决方案,它可以半自动地创建(封装)数据库,这样我就可以快速地将新数据库插入到我的基础设施中,并且尽可能少地进行维护工作。
有解决办法吗?我在看Kafka,但我不确定这是否是我需要的,。。。
编辑:
现在,我说我需要它的postgres数据库。
1条答案
按热度按时间yrwegjxp1#
好吧,如果你有一个Kafka形状的洞,你想在里面固定一个Kafka形状的钉子,它可能是这样的:
您可以对数据库使用变更数据捕获(cdc)工具,将数据库(或特定表)中发生的每个变更实时流式传输到kafka中。一旦数据在kafka中,您就可以将其提供给任何消费者(许多客户机api库,外加一个rest代理)。
您可以将多个异构数据库流式传输到kafka中,使不同的数据可用于相同的消费应用程序。您甚至可以使用apachekafka的streamsapi来过滤或加入这些入站数据流。您还可以单独使用类似sql的流处理语言来使用ksql来实现这一点。
使用kafka中的数据,不仅可以使用consumerapi或rest代理使用它,还可以使用kafka connect将它连接到其他数据存储。
由于数据持久化在kafka中(基于时间、大小或压缩主题的无限期保留),因此可以独立于多个使用者和连接器使用相同的数据。
但所有这些都说…你不必使用Kafka。如果您只想这样做的话,有更简单的方法从数据库中访问数据。