MongoDB,再见还是再等等?( 七 )

关系完整性(外键)丢失:如果你的数据之间存在关系,那么这种关系就是一种客观现实。几乎所有数据中都包含某种关系,如果数据库没有强制体现这些关系,就得由应用程序负责构建。具体来讲,由数据库强制执行这些关系将帮助应用程序减轻大量负担,从而降低软件工程师们的日常工作量。

缺乏执行数据结构的能力:强模式有时候代表着一种短板,但其同时也可能成为确保数据拥有良好结构的有力机制。只要加以合理运用,其就能够提供一种强大的机制,用以确保您的数据在结构上与您的期望完全契合。相比之下,MongoDB 这类文档数据库能够在模式层面带来令人难以置信的灵活性,但这种灵活性同时会将责任转嫁到维护者身上,强制要求其保持数据清洁。MongoDB 支持模式验证,这项功能非常有用,但却仍无法带来可与关系数据库相媲美的保障。

缺少自定义查询语言 / 工具生态系统:SQL 在刚刚出现时绝对掀起了一场革命,而且时至今日仍然代表着一种客观标准。SQL 是一种非常强大的语言,但同时也给用户带来了使用挑战。我们必须使用由 JSON 片段组成的自定义查询语言查询数据库;即使对于经验丰富的 SQL 专业人士而言,这也绝对不是一项轻松的工作。另外,SQL 数据库拥有一整套互操作工具,从 IDE 到报告工具皆在其中。而一旦将数据迁移至不支持 SQL 数据库,即意味着其中大多数工具将无法继续使用。更可怕的是,即使想找到新的办法将数据放入能够继续使用这些工具的其它 SQL 数据库,其难度也远远超过大多数人的想象。

推荐阅读