知识卡片

是否使用关系数据库要看数据是否结构化

普通读书笔记卡 · 1814.d

内容

同一存储系统里,类型有限、字段结构化、需要索引和快速随机查询的元数据(如获取时间、标签、策略)适合放进关系数据库;而类型无关、内部结构不确定的大块负载数据(如邮件正文、附件)硬塞进数据库表只能存成不可索引、无法高效查询的二进制字段,数据库优势发挥不出来,还得手动实现原本该由数据库负责的事务保证。判断该不该用数据库,要看数据是否真的结构化、是否真的需要索引查询,而不是图省事把什么都塞进同一套存储。

参考来源

- 位置:《架构之美》第12章《当集市开始构建教堂》12.3.3节《Akonadi的架构》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0247.xhtml) - 结论依据:原文明确元数据"名称是有限的、有类型的、结构化的,可以受益于快速、已索引的随机访问和高效的查询"适合数据库,而负载数据"应该是类型无关的……如果需要在数据库表中存储的数据无法确定其结构类型,那么通常会被迫以BLOB字段形式存储……进行有效的索引基本上是不可能了"。 - 原始内容:至少针对实际PIM数据项……的元数据而言,甚至没有考虑过其他解决方案,因为它们的名称是有限的、有类型的、结构化的……而对于负载数据本身……由于这方面信息的存储应该是类型无关的……通常会被迫以BLOB字段形式存储……进行有效的索引基本上是不可能了。