【问题标题】:Recommended use of records in deepstream.io推荐使用 deepstream.io 中的记录
【发布时间】:2016-04-11 13:39:27
【问题描述】:

我最近一直在使用记录,但我不确定 json 结构的整体大小方面的实际限制。 是否有任何推荐的最大长度,例如您能否将整个聊天记录存储为(匿名)记录,其中可能包含数百个单个条目?

可能 json 文档结构如下所示:

var record = client.record.getRecord( 'chat/5ak1g' );

record.set({
    2016.03.25.16:22:25: {
        user: 'Ann',
        message: 'Hey, whats up?'
    }
    2016.03.25.16:22:40: {
        user: 'Sue',
        message: 'Wanna get some sushi?'
    }
    2016.03.25.16:23:10: {
        user: 'Ann',
        message: 'cdn.example.com/sj48s2f4.jpg'
    }
  //more messages
});

所以问题来了:就大小而言的记录是解决此类问题的适当解决方案,还是更适合使用列表/RPC?

提前致谢!

【问题讨论】:

    标签: javascript json deepstream.io


    【解决方案1】:

    每条消息有 4MB 的硬性限制,但这对于最长的聊天记录来说也足够了。问题更多的是记录是深度流中的一个原子单元——这意味着你不能加载半条记录(但是它们确实会发送更新的增量)。当谈到存储(可能很长)聊天历史时,我认为有两种选择:

    A) 如果您的消息仍然是可变的(例如,用户可以在发送消息后对其进行编辑)为每条消息创建一条记录并将记录名称存储在一个列表中。有一个 open issue 关于添加分页以提高处理大型列表的效率。

    B) 如果您的聊天记录是不可变的,但您想长期保留大量历史记录,您可以按如下方式构建:

    • 为聊天消息使用事件
    • 构建一个后端进程,监听来自任何聊天的事件并将它们存储在数据库中(例如ds.event.listen( 'chat-message/(.*)', () => {} );
    • 添加 RPC 以检索聊天记录的特定部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多