2

我一直在做一些阅读,deepstream.io到目前为止,我发现了以下内容:

  1. 所有记录都存储在同一个表中(deepstream_records默认情况下)

  2. 为了与这些数据进行交互,客户端(浏览器)和服务器端(节点)都可以使用,但不应服务器 端(节点)使用。

问题:

  • 我应该如何与服务器端的记录进行交互?
  • 有什么东西阻止我更改数据库中的记录吗?
    • 数据库中记录的更改会更新客户订阅吗?
    • 这会被认为是不好的做法吗?
  • 为什么所有记录都存储在同一个表中?
RethinkDB 的数据示例:
{
  "_d": { },
  "_v": 0,
  "ds_id":  "users/"
}, {
  "_d": { },
  "_v": 0,
  "ds_id":  "users/admin"
}
4

1 回答 1

3

为什么所有记录都存储在同一个表中?

server.set( 'storage', new RethinkDBStorageConnector( { 
  port: 5672, 
  host: 'localhost' ,
    /* (Optional) A character that's used as part of the
    * record names to split it into a tabel and an id part, e.g.
    * 
    * books/dream-of-the-red-chamber
    *
    * would create a table called 'books' and store the record under the name
    * 'dream-of-the-red-chamber'
    */
  splitChar: '/'
}));

server.start();

你没有提到 splitChar 吗?(它不是默认的)

我应该如何与服务器端的记录进行交互?

要与此数据交互,您将创建一个节点客户端,该客户端使用 tcp(默认端口 6021)连接到您的服务器。服务器本身是一个非常高效的消息代理,可以以低延迟分发消息,我们的建议是不要包含任何不必要的自定义代码,即使在使用权限和 dataTransforms 时也是如此。 https://deepstream.io/tutorials/core/transforming-data

您可以在教程中的 FX 提供程序示例中看到这一点:

https://deepstream.io/tutorials/core/active-data-providers

以及坦克游戏教程示例:

https://github.com/deepstreamIO/ds-tutorial-tanks

有什么东西阻止我更改数据库中的记录吗?

deepstream 通过实际对缓存进行所有写入/读取来保持其低延迟。写入数据库是次要的,以免引入命中。因此,直接更改记录实际上不会通知任何用户,并且会破坏一些用于合并处理的逻辑......

于 2016-03-28T20:56:57.527 回答