知识卡片

数据集成的核心难题:没有万能工具因此必须组合多个系统

普通读书笔记卡

内容

对于”我想存储数据并稍后查询”这类问题,从来没有唯一正确的解法——[[索引是读写速度的权衡额外结构总会拖慢写入]]所属的存储引擎选型、单/多/无领导者复制的取舍,每一种权衡都对应不同的合适环境;让单条代码路径稳定健壮已属不易,试图在单个软件里做到一切几乎注定效果很差,因此每一种所谓”通用”数据库其实都是针对特定使用模式设计的。面对眼花缭乱的替代品,第一个挑战是弄清软件与适用环境的映射关系,这也是理解各章权衡的意义所在;但即便完全理解了每种工具,第二个挑战依然存在:复杂应用里数据的用法本就花样百出——同一份数据可能既要支持OLTP查询、又要支持全文搜索、还要喂给分析系统、机器学习、缓存或触发通知,不太可能有单一软件覆盖所有这些场景,因此不可避免地要拼凑几个不同的软件来提供应用所需的完整功能。发散:”根据经验99%的人只需要X”这类断言更多反映的是发言者自己的经验范围,而非技术的普适实用性——把视角拉高到组织整体的数据流,数据集成的必要性往往会立刻变得明显。

参考来源

- 位置:《数据密集型应用系统设计》第十二章《数据系统的未来》"数据集成""组合使用衍生数据的工具"(源文件:_epub-src/ch12_split_000.html) - 结论依据:原文指出对存储查询问题不存在唯一正解、每种通用数据库都针对特定使用模式设计,并说明复杂应用的数据用法花样百出使得拼凑多个系统不可避免,直接支撑本卡片结论。 - 原始内容:如果你有一个类似于"我想存储一些数据并稍后再查询"的问题,那么并没有一种正确的解决方案……不太可能存在适用于所有不同数据应用场景的软件,因此您不可避免地需要拼凑几个不同的软件。