deepstream "cache" 层中的实时查询?
Realtime queries in deepstream "cache" layer?
我明白了,通过使用 RethinkDB 连接器,可以通过订阅特定命名的列表来实现实时查询功能。我认为,这实际上不是最快的解决方案,因为查询可能仅在记录更改写入数据库后才会更新。是否有任何推荐的方法来实现深度流端的实时查询功能?
有一些有利的属性,例如:
- 与记录数甚至连接的客户端数相比,唯一查询的数量较少
- 所有需要查询的记录操作都是通过 RPC 完成的。
我可以想出多种方法来做到这一点:
模仿rethinkdb连接器的方法。但是为此我缺少 list.listen() 方法。有了它,我将能够创建一个后端进程,按需创建一个列表,并在记录上的每个 RPC CRUD 操作上更新所有当前活动的列表=查询。
重新实现记录中的基本列表功能,并将上述方法与现有的 .listen()
结合使用
在事件中使用.listen()?
或者我们有 list.listen() 而我只是错过了?或者有更优雅的方法怎么做?
好问题 - 通常列表是客户端概念,在记录之上实现。 Listen 通知您有关客户订阅记录,不一定更改它们 - 更改通知通过 mylist.subscribe(data => {})
或 myRecord.subscribe(data => {})
.
到达
棘手的一点是缓存的查询能力非常有限。 Redis 有一个二级索引的基本概念,可以搜索范围和交集,据我所知,memcached 和 co 是纯键值存储,只能通过 ID 搜索 - 因此实际查询在数据库层上最有意义您的数据通常会在不到 200 毫秒的时间内到达。
RethinkDB 搜索提供程序支持 RethinkDB 的内置实时查询功能。或者,您可以使用 MongoDB 并跟踪其操作日志或使用 PostGres 和 deepstream 的内置订阅功能来获取更改通知。
我明白了,通过使用 RethinkDB 连接器,可以通过订阅特定命名的列表来实现实时查询功能。我认为,这实际上不是最快的解决方案,因为查询可能仅在记录更改写入数据库后才会更新。是否有任何推荐的方法来实现深度流端的实时查询功能?
有一些有利的属性,例如:
- 与记录数甚至连接的客户端数相比,唯一查询的数量较少
- 所有需要查询的记录操作都是通过 RPC 完成的。
我可以想出多种方法来做到这一点:
模仿rethinkdb连接器的方法。但是为此我缺少 list.listen() 方法。有了它,我将能够创建一个后端进程,按需创建一个列表,并在记录上的每个 RPC CRUD 操作上更新所有当前活动的列表=查询。
重新实现记录中的基本列表功能,并将上述方法与现有的 .listen()
结合使用
在事件中使用.listen()?
或者我们有 list.listen() 而我只是错过了?或者有更优雅的方法怎么做?
好问题 - 通常列表是客户端概念,在记录之上实现。 Listen 通知您有关客户订阅记录,不一定更改它们 - 更改通知通过 mylist.subscribe(data => {})
或 myRecord.subscribe(data => {})
.
棘手的一点是缓存的查询能力非常有限。 Redis 有一个二级索引的基本概念,可以搜索范围和交集,据我所知,memcached 和 co 是纯键值存储,只能通过 ID 搜索 - 因此实际查询在数据库层上最有意义您的数据通常会在不到 200 毫秒的时间内到达。
RethinkDB 搜索提供程序支持 RethinkDB 的内置实时查询功能。或者,您可以使用 MongoDB 并跟踪其操作日志或使用 PostGres 和 deepstream 的内置订阅功能来获取更改通知。