在 AWS DynamoDB 上存储聊天日志?

2023-12-20

我正在考虑使用 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(使用前将#替换为@)

在 AWS DynamoDB 上存储聊天日志? 的相关文章

随机推荐

  • NoReverseMatch django - 不是有效的视图函数或模式

    目前使用 Django 1 11 我得到一个例外 Reverse for book details not found book details is not a valid view function or pattern name Re
  • 按因子分组并返回其他列的第二低值

    我想按中的值对该数据框进行分组zipcode列 并在另一个 称为比率 列中返回second lowest率或lowest率或max rate 例如 从这个 df zipcode state county code name rate are
  • TypeScript 对数组进行排序

    我一直在试图找出我在打字稿中遇到的一个非常奇怪的问题 它将内联布尔表达式视为第一个值的类型 而不是完整的表达式 因此 如果您尝试如下简单的操作 var numericArray Array
  • 派生的 Scala 案例类与基类具有相同的成员变量

    有更好的方法吗 scala gt case class A x Int defined class A scala gt case class B override val x Int y Int extends A x defined c
  • 如何仅解析特定对象而不反序列化整个 JSON 文件?

    我有一个巨大的 JSON 文件 数万个对象 gt 100 MB 文件 我正在尝试解析以提取特定对象 由于文件太大 我尝试仅反序列化我需要的特定部分 如果可能的话 而不必反序列化整个文件 应根据特定属性的值找到所述对象 arena id xx
  • 在 Android Studio 中搜索整个项目中出现的所有字符串

    我刚刚开始使用 Android Studio IntelliJ 现在我正在寻找该功能来查找项目中任何文件中字符串的出现情况 例如 我想找到所有包含字符串 的文件 getUuid 右上角的搜索没有给我正确的结果 并且我认为我无法在 编辑 gt
  • SQL CE 4 System.Transaction 支持

    有人问了类似的问题here https stackoverflow com questions 3401796 does sql ce 4 ctp support ambient transactions using system tran
  • Python 中的反向索引?

    我知道a 结束 开始 1 以相反的顺序对列表进行切片 例如 a range 20 print a 15 10 1 prints 15 11 print a 15 0 1 prints 15 1 但您无法到达第一个元素 示例中为 0 看来 1
  • 将 Eclipse 迁移到缺少 build.gradle 的 Android Studio

    正如许多人所建议的 我正在尝试从 Eclipse 切换到 Android Studio 遵循以下建议https developer android com sdk installing migrate html https develope
  • 如何在 VSIX 项目中的解决方案文件夹中获取项目

    您好 我在 Visual Studio 扩展内的自定义构建任务遇到问题 我需要识别我的自定义项目类型的项目 如果它们位于解决方案的根目录中 我可以很好地做到这一点 但是当它位于解决方案文件夹内时 就会出现问题 我可以将解决方案文件夹作为 E
  • “无法为未命名的组件创建方法”

    以下代码 在包中注册时 为我们提供了一个名为TParentComponent已登记在托盘中Test 但是 当您使用属性编辑器 在同一代码中提供 创建子对象时 IDE 会显示错误消息无法为未命名的组件创建方法 奇怪的是Child对象确实有一个
  • 那是什么('Z' - 'A')

    在Currency java 文件中有一行 private static final int A TO Z Z A 1 这是什么意思 我以前没有看到这个 A TO Z 的值是什么以及为什么它使用 Z 而不是数字 用这个表达你正在治疗char
  • 如何在每个记录器的基础上更改 Python 日志消息的格式?

    读完后文档关于logging http docs python org py3k library logging html module logging 我知道我可以使用这样的代码来执行简单的日志记录 import logging def
  • 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

    我正在将一个依赖项 jar 放入 WebSphere 应用程序服务器上的分解 EAR 中 我需要停止 启动 EAR 以使 WS 执行新代码 有没有办法从命令行执行此操作 尝试运行这样的东西 opt ibm websphere appserv
  • 用户注销时删除 HKEY_CURRENT_USER 值

    Windows 服务在下创建一个注册表值 用于 Excel 加载项 HKEY CURRENT USER每个登录用户的注册表项 通过调用ImpersonateLoggedOnUser http msdn microsoft com en us
  • JQuery 幻灯片切换超时

    我有简单的 html 页面
  • 位移位大型二进制文件?

    在 C 中对大量二进制数据进行位移位的最佳或推荐方法是什么 我有一个 200K 二进制文件 我想左移然后右移整个文件 如果您的操作系统可以支持它 请使用内存映射文件 然后做一点移位就会非常非常高效 请参阅此答案以获取更多信息 内存映射文件有
  • browserify external 与 except 之间有什么区别?

    我在用着browserify并试图让它跳过浪费时间包括或解析 jquery 和其他require less 文件我通过 CDN 加载 我应该使用bundle exclude jquery or bundle external jquery
  • Apple iOS 浏览器随机不会呈现动态加载的 HTML 对象

    我们遇到的问题仅在 iOS 浏览器 iOS 12 0 上明显 我们的 SPA 应用程序使用 HTML 对象标签通过 JavaScript 将小部件 HTML CSS JS 文件 加载到页面上 该问题是间歇性的 当页面加载时 某些小部件不会在
  • 在 AWS DynamoDB 上存储聊天日志?

    我正在考虑使用 AWS DynamoDB 构建一个聊天应用程序 该应用程序将支持一对一和群聊 我想为每个聊天创建一个表 其中每个发送的聊天文本行都有一条记录 DynamoDB 适合这种工作吗 我也在考虑合并两个表 但是 如果 假设 有 10