0

我看到,通过使用 RethinkDB 连接器,可以通过订阅特定命名的列表来实现实时查询功能。我假设这实际上不是最快的解决方案,因为查询可能仅在对记录的更改写入数据库后才会更新。是否有任何推荐的方法来实现深度流端的实时查询功能?

有一些有利的属性,例如:

  • 与记录数甚至连接的客户端数相比,唯一查询的数量很小
  • 所有需要查询的记录操作都是通过 RPC 完成的。

我可以想象多种方法来做到这一点:

  • 模仿 rethinkdb 连接器的方法。但为此我缺少一个 list.listen() 方法。有了这个,我将能够创建一个后端进程,按需创建一个列表,并在记录上的每个 RPC CRUD 操作上更新所有当前活动的列表 = 查询。

  • 重新实现记录中的基本列表功能,并将上述方法与现有的 .listen() 一起使用

  • 在事件中使用 .listen()?

还是我们有 list.listen() 而我只是错过了它?或者有更优雅的方法怎么做?

4

1 回答 1

0

好问题 - 通常列表是客户端概念,在记录之上实现。Listen 会通知您有关订阅记录的客户,而不必更改它们 - 更改通知通过mylist.subscribe(data => {})或到达myRecord.subscribe(data => {})

棘手的一点是缓存的查询能力非常有限。Redis 有一个二级索引的基本概念,可以搜索范围和交集,据我所知,memcached 和 co 是纯键值存储,只能通过 ID 搜索 - 因此实际查询在数据库层上最有意义您的数据通常会在不到 200 毫秒的时间内到达。

RethinkDB 搜索提供程序为 RethinkDB 的内置实时查询功能提供支持。或者,您可以使用 MongoDB 并跟踪其操作日志或使用 PostGres 和 deepstream 的内置订阅功能来获取更改通知。

于 2016-12-30T08:53:07.557 回答