2016-02-04 72 views
2

我正在考虑与AWS DynamoDB构建一个聊天应用程序。该应用程序将支持1:1和群聊。在AWS DynamoDB上存储聊天记录?

我想创建一个表的聊天记录中的每一个,那里是每个发送的聊天文本行的记录。 DynamoDB适合这种工作吗?

我还想到合并两个表。但是,如果有 - 我们假设 - 100k或1000k用户,这是一个好主意吗?

回答

1

我想你可能会遇到与你的桌子上读取的容量问题。写入容量应该没问题,因为每秒钟没有太多消息(例如10个左右),但是您需要不断地从所有用户那里读取消息,因此这会很昂贵。

如果你想使用DynamoDB就像存储和喜欢在网络上任何正常聊天分发聊天消息,那么它可能是有意义的,这取决于你的使用情况。假设您有一个散列键UserId和Timestamp,您可以在特定时间段内查询特定用户的所有消息。但是,如果您想要在聊天文本中进行搜索(可能是一个非常有用的功能),那么DynamoDB本身无法工作。它不像SQL,在那里你可以做一个LIKE '%abc%'查询(这在SQL中也不是个好主意)。

也许你已经开使用S3作为数据存储和ElasticSearch作为搜索工具更好。如果您需要上述用例“在时间跨度S中获取来自用户X的所有消息”(作为一个简单示例),您还可以使用DynamoDB来存储元数据,例如UserId,Timestamp,PositionInFile或类似的东西。

+0

谢谢。我如何将它存储在S3上?作为每个聊天的文件? – MJQZ1347

+0

老实说,我不确定,但每个聊天存储一个文件,也许每天都存储一个文件听起来是合理的。像这样,要获得第一个屏幕,您只需从文件中加载当前对话日。 – marco

+0

不确定S3是否有帮助,但我同意DynamoDB不会是一个很好的选择来做这种东西 –