我正在考虑使用 AWS DynamoDB 构建一个聊天应用程序。该应用程序将支持一对一和群聊。
我想为每个聊天创建一个表,其中每个发送的聊天文本行都有一条记录。 DynamoDB 适合这种工作吗?
我也在考虑合并两个表。但是,如果(假设)有 10 万或 100 万用户,这是一个好主意吗?
我认为您的表上的读取容量可能会遇到问题。写入容量应该没问题,因为每秒传入的消息不多(例如 10 条左右),但您需要不断地为所有用户读取消息,因此成本会很高。
如果您想使用 DynamoDB 作为存储并像通过网络进行任何正常聊天一样分发聊天消息,那么这可能是有意义的,具体取决于您的用例。假设您有哈希键 UserId 和 Timestamp,您可以查询特定时间段内来自特定用户的所有消息。但是,如果您想要在聊天文本中进行搜索(可能是一个更有用的功能),那么 DynamoDB 本身将无法工作。它不像 SQL,你可以在其中执行LIKE '%abc%'
查询(这在 SQL 中也不是一个好主意)。
也许您最好使用 S3 作为数据存储,使用 ElasticSearch 作为搜索工具。如果您需要上述用例“在时间跨度 S 内获取来自用户 X 的所有消息”(作为一个简单的示例),您还可以使用 DynamoDB 来存储元数据,例如 UserId、Timestamp、PositionInFile 或类似内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)