新闻稿




关系仍然很重要


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

真正关系?

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

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

您可能会问:为什么我的DBMS致关系很重要?我的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数据库引擎的多模型DBM。NoSQL选项随着时间的推移而发展,以支持特定开发利基的数据需求。大多数NoSQL产品不需要酸性交易完整性或固定模式,允许它们为移动应用程序,内容管理,配置文件管理和其他实时大数据用例提供更轻松的开发。

但不要让任何人告诉你,NoSQL将超越关系/ SQL,或者酸对大多数业务应用程序并不重要。NoSQL不替代关系/ SQL,它增加它。同样重要的是要记住,许多NoSQL产品相对不成熟,特别是与关系/ SQL数据库系统的40年历史相比。特派团关键申请依赖战斗硬化的SQL数据库的企业应该归结用NoSQL替换它们。NoSQL有其位置......只是不是最具现有关系和SQL数据库系统实现的替代品。