关系阵营和"现实世界"数据库开发
自1995年伊达(Date's)和达尔文(Darwen)的《第三份宣言》首次出版以来已经过去了十多年。
关系思想流派在当今数据库世界中的位置是什么?
有没有证据表明Manifesto的想法改变了主流软件开发和数据管理实践?他们是否催化了新数据管理产品的创建?这些产品在商业上是否成功?
解决方案
我们看到了对象建模在管理数据方面的一些亮点。我们有Linq和NHibernate,它们使我们能够将数据库中的数据映射到代码中的对象。然而。我认为,要建立一个真正的面向对象的数据库,我们还有很长的路要走。我不确定我们是否会。尽管使用"对象"具有其优势,但使用关系数据模型将数据视为集合具有许多优势。
到目前为止,已经出现的OODBMS似乎没有像某些人所希望的那样被广泛采用,原因很简单:OODBMS只解决OOP开发人员的问题,而不能解决其他所有人,包括DBA,分析师,MIS专业人士以及大量不面向对象而是"数据驱动"的开发人员。
话虽这么说,RDBMS中仍然保留了大量企业数据,这与COBOL / CICS支持的系统中仍然保留大量企业数据的方式类似。
至于事实,我们可以花几个小时在Google上查找统计信息,但找不到任何统计信息。我们会发现,Oracle,MS SQL Server,MySQL / PostGre /其他开源RDBMS的采用统计数据相互比较,而诸如db4o之类的OODBMS被忽略了。
我一直在处理太大的数据集,以至于不能认真考虑将数据呈现为类的经典"对象"模型,该模型具有包含所有信息和访问/操作它们的方法的数据元素。
但是,我发现了一个带有.NET数据集的简单折衷模型。由于它们"自我缓冲"到磁盘,因此它们非常适合处理内存中可能容纳或者可能不适合的数据块,因此我将它们用于"对象集合"。
然后,构成应用程序"业务"对象的所有类都简单地引用了包含其信息的数据集中的记录,并且该类的所有方法都简单地从记录集中进行了解析。
对于返回1到百万的结果的查询,该类模型非常容易复制,因为基本上所有类内部数据变量都只是记录集上的字段。
在业务数据处理中,关系模型已牢固树立,并且无法删除。它很重要,经常被不当使用的东西过度使用。人们将使用(滥用)关系数据库作为可靠的消息队列,因为-好-他们将每个问题都视为数据库问题。
关系模型是每个业务流程中许多(几乎所有)商业产品的骨干。很难找到根本不相关的东西。实际上,在许多情况下,产品与数据库紧密匹配。甲骨文的财务,微软的动态会计等
在可预见的将来,关系数据存储将成为业务数据处理的主要存储。
当前,关系数据库不言而喻。每个人都在问"哪个数据库引擎",这样他们就可以在甲骨文,IBM,微软,MySQL之争中加分。没有人问"数据模型将是什么?对象还是关系?"
ORM将继续进军。面向对象的编程将继续增长,从而导致越来越多的ORM。突破这一框很难-几乎不可能-因为业务IT专注于稳定性而不是创新。他们的目标几乎总是"保持开灯"。这意味着拒绝更改,直到供应商倒闭或者终止对产品的支持迫使他们进行更改为止。
面向对象的数据库是矛盾的。我们尝试建立OO数据库的次数越多,最终我们在关系世界中的使用就越多。我认为它们只是一种炒作。
请注意,ORM不是" OO"数据库。数据集也不是。我之前已经听到过这样的争论,所以我说的只是为了弄清楚。
多年来,我已经看到许多讨论,关于OOD应该如何"很快"取代关系数据库;关系模型是过去的方式;巨大的安装基础(ehm ...遗留物)造成的惯性阻碍了OOD的进展。 "只有足够的时间才能最终实现"足够好"的实现并成功废除RDBMS,这只是时间问题。"
我决不是专家。但是我已经考虑了很多次,并且我开始相信这些观点完全错了。
在大多数"现实世界"场景中,重要的是,唯一重要的是数据。
编程技术,工具和语言不断变化;技术在发展。公司的"语音响应系统"风靡一时,然后几乎消失在"网络"的阴影后面。应用程序来来去去;其中有些很好,有些则不是很多;一些关键的,一些仅仅是方便的;有些持续3个月,有些持续3十年。但归根结底,为所有这些应用程序提供的信息是系统的核心,必须在时尚潮流中生存。数据保持不变。
因此,"系统"的核心必须围绕一个目标发展:保持并保护数据。
仔细想想:特别是SQL数据库为我们提供了一个独立的(主要是)标准化的存储库,该存储库具有数十年的行之有效的记录,并且可以使用几乎完全不是功能语言的任何语言随时访问!这是值得我们信赖的最有价值的地方。
任何将编程优先权放在编程工具,环境或者应用程序中的方法,都是以将数据保存在模糊的存储中为代价的—那种将应用程序技术与数据过于紧密地绑定在一起的方法,都可能会落伍。 。
并不是说我相信世界上的所有事物都必须放入SQL表中。类似OOD的解决方案也占有一席之地,并且潜力很大。但是我们需要查看"应用程序"为王,而"数据"为次要的地方:游戏,一次性应用程序和工具,保存非关键数据的系统或者没有长期价值的数据应用程序的预期寿命。
特别是,我认为使用寿命有限(最多几年)的系统是类OOD技术的主要候选对象。另一方面,当必须处理某天必须将数据"移交给"其后继者的任何事情时,除了陈旧的RDBMS之外,我将非常谨慎。
说来话说,从来没有关于"应用程序"的事情。一直都是关于"数据"的。
不
唯一明显的变化是最近通过云计算的出现而来的,云计算的支持者不一定以关系方式存储数据。