连续数据流的数据库设计

Database Design for continuous data stream

我目前正在开发一种工具,其中一个客户端 A 可以向服务器发送连续的数据流(只是文本),而另一个客户端 B 应该能够实时观看数据流,就像获取相同的数据一样再次从服务器。 当然,服务器不应该将所有可用数据发送给客户端 B,因为它可以获得大量文本,所以我目前正在考虑如何设计客户端 B 只获取最新数据。

我的第一种方法是类似于分页,客户端 B 向服务器发送另一个属性 client_lines = 10,指示他已经拥有多少行数据,然后我们可以使用 [=11= 查询我们的数据库]. 但是数据库会变得非常大,因为我们会为许多用户创建一个数据库,每个用户发送的数据可能有很多文本行。所以用来自不同用户的数据查询完整的数据库似乎不是一个超级有效的解决方案。

有没有更聪明的方法?也许使用像 MongoDB?

这样的 NoSQL 数据库

您正在寻找一个主题,一个 pub-sub 实现,其中多个订阅者可以接收发布的消息,而消费者可以只消费增量位。您可以通过 ActiveMQ、JMS、Kafka、Amazon SNS、Kinesis 等产品找到对此的良好实现。它偶尔会在关系数据库中实现,但很少很好在关系数据库中实现。使用专用解决方案通常会好得多。

注意,数据库通常会订阅主题以接收更新,并连接到关系模型。