新闻稿




关系依然很重要


你有没有注意到关系“技术”似乎这些天拍摄了殴打吗?通过新的“数据模型”和类型的数据库系统,声称比关系更好,似乎该行业也已经准备好在关系中坚持叉子。那么,关系技术已经过时了吗?数据管理包括Hadoop,XML和各种类型的NoSQL数据库产品,各种各样的伪装者都有各种各样的假设。伟德买球合法吗但为什么?是否有需要其批发更换的关系方式的任何缺点?

真正的关系呢?

在我们前进之前考虑这些问题之前,让我们首先承认没有“真实”的关系数据库管理系统。虽然IBM DB2,Oracle数据库,Microsoft SQL Server,PostgreSQL和许多其他人都基于关系模型,但它们都不支持所有将使它们真正关系的功能。将它们称为“SQL DBMS产品”可能更好。

这提出了这个问题:在发出关于关系的死亡瘤之前,我们不应该先尝试完全关系的DBMS吗?请记住,世界上三家最大的软件公司今天是关系井的三个最大的服务提供商,SQL?数据库技术:IBM,Microsoft和Oracle。这些公司的数据库产品成功,因为它们很有用,实际上,帮助公司管理和访问其数据。

你可能会问:为什么我的DBMS是关系型的很重要?我的数据库管理系统还能正常工作吗?人际关系如何帮助你呢?让我们来看看一些问题(尽管我们不会覆盖所有问题)。

使用SQL,您有一种由委员会构建的语言 - 这意味着这一切。由于您可以以多种不同的方式编写相同的数据请求,因此出现了一个问题。这可能会导致性能问题和混淆程序员。另一个问题是当前的SQL数据库系统允许创建可以包含重复行的表。关系模型基于集合理论,并且一组不能包含重复成员。

更重要的是,存在具有当前SQL数据库系统省略的重要关系特征,例如域。域基本上是特定列(或属性)的所有有效值的集。它是灵活的,因此您可以更精确地定义有效值,而不是仅仅是数据类型。但域实际上定义了可以在分配给该域的列上执行的有效操作和比较。因为SQL DBMS产品缺少域,因此代码以下谓词是完全合法的:

  • Avg(薪水)> phone_number
  • 哪里shoe_size = iq
  • agner = first_name

这些不是有用的谓词。但是如果将这些列中的每一个分配给不同的域,则会禁止它们之间的比较,因为不兼容域之间的比较不会被允许在域的范围之外的允许值分配给列。所有这些功能都可以提高数据完整性和数据质量。

然后就会出现丢失数据和空值的问题。虽然最初关系模型的发明者Ted Codd在关系模型中定义了空值,但是Chris Date和其他人随后的研究显示了空值可能产生的问题。已经提出了处理缺失数据的更好的解决方案。

这段简短的抨击应该向您表明,在现有的SQL DBMS实现中存在一些问题。但是,与其把孩子和洗澡水一起倒掉,不如看看真正的关系DBMS能提供什么更好?

那么,什么是关系DBMS呢?在高层次上,它是基于Codd的12条规则实现的。关系在传统上被定义为遵循这些规则,Codd在1970年的原始论文中也是如此。(对于那些有兴趣做进一步研究的读者,本文采访了克里斯·戴特,对关系概念进行了很好的讨论:www.red-gate.com/simple-talk/opinion/opinion-pieces/chris-date-and-the-relational-model.)。

NoSQL怎么样?

有四种不同类型的NoSQL数据库系统:宽列存储、键/值、文档存储和图数据库系统。第五种选择是跨多种NoSQL和SQL数据库引擎的多模型DBMS。NoSQL选项随着时间的推移而演变,以支持特定开发利基的数据需求。大多数NoSQL产品不需要ACID事务完整性或固定的模式,这使它们能够为移动应用程序、内容管理、概要文件管理和其他实时大数据用例提供更容易的开发。

但是不要让任何人告诉你NoSQL将超过关系/SQL,或者ACID对于大多数业务应用程序并不重要。NoSQL并没有取代关系/SQL,而是增强了关系/SQL。同样重要的是要记住,许多NoSQL产品相对不成熟,特别是与关系/SQL数据库系统40年的历史相比。那些依赖于经过实战考验的SQL数据库的关键任务应用程序的企业应该不愿意用NoSQL大规模地取代它们。NoSQL有它的位置……只是不能取代大多数现有的关系和SQL数据库系统实现。