自1995年Date和Darwen的"第三宣言"首次出版以来,已经过去了十多年。
关系思想在今天的数据库世界中的地位是什么? 是否有证据表明Manifesto的思想改变了主流软件开发和数据管理实践?他们催生了新的数据管理产品吗?这些产品是否取得了商业上的成功?
自1995年Date和Darwen的"第三宣言"首次出版以来,已经过去了十多年。
关系思想在今天的数据库世界中的地位是什么? 是否有证据表明Manifesto的思想改变了主流软件开发和数据管理实践?他们催生了新的数据管理产品吗?这些产品是否取得了商业上的成功?
多年来,我看到许多关于面向对象数据库(OOD)应该“很快”取代关系型数据库的讨论;认为关系模型是过去的方法;认为庞大的安装基础(呃...遗留系统)阻碍了OODs的发展。“只是时间问题,一个‘足够好’的实现终将问世并成功地推翻RDBMS。”
我不是专家,但我想过这个问题很多次,并且我相信这些观点完全错了。
在大多数“现实世界”的场景中,最重要的、也是唯一重要的事情就是数据。
编程技术、工具和语言会改变;技术会进化。公司的“语音响应系统”会成为风潮,然后在“网络”的阴影下几乎消失。应用程序来了又走,有些好,有些不那么好;有些重要,有些只是方便;有些持续了3个月,有些持续了3十年。但归根结底,支撑所有这些应用程序的信息是系统的核心,必须经得起时尚的冲击。数据始终存在。
因此,“系统”的核心必须围绕着这个目标发展:保持和保护数据。
想一想:特别是SQL数据库给了我们一个独立的(大多数)标准化的存储库,有几十年的经验记录,并且可以通过从不过时的本质上是函数式语言访问任何时候!这是信任最重要组成部分的相当好的位置。
任何将编程工具、环境或应用程序的优先级放在保存数据的混沌存储中的方法——任何过于紧密地将应用程序技术与数据绑定的方法,可能会被遗弃。
并不是说我认为世界上所有的东西都必须放进 SQL 表里。类面向对象的解决方案也有其合理之处,并且具有很多潜力。但你需要寻找那些“应用程序”至高无上、而“数据”次要的场合:游戏、一次性应用程序和工具、存储非关键数据或数据在应用程序寿命结束后没有长期价值的系统。
特别地,我认为那些有限使用寿命(最多几年)的系统是类面向对象技术的主要候选对象。另一方面,当处理任何必须将数据“移交”给其后继者的事物时,除了老牌 RDBMS 之外,我会非常谨慎地考虑其他任何东西。
简言之,这从来不是关于“应用程序”,而总是关于“数据”。
面向对象数据库是个自相矛盾的词。你越试图让一个面向对象的数据库,你最终就会陷入关系型世界。在我看来,它们只是一种炒作。
请注意ORM不是面向对象数据库,数据集也不是。我之前听过这个论点,所以我只是为了澄清事情而说出来的。
ORM将继续发展。面向对象编程将继续增长,从而导致更多的ORM。摆脱这个框架很难——几乎是不可能的——因为商业IT专注于稳定性,而不是创新。他们的目标几乎总是“保持灯火通明”。这意味着拒绝变化,直到供应商停业或停止支持产品强制要求他们改变。
我一直处理的数据集太大,无法认真考虑使用典型的“对象”模型将数据呈现为包含所有信息和方法以访问/操作它们的数据元素类。
然而,我已经找到了一个简单的折衷模型,使用.NET数据集。由于它们可以自我缓冲到磁盘中,因此非常适合处理可能适合或不适合内存的数据块 - 因此我使用它们来处理我的“对象集合”。
然后,组成应用程序“业务”对象的所有类只需引用包含其信息的数据集中的记录,类的所有方法仅从记录集解析。
适用于返回1百万个结果的查询 - 并且类模型非常易于复制 - 因为基本上所有类内部数据变量都是记录集上的字段。
没有 唯一显著的变化是最近云计算的出现,倡导者不一定以关系方式存储数据。