Shayon Mukherjee

RSS: https://shayon.dev/index.xml
一切、无处不在——永远在进行中。

每次快速写入,工作只是转移到了别处

每种存储引擎都必须决定,在向客户端报告写入成功之前,必须完成哪些操作。最快速的解决方案是在将字节复制到内存后立即返回。本地持久化写入会等待数据库主机上的 fdatasync 操作。如果在该主机上完成写入后,写入仍未能保存,则需要等待网络卷、对象存储或多个数据库服务器各自保存自己的副本。 这些选择会同时影响延迟和持久性,因为内存中返回的速度很快,但一旦发生机器故障,写入可能会丢失。
评论点赞收藏6 天前

构建一个微型FUSE文件系统:深入解析底层机制与工程实现

作者通过构建一个名为magicfs的小型FUSE文件系统,深入解析了Unix文件系统的核心机制。文章详细拆解了从用户态到内核态的请求循环,包括LOOKUP、READ、WRITE等操作,并重点探讨了元数据与文件内容的分离存储、写入顺序、fsync与flush的区别,以及原子替换和缓存失效等工程细节。代码简洁,适合对操作系统底层原理感兴趣的开发者。
评论点赞收藏62 天前

我短期内不会离开GitHub

作者结合15年GitHub使用经验,回应Mitchell Hashimoto关于GitHub不再适合严肃工作的观点,阐述自己为何继续留在GitHub。
评论点赞收藏109 天前

快速交付需要高度的信任

文章探讨了在初创公司中,快速发布代码不仅依赖工具,更依赖于团队内部的信任与心理安全感。作者认为信任是敏捷开发的基础,能促进创新并建立良性循环,但这属于较为通用的管理理念,缺乏具体的技术案例或独特视角。
评论点赞收藏125 天前

Linux缺页异常、mmap与userfaultfd机制解析

作者深入探讨了Linux内核处理缺页异常、mmap的物理页面映射机制以及userfaultfd接口。文章结合虚拟机快照恢复中懒加载内存的具体场景,解释了如何通过用户态接管缺页处理来优化性能,适合对底层系统编程感兴趣的开发者。
评论点赞收藏162 天前

谈谈沙箱隔离

文章探讨了当前沙箱隔离技术在运行不可信代码(如AI代理、多租户平台脚本)时的应用与定义模糊性,对比了Docker、microVM和WebAssembly等隔离方案。
评论点赞收藏175 天前

深入解析GIL如何影响PyTorch训练的Checkpoint性能

作者结合Ruby GVL经验,深入分析PyTorch训练保存Checkpoint时的GIL争用问题。通过在H100上实测Llama模型,揭示了后台线程保存导致的性能下降及解决方案,提供了具体的工程优化视角和一手测试数据。
评论点赞收藏189 天前

当机器编写代码时的软件工程

文章从1968年NATO会议提出的“软件危机”概念切入,探讨了在机器自动生成代码的时代,软件工程面临的挑战与演变。作者引用Edsger Dijkstra关于计算机能力与编程问题之间关系的经典论述,分析了随着计算能力的提升,传统编程方法已无法应对日益复杂的系统构建需求。文章旨在反思AI辅助编程背景下,软件工程师的角色转变及工程方法论的更新。
评论点赞收藏208 天前

基于S3、Tantivy和NVMe暖缓存的假设性搜索引擎

作者探索将对象存储(S3)作为数据库底层构建搜索引擎的可能性。文章基于之前的实验(如JSON转Parquet、MVCC实现),讨论了分离存储与计算带来的成本降低和运维简化,以及冷查询延迟增加的权衡。重点介绍了结合Tantivy搜索引擎和NVMe暖缓存的假设性架构设计。
评论点赞收藏278 天前

在排灯节暂停与反思

作者将排灯节作为年度反思的节点,以数据库双关语调侃,并坦诚享受节日美食,是一篇简短的个人随笔。
评论点赞收藏293 天前

在S3上基于Parquet的列式表中实现可变的原子删除

作者深入探讨了在基于S3的Parquet列式存储表中实现可变原子删除的技术方案。文章重点介绍了如何利用S3的多部分上传(MPU)和UploadPartCopy功能,在不下载和重建未更改数据的情况下替换Parquet行组并发布新的文件尾标。这是一种针对数据湖架构中删除操作性能与一致性的具体工程优化实践。
评论点赞收藏308 天前

在S3上构建支持常数时间删除的类MVCC列式表

文章探讨利用S3新支持的原子条件写入功能,构建一种类似MVCC的列式表格式,旨在保留Parquet分析优势的同时实现常数时间的删除操作,避免传统方案中重写整个文件的开销。
评论点赞收藏316 天前

通过直接计算分区哈希值,绕过PostgreSQL的目录开销

文章探讨了PostgreSQL在使用哈希分区时,查询父表需要遍历目录结构以定位分区所带来的性能开销。作者提出了一种绕过目录查找,直接计算分区哈希值的方法,从而优化高吞吐量场景下的查询性能,特别是针对多级分区方案。这是一个针对数据库内核和高级应用开发的实用优化技巧。
评论点赞收藏371 天前

AGI存在悖论吗?

文章通过Cursor生成代码的具体案例,探讨了AGI发展的悖论:AI并未发明新知识,而是以前所未有的速度综合了人类已有的最佳实践。作者反思了在追求通用人工智能过程中,合成与创新的界限。
评论点赞收藏420 天前

LLM辅助编程中的“过早闭合”陷阱

文章通过一个急诊误诊的医学案例,类比引入LLM辅助编程中的“过早闭合”(Premature Closure)认知偏差问题。作者指出,当LLM生成的代码看似合理且符合预期时,开发者容易停止深入审查,从而忽略潜在的错误或更优解。文章强调保持批判性思维、验证LLM输出以及避免被表面合理性迷惑的重要性,旨在提醒开发者在利用AI提效的同时,警惕认知陷阱导致的代码质量下降。
评论点赞收藏429 天前

PostgreSQL 选择性异步提交:在耐久性与性能间取得平衡

作者分享了在高写入负载下,通过选择性使用 PostgreSQL 的 synchronous_commit 参数来平衡耐久性与性能的经验。数据显示关闭同步提交可消除 I/O 争用,降低 20% CPU 峰值并提升 30% TPS。文章探讨了如何在保证数据安全的前提下,利用这一机制优化高性能场景。
评论点赞收藏517 天前

从第一性原理审视AI生成的代码

文章反思了AI编程助手(如Cursor和LLM)带来的速度红利与思维惰性风险。作者主张从第一性原理出发,不盲目接受AI生成的代码,而是深入理解其底层逻辑,以避免绕过深度思考,确保代码质量和工程严谨性。
评论点赞收藏539 天前

不折腾大动干戈:如何扩展PostgreSQL

文章针对高增长初创公司在扩展PostgreSQL时遇到的典型痛点,提出无需组建庞大DBA团队,而是通过从第一性原理重新思考数据访问模式,利用数据库自身特性即可解决大规模扩展问题的观点。
评论点赞收藏552 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。