后端、接口与数据 · 综合
数据库:选了不后悔
一句话: 大多数情况下关系型数据库是正确答案,任何其他选择都需要一个能用一句话说清的理由。
为什么默认关系型
一致性、灵活的查询、防止脏数据的约束,以及成熟的工具。大多数被认为是「关系型的限制」的东西,用正确的表结构和索引就能解决。
文档存储适合结构在不同记录之间确实差异很大的场景;键值存储适合缓存和临时状态;时序存储适合指标。它们是补充,不是替代。
决定未来的几个选择
主键。稳定且不可变;不要拿业务信息当主键。
约束。外键、唯一性和非空。存储层的约束胜过代码里的检查——它也会拦住你没想到的那条路径。
时间。用一致且明确的时区存储,每条记录带创建时间和更新时间。
真正会拖垮系统的
循环里的查询,把一次调用变成几百次;筛选用的列上缺索引;以及会加锁的长事务。这三样都只有在真实体量下才会显现。
深入一层
从第一天就打开慢查询日志,并每周查看。加索引的时候要度量——多余的索引会拖慢写入、占用空间,而且并不是每个查询计划都会因它而变好。