关系型数据库阵营与“现实世界”数据库开发

6

自1995年Date和Darwen的"第三宣言"首次出版以来,已经过去了十多年。

关系思想在今天的数据库世界中的地位是什么? 是否有证据表明Manifesto的思想改变了主流软件开发和数据管理实践?他们催生了新的数据管理产品吗?这些产品是否取得了商业上的成功?

7个回答

10

多年来,我看到许多关于面向对象数据库(OOD)应该“很快”取代关系型数据库的讨论;认为关系模型是过去的方法;认为庞大的安装基础(呃...遗留系统)阻碍了OODs的发展。“只是时间问题,一个‘足够好’的实现终将问世并成功地推翻RDBMS。”

我不是专家,但我想过这个问题很多次,并且我相信这些观点完全错了。

在大多数“现实世界”的场景中,最重要的、也是唯一重要的事情就是数据

编程技术、工具和语言会改变;技术会进化。公司的“语音响应系统”会成为风潮,然后在“网络”的阴影下几乎消失。应用程序来了又走,有些好,有些不那么好;有些重要,有些只是方便;有些持续了3个月,有些持续了3十年。但归根结底,支撑所有这些应用程序的信息是系统的核心,必须经得起时尚的冲击。数据始终存在

因此,“系统”的核心必须围绕着这个目标发展:保持和保护数据。

想一想:特别是SQL数据库给了我们一个独立的(大多数)标准化的存储库,有几十年的经验记录,并且可以通过从不过时的本质上是函数式语言访问任何时候!这是信任最重要组成部分的相当好的位置。

任何将编程工具、环境或应用程序的优先级放在保存数据的混沌存储中的方法——任何过于紧密地将应用程序技术与数据绑定的方法,可能会被遗弃。

并不是说我认为世界上所有的东西都必须放进 SQL 表里。类面向对象的解决方案也有其合理之处,并且具有很多潜力。但你需要寻找那些“应用程序”至高无上、而“数据”次要的场合:游戏、一次性应用程序和工具、存储非关键数据或数据在应用程序寿命结束后没有长期价值的系统。

特别地,我认为那些有限使用寿命(最多几年)的系统是类面向对象技术的主要候选对象。另一方面,当处理任何必须将数据“移交”给其后继者的事物时,除了老牌 RDBMS 之外,我会非常谨慎地考虑其他任何东西。

简言之,这从来不是关于“应用程序”,而总是关于“数据”。


4

面向对象数据库是个自相矛盾的词。你越试图让一个面向对象的数据库,你最终就会陷入关系型世界。在我看来,它们只是一种炒作。

请注意ORM不是面向对象数据库,数据集也不是。我之前听过这个论点,所以我只是为了澄清事情而说出来的。


这正是我认为第三宣言的要点:真正的关系型数据库系统(不是我们今天所拥有的)不需要任何OR映射,它通过定义支持对象。 - Constantin

1
我们正在看到一些使用对象建模来管理数据的方式。我们有Linq和NHibernate,它们允许我们将数据库中的数据映射到我们代码中的对象。然而,我认为我们离真正的面向对象数据库还有很长的路要走。我不确定我们是否会实现这一点。虽然使用“对象”具有优势,但是使用关系数据模型将数据视为集合也有很多优势。

1
到目前为止,已经推出的OODBMS似乎没有像一些人想要的那样被广泛采用,原因很简单:OODBMS只解决了面向对象编程开发人员的问题,而没有考虑其他人,包括DBA、分析师、MIS专业人员以及大量不是面向对象的开发人员,而是“数据驱动”的人员。
话虽如此,大量企业数据仍存储在RDBMS中,类似于大量企业数据也存储在COBOL/CICS驱动系统中。
至于事实,你可以谷歌几个小时寻找统计数据,但你找不到任何东西。你会发现的只有Oracle vs. MS SQL Server vs. MySQL/PostGre/其他开源RDBMS之间的采用率统计数据,而像db4o这样的OODBMS则被大多数人忽略了。

真的,不要忘记在列表中包括用户、审计员、高级经理等。我的数据库存储着我所工作公司的全部命脉。 - HLGEM

1
在商业数据处理中,关系模型已经牢固地树立起来,不可移除。它是核心的,并且经常被过度使用于不适当的事情上。人们会将关系数据库用作可靠的消息队列,因为——嗯——他们认为每个问题都是数据库问题。
关系模型是每个业务流程的许多(几乎所有)商业产品的支柱。很难找到任何基本上不关联的东西。实际上,在许多情况下,产品与数据库密切相关。Oracle的财务,Microsoft的动态会计等等。
可预见的未来,关系数据存储将是商业数据处理的主要存储方式。
目前,关系数据库已成为无需赘言的范畴。每个人都会问:“使用哪种数据库引擎”,以便能够权衡Oracle、IBM、Microsoft、MySQL之间的争论。没有人会问:“数据模型是什么?对象还是关系?”

ORM将继续发展。面向对象编程将继续增长,从而导致更多的ORM。摆脱这个框架很难——几乎是不可能的——因为商业IT专注于稳定性,而不是创新。他们的目标几乎总是“保持灯火通明”。这意味着拒绝变化,直到供应商停业或停止支持产品强制要求他们改变。


0

我一直处理的数据集太大,无法认真考虑使用典型的“对象”模型将数据呈现为包含所有信息和方法以访问/操作它们的数据元素类。

然而,我已经找到了一个简单的折衷模型,使用.NET数据集。由于它们可以自我缓冲到磁盘中,因此非常适合处理可能适合或不适合内存的数据块 - 因此我使用它们来处理我的“对象集合”。

然后,组成应用程序“业务”对象的所有类只需引用包含其信息的数据集中的记录,类的所有方法仅从记录集解析。

适用于返回1百万个结果的查询 - 并且类模型非常易于复制 - 因为基本上所有类内部数据变量都是记录集上的字段。


0

没有 唯一显著的变化是最近云计算的出现,倡导者不一定以关系方式存储数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接