Hasty Briefsbeta

Spatio-temporal indexing the Bluesky firehose

17 days ago
  • #WebDevelopment
  • #SpatialIndexing
  • #Bluesky
  • 乔尔·古斯塔夫森为Aurora添加了'空间信息流'功能,实现实时查看地图任意缩放层级范围内账户的帖子。
  • Aurora的后端服务采用家庭服务器上的SQLite数据库对关注图谱进行索引,静态资源则推送到Cloudflare R2存储。
  • 空间信息流要求网页客户端能查询任意地图区域内的帖子URI,这需要云端部署一个用于WebSocket帖子流的firehose消费者服务。
  • 该firehose消费者通过本地SQLite数据库建立索引以支持空间查询,用户坐标数据每月更新一次。
  • 开发了名为'环形缓冲区四叉树'的自定义内存数据结构,可高效处理时空查询并优先显示近期帖子。
  • 四叉树将地图划分为多个瓦片,每个瓦片配备环形缓冲区存储最新帖子,从而实现旧帖的高效垃圾回收。
  • 使用Zig语言实现了这个环形缓冲区四叉树结构,并通过NAPI原生模块暴露给NodeJS调用。
  • 系统每秒索引约100条帖子,用不到1GB内存缓存约1000万条近期帖子,查询响应时间维持在1-3毫秒。