Hasty Briefsbeta

双语

Wrong ways to use the databases, when the pendulum swung too far

a year ago
  • #lessons-learned
  • #software-development
  • #database-design
  • 作者回忆了作为初级开发人员维护从离岸团队继承的关键管道系统的经历。
  • 该系统极其复杂,包含古老的代码库、缓慢的构建流程(15-30分钟),且开发仅限于虚拟机环境。
  • 由于脆弱测试、未记录的隐藏功能以及数据库问题(尤其是存储过程和MSDTC),系统频繁宕机。
  • 原数据库设计将业务逻辑嵌入存储过程,导致API延迟和可靠性问题。
  • 团队启动重构,放弃关系型数据库,转向仅支持读、插、更新、删四种操作的键值存储模型。
  • 新设计将数据存储为JSON文档,导致文档体积过大,部分更新效率低下——需要完整读写整个文档。
  • 引入Gzip压缩减少IO,但使数据检查复杂化,催生了新工具的开发需求。
  • 键值存储缺乏事务和批处理功能,迫使团队通过检查点系统实现幂等性,反而增加了IO操作和延迟。
  • 作者在重构期间离开团队,但反思了这段经历带来的经验教训。