app购彩网平台

好评猫-专业服务器租用知识门户网站!易记域名:www.haopingmao.com

那些忘记过去的人注定要重蹈覆辙cdn服务器配置

chen CDN服务器 2021-08-10 10:13:13 0

  在过去的十年中,引入了一些使用网络或分层数据模型的DBMS(通常被标记为NoSQL)。CDN服务器配置MongoDB和Cassandra就是一个例子。一些这样的系统通过“链接”的概念支持网络,还有一些系统使用嵌套数据模型支持分层数据,通常使用JSON。在我看来,这些制度并没有内化历史的教训。

  

  在1974年的SIGFIDET(现在的SIGMOD)年会上,对关系模型与网络和层次模型的优点进行了CDN服务器配置“伟大的辩论”。TedCodd为关系模型辩护,CharlieBachmann代表网络模型。我当时参加了辩论发表报告所有的人都能读到。

  两个基本问题CDN服务器配置

  基本上CDN服务器app购彩网平台配置,争论的焦点是哪种模型更适合结构化数据(相对于文档、电子邮件等)。最后归结为两个问题:

  问题1:CDN服务器配置高级数据子语言是个好主意吗?

  问题2:CDN服务器app购彩网平台配置表是最好的数据结构还是应该使用网络或层次结构?

  过去45年来,科德在这两个问题上的立场都得到了肯定。关于问题1,辩论中的讨论集中在高级别声明性语言(认为SQL)与低级别实时记录符号(想想ibm层次DBMS的数据管理语言ims)之间的适当性。显然,程序员用高级语言编写的代码较少,并且不受数据存储表示的许多变化的影响,也就是说,高级语言是好的。因此,当时的反论点是,“高级语言不可能像低级标记那样高效。”

app购彩网平台  我今天使用的格言是“永远不要对编译器下注”,因为SQL优化器将高级语言编译成低级符号。SQL优化器可以选择与程序员一样好的查询计划吗?在过去的45年里,“火箭科学家”确实可以击败优化者,但“仅仅是凡人”却不能。因为我们大多数人都属于后一类,所以编译器赢了。此外,大多数SQL引擎中的“提示”系统允许火箭科学家引导编译器实现他/她最喜欢的计划。似乎,主流已经内化了这种讨论,SQL已经成为数据库访问的近乎通用的“通用语言”。

  关于第二个问题的争论围绕着“数据独立性”展开。许多年前,Codd向我提到,他对关系模型的灵感之一是他的IBM程序员朋友。他们抱怨说,每当模式改变时,他们就不得不丢弃代码,重新开始。因此,数据独立性是应用程序在数据存储或表示中经受住变化的能力。

  我将用一个非常简单的例子来说明这个问题,并从一些数据的实体关系表示开始。考虑一个实体“雇员”具有名称键和其他属性(如工资和生日)。考虑第二个实体“部门”一把钥匙DNAME,以及其他属性,如地板数和预算。这两个实体之间是有关系的,“作品”,指示员工工作的部门。如果公司要求员工在一个部门工作,那么表中的一个明显的表示是:

  雇员(姓名、工资、生日、DNA ME)

  部门(DNAME,楼层数,预算)

  在分层或网络数据模型中,可以将模式构造为:

app购彩网平台  部门(DNAME,楼层数,预算)

  {

app购彩网平台  员工(姓名、薪资生日)

  }

  此表示法表示员工被“存储在”使用分层表示的部门之下。既然我们已经确定高级语言是好的,下面是SQL来查找一楼某部门雇员的姓名:

  选择E.name

  来自D部E雇员

app购彩网平台  其中D.楼层=1和E.dname=D.dname

  在查询分层数据库时,必须从“Externalin”进行编程,以模拟分层表示。在一种高级层次语言中,下面是相同的查询:

  适用于楼层=1的所有部门

app购彩网平台  选择Employee.name

app购彩网平台  以上模式可以针对我们使用的查询进行优化。在分层系统中,可以在地板上使用索引,而关系系统则可以在D.floor和E.dname.

  在真实的世界见面

  在现实世界中,随着业务条件的变化,工作量也会有规律的变化。通常,这种变化每季度发生一次或更多次。此外,数据库应用程序通常持续25年或更长时间。因此,必须计划在应用程序的生命周期内进行100次或更多的此类更改,而数据库/应用程序维护是一件非常重要的事情。

  一个非常简单的更改是对主导查询的结构进行更改。假设是“找出30到40岁员工的名字”。

app购彩网平台  在关系世界中,可以按年龄对员工进行集群(或索引),以支持此查询。注意,前面的查询继续运行,尽管性能可能会降低。

app购彩网平台  在分层系统中,可能(或不可能)有“依赖”索引,允许在从属记录上建立年龄索引。即使有了此功能,员工记录也不会按年龄分组,因此查询性能可能不够。要获得更好的绩效,员工记录不能与部门保持群集,而必须成为顶级对象。这需要更改架构。这个决定的一个副作用是我们的第一个查询失败了。20世纪70年代关于数据模型的讨论围绕着数据独立性,即当对以下方面进行更改时,查询是否会继续执行:

  对象布局

  对象索引

  物理存储的对象,而不是表示为视图的对象。

  20世纪70年代的结论是,与网络模型和层次模型相比,关系模型提供了更好的数据独立性。

  前方是什么

app购彩网平台  45年后,这一结论仍然成立。如果您想要将自己与业务条件要求的更改隔离开来,请使用关系DBMS。如果您希望继任者的继任者感谢您的明智决定,请使用关系模型。

本文由好评猫(http://bzyz185.cn/cdn/2021-08-10/756.html)原创,转载请注明!

版权声明

本文作者来自互联网用户,不代表好评猫立场。
如果作者发布涉及版权问题请联系我们删除,谢谢!

下一篇:返回列表