database - 连续数据流的数据库设计
问题描述
我目前正在开发一种工具,其中一个客户端 A 可以将连续数据流(只是文本)发送到服务器,而另一个客户端 B 应该能够实时观看数据流,就像再次从服务器获取相同的数据一样。当然,服务器不应该将所有可用数据发送给客户端 B,因为它可以获得大量文本,所以我目前正在考虑如何设计客户端 B 只获取最新数据。
我的第一种方法是类似于分页,客户端 B 向client_lines = 10
服务器发送另一个属性,指示他已经拥有多少行数据,然后我们可以使用where lines > client_lines
. 但是数据库可能会变得非常大,因为我们将为许多用户创建一个数据库,每个用户发送的数据可能有很多文本行。因此,使用来自不同用户的数据查询完整的数据库似乎不是一个超级有效的解决方案。
有没有更聪明的方法?也许使用像 MongoDB 这样的 NoSQL 数据库?
解决方案
您正在寻找一个 Topic,一个pub-sub实现,其中多个订阅者可以接收已发布的消息,而消费者可能只使用增量位。您可以通过 ActiveMQ、JMS、Kafka、Amazon SNS、Kinesis 等产品找到很好的实现。它偶尔会在关系数据库中实现,但很少在关系数据库中很好地实现。使用专用解决方案通常会好得多。
请注意,数据库通常会订阅主题以接收更新,并连接到关系模型。
推荐阅读
- reactjs - 在 Redux 的 'compose' 上使用 React.js 道具
- node.js - 由于证书错误,无法通过前端 Maven 插件安装节点
- c++ - 无法使用 Visual Studio Code 中的 g++ 编译 SFML C++ 代码
- function - Powershell 从工作代码中生成函数
- android - 如何将 React Native 添加到我的应用程序中?(安卓)
- php - 带有 PThreads 和 Symfony 4 的 Doctrine 实体管理器
- python - 重构使用 Python open() 函数和 read() 方法
- python - Python:如果 else 循环表现不同
- apache-spark - Spark 中的潜在狄利克雷分配 (LDA) - 复制模型
- python - AWS Boto 3 - 无法创建标签,找不到实例 ID - 不同的区域