首页 > 解决方案 > 连续数据流的数据库设计

问题描述

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

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

有没有更聪明的方法?也许使用像 MongoDB 这样的 NoSQL 数据库?

标签: databasedatabase-designarchitecturesoftware-designsystem-design

解决方案


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

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


推荐阅读