Moe*_*oeb 4 database database-design non-relational-database relational-database
在EF Codd于1970年发表他的论文"大型共享数据库的数据关系模型"之前,分层和网络是数据库的两个主要模型.
他们究竟出了什么问题,他们没有占上风?
小智 5
基本问题是无法支持即席查询.这些数据库速度非常快,但前提是您以原始设计师期望的方式查询它们.如果您想出了另一种类型的查询,它们可能非常慢或者最坏要求更改数据库模式以支持查询.
我实际上在80年代(Codasyl和Nomad/2)研究了这两种类型,并且当SQL变得更加普及时非常高兴.
到目前为止,答案涵盖了网络和层次模型最终被关系模型(包括SQL数据库系统)取代的许多实际原因.Codd 1970年的论文详细解释了为什么需要新模型.这是一个很好的阅读.事实上,在Codd之前,"数据模型"一词实际上闻所未闻.因此,他创造了术语"层次模型"和"网络模型",以便描述在没有精确模型的情况下构建的数据库系统.
可以将分层和网络模型收集到一般术语中,称为"图模型".数据图模型的基本特征是通过说明数据项的位置来引用数据项.如果您了解指针,您就会理解图模型的所有基础知识.
数据图模型有两个非常强大的优点.首先,程序员很容易掌握.新手程序员通过一定的学习曲线来掌握指针,但是一旦他们完成了这些,他们就可以轻松地理解图形数据了.
第二个优点是指针非常快,只要在写入数据时预期要遵循的导航路径.
使用指针识别数据有几个缺点.一个是数据变得"固定".也就是说,当要对数据进行混洗时,必须定位和更新引用数据的所有指针.或者"转发地址"必须留在旧位置.如果你曾经在网上点击过一直有效的按钮,只是为了迎接臭名昭着的"找不到页面"的错误,你可能会遇到拖拽固定数据但没有更新对它的引用的陷阱.
第二个是沿着计划外访问路径导航数据在性能和逻辑正确性方面都是彻头彻尾的灾难性的.这是使用图形数据库进行临时报告如此困难的原因之一.
图形数据的第三个缺点是图形数据中可能存在逻辑关系,这些逻辑关系不是给定的数据中固有的.关系模型的基本优势是所有关系都是数据本身固有的.这是一个优势的原因很复杂.我再次推荐你到1970年的论文.
在您和我可能使用的所有"关系DBMS"中,在使用数据识别数据和使用指针定位数据之间存在桥梁.它被称为索引.索引涉及两个项目:索引键(表中的一个或多个列)和指针(定位包含索引键的行).我正在浏览索引的所有细节.
反正索引允许SQL引擎翻译,指出查询什么正在寻求到的数据在那里寻找那些数据.索引指向的数据仍然可以进行洗牌,但索引必须作为流程的一部分进行重建.
这是一个概述.