由于文档指示不要使用搜索作为主要数据存储,所以正在使用搜索作为主要数据存储。

主要观点:作者用 Typesense 构建了一个名为 Taut 的聊天应用,虽遵循了文档中不将其用作主数据存储的建议,但展示了其在某些方面的优缺点。
关键信息:

  • 构建了单页聊天应用 Taut,使用传统客户端-服务器方式,通过 htmx 实现交互,后端使用 Go 语言和 Typesense 库。
  • 介绍了数据模型,包括用户和消息的结构体,以及创建数据库模式和记录的过程。
  • 展示了登录、聊天等视图的实现,以及如何通过查询 Typesense 获取数据并填充视图。
  • 指出在消息检索和搜索方面存在安全漏洞,如允许注入攻击,需使用 scoped search keys 来防范。
  • 总结了不将 Typesense 用作主数据存储的原因,如查询灵活性、缺乏参数化查询、缺乏事务、数据耐久性等。
    重要细节:
  • 登录界面无密码要求,登录后可看到聊天界面,包括不同用户之间的聊天记录。
  • 在创建记录时,判断用户是否存在的过程较繁琐,且未找到 create-if-not-exists 的操作。
  • 消息检索和搜索功能存在安全漏洞,可通过精心构造的 handle 查看他人聊天记录。
  • Typesense 存储在内存中,默认未将数据写入磁盘,可通过配置启用磁盘写入和高可用性集群。
  • 作者希望有机会以正确的方式使用 Typesense,其搜索功能在搜索文档方面表现不错。
  • 作者提供了 coaching 服务链接,帮助软件工程师提升能力。
阅读 11
0 条评论