在Slick 3.0中,为什么新推出的`Streaming`很有用?

10 scala akka slick slick-3.0

我发现Slick 3.0引入了一个名为的新功能 streaming

http://slick.typesafe.com/doc/3.0.0-RC1/database.html#streaming

我不熟悉阿卡.streaming似乎是一个懒惰或异步的值,但我不太清楚为什么它有用,什么时候它会有用..

有没有人有这个想法?

Igo*_*iev 12

让我们想象下面的用例:

"慢"客户端希望从服务器获取大型数据集.客户端向服务器发送请求,该请求从数据库加载所有数据,将其存储在内存中,然后将其传递给客户端.

在这里我们遇到了问题:客户端处理数据的速度不是我们想要的那么快=>我们无法释放内存=>这可能会导致内存不足错误.

反应流通过使用背压解决了这个问题.我们可以将Slick的发布者包装在Akka源周围,然后通过Akka HTTP将其"提供"给客户端.

问题是这个背压通过TCP通过Akka HTTP传播到代表数据库查询的发布者.

这意味着我们只能从客户端可以消耗数据的速度读取数据库.

PS这只是一个可以应用反应流的方面.

您可以在这里找到更多信息: