摘要: 文章讲述了Hatchet团队在处理大量JSON数据存储时,从使用Postgres的jsonb和TOAST表到创建“supertoast”表的迁移过程。由于大量JSON数据导致存储成本高、备份庞大,且影响数据库性能,团队开发了“supertoast”表来优化存储和性能。该表通过将热数据保留在Postgres中,而将冷数据迁移到S3存储,从而降低了成本并提高了效率。文章详细描述了从WAL到写-换(write-and-swap)方法的转变,以及如何通过批处理和压缩来减少S3操作成本。
讨论: 该讨论主要围绕在对象存储系统中处理大量小对象的问题。用户atombender指出,对象存储缺乏内嵌的修改能力,导致在处理如合并小对象为“超级块”、跟踪子文件、删除旧数据等操作时面临诸多挑战。他强调需要一个可靠的本地库存系统来跟踪对象,并认为数据库应该是真相的来源,而对象存储不应作为数据库使用。此外,他还探讨了使用键值数据库(如FoundationDB或TiKV)或Ceph等解决方案的可能性。carderne提出了自托管环境下的问题,并建议在任务完成后删除数据。philsnow对动画ASCII图表示赞赏。debarshri建议创建一个PostgreSQL插件来简化大文件上传到S3的过程。
原文标题:Supertoast tables
原文链接:https://hatchet.run/blog/supertoast-tables
讨论链接:https://news.ycombinator.com/item?id=47277420