建议使用 deepstream.io 中的记录

Recommended use of records in deepstream.io

我最近一直在使用记录,我不确定 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
});

所以问题来了:就大小而言,记录是否适合解决此类问题,还是使用 lists/RPC 更合适?

提前致谢!

每条消息有 4MB 的硬性限制,但这对于最长的聊天记录来说应该足够了。问题更多的是记录是 deepstream 中的原子单元——这意味着您不能加载半条记录(但是它们会发送增量以进行更新)。在存储(可能很长)聊天记录方面,我认为有两种选择:

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

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

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