RDBMS如何被视为一种时尚?


11

我于2003年完成了计算机A级学习,并于2007年获得了计算机学位,并且在一家使用大量SQL的公司中学习了自己的交易,因此我想到了将关系数据库用于存储的想法。

因此,尽管相对较不熟悉开发,我还是吃了一惊(在/software//q/89994/12436上)读到的评论说:

[一些开发人员]鄙视[SQL],并认为它和RDBMS是一时的流行

显然,有能力的开发人员将使用正确的工具来完成正确的工作,并且在例如适用于平面文件或其他存储解决方案的情况下,不会创建关系数据库,但是RDBM在很多情况下都非常有用,因此如何被认为是一种时尚?


1
请提供背景信息-您在哪里阅读了该评论?
Eran Galperin

8
任何事物都被某处某人视为时尚。
彼得Török

佩特(Péter)真是,只是好奇为什么?
StuperUser 2011年

5
这样的人通常有他们想要推广的另一个范例,这与关系数据库的概念背道而驰。因此,关系数据库是不好的,需要删除。看一下尚未达到临界质量的面向对象的数据库。

Answers:


28

关键在RDBMS 中的R中,代表关系。与普遍的看法相反,这并不意味着表之间存在关系,而是事实,即每个表都是该词在数学意义上的关系

关系模型具有相当重要的意义。您必须对数据进行建模以适应关系并对该模型进行规范化。如果您的应用程序被设计为面向对象的模型,则关系模型不适合。这被广泛称为对象关系阻抗不匹配

一种解决这种不匹配的方法是ORM(对象关系映射器),这种方法已广受欢迎。但是它们不是真正的解决方案,它们更像是解决问题的方法。他们仍然没有真正解决将类继承映射到关系模型的问题。

解决对象关系不匹配的真正方法是OODBMSes,不幸的是,它并没有受到太多关注。本地支持OOBD的流行引擎是PostgreSQL,它是OO / RDBMS的混合体。另一个OODBMS是Zope Object DB,它是用Python构建的,并且在典型设置中使用RDBMS作为基础引擎。

另一种方法是在应用程序或中间件级别实现更多逻辑,并将NoSQL解决方案用于基础存储。

OODBMS和NoSQL都不是“仅平面文件”。


2
@Daniel:他当然没有说关系模型是一个需要解决的问题。他完全按照您的意思说了出来- 如果您致力于按照面向对象的范例对软件进行建模,那么关系模型就是一个问题。
Carson63000

1
@卡森:我很抱歉,但这不是我读答案的方式。@vartec说:“真正的解决方案是OODBMS(不幸的是,它并没有得到太多的关注)。” 我谨对此表示不同意:我要说的真正解决方案是理解关系模型并有效地使用它。当您必须在数据模型中使用OO原理时,OODBMS是一个穷人的解决方案,这当然不是普遍的情况。
Daniel Pryden 2011年

1
@Daniel:我想他的意思是,如果您致力于按照面向对象的范例对软件进行建模,那么 OODBMS才是真正的解决方案。关系模型本身并不是问题,OODBMS是它的解决方案。但是无论如何,关于讨论我们中哪些人正确理解Vartec的争论不多,我会弯腰让他澄清他是否愿意。:-)
Carson63000

1
@Daniel:上下文重要。我很坦率地说,在OOP上下文中,关系模型是一个问题。现在,OOP的普及与否已经超出了这个答案的范围。顺便说一句。OODBMS不是“穷人解决方案”,ORM是。
vartec

1
@vartec:好的,我撤回我的选票。(除非对帖子进行编辑,否则我实际上无法将其删除。)我确实认为最好澄清一下不涉及OO的解决方案。是的,我同意ORM比OODBMS更糟糕。
Daniel Pryden 2011年

13

我做了你在上述问题中引用的声明。如果您想引证以证实我对本网站开发人员的假设,请阅读我对以下问题的回答,并查看我仍然认为可以接受的答案所引起的评论和反对意见的强烈反对。

有经验的程序员应该知道数据库查询吗?

我断言,如果使用RDBMS数据库,尽管有Linq或ORM,但开发人员应该具有SQL的高级知识。

这似乎是一个非常不受欢迎的断言,似乎是因为人们对SQL重要性的看法存在可观的差异,而对于RDBMS固有地不如MongoDB的NoSQL数据库则不那么受人尊敬。

编辑:为了进一步增加我的主张,我将引用用户SK-logic:

请记住,所有这些RDBMS热潮都是相对较新的趋势。在此之前,我们有各种各样的方法。您显然是在一家年轻的公司中工作,并且与同龄的开发人员一起工作,因此您没有机会接触到更旧的更可靠的存储方法。幸运的是,这种最近的趋势已经在下降,并且旧的好方法正在回归,被重新命名为“ nosql”。


完全同意您的观点,与DB一起工作的开发人员应该理解SQL,以便能够根据关系正确地概念化查询。但是,希望Linq / ORM不会以影响考虑到数据存储的查询的方式优化抽象查询。
StuperUser 2011年

任何人都会说“这种RDBMS热潮是一个相对较新的趋势”的唯一原因是炫耀他们的胡须有多灰白。我首先研究了您在1995年描述的那种企业和业务应用程序-关系数据库占据了主导地位,现在它们占据了主导地位,在我从事这16年的工作中,它们都占据了主导地位。现在显然我不像一些人大,但是当我说“相对较新”时,我的意思不是“过去二十年”。
Carson63000

问题是许多开发人员错误地将RDBMS与SQL等同起来。从现代标准来看,SQL是一种非常糟糕的语言。它是“关系”语言的一种有缺陷且不完整的实现(SQL根本不是真正的关系,这是问题的一部分),在过去30年中发展并不多。许多使用SQL的人几乎不了解关系模型-他们所知道的只是SQL,因此他们认为关系模型是他们沮丧的原因。
nvogel

@dportas,确定SQL并不是完美的,但是它对每一项工作都非常重要,以至于我发现当我开始思考SQL时,生活变得多么轻松。如果您给我一个关系模型并用简单的英语问我一个问题,那么我可以用SQL写一个“答案”。您说“他们所知道的只是SQL,因此他们认为关系模型是造成挫败的原因”,那么他们对SQL的了解还不够。为什么必须始终将所有内容都迎合最低的示威者,例如印度程序员的时薪不足10美元/小时,且受过不良教育。
maple_shaft

@maple_shaft,如果您正在考虑使用SQL,那么您正在考虑的某些问题在关系方面是非常错误的。应该鼓励开发人员理解诸如关系模型之类的基础概念,而不是专注于SQL之类的语言。如果更多的人理解基础概念,那么SQL可能已经被更好的东西所取代。
nvogel

9

时尚

在短时间内变得非常流行,然后以相同的速度被遗忘的事物。”

RDBMS已经存在了很长时间(至少以CS术语而言),因此无论是谁说的是要说其他话还是毫无头绪。


2
我想说些别的,请参阅下面的答案。
maple_shaft


3
相对于Urbandictionary,使用真实的字典可能会更好。
亚伦诺特2011年

Aaronaught-普林斯顿大学怎么样?“随之而来的是热情和夸张的热情。” wordnetweb.princeton.edu/perl/…–
Shauna

3

RDBMS的替代品不仅是平面文件。当我在学校时,OODBMS是新事物,当我的教授将其标记为一种时尚时,他是正确的。您应该查看不同的模型并注意趋势。我已经看到人们越来越依赖OLAP,并且愿意赌一个新的多维系统,该系统可以更快地处理数据,指日可待。


是否应该“愿意成为新玩家” =>“愿意投注新玩家”?
Binary Worrier

哦,当然,以平面文件为例。这是与数据库模型的良好链接。
StuperUser 2011年

@Binary是的,并进行了编辑以反映出来。
Christopher Bibbs

3

问题是许多开发人员错误地将RDBMS与SQL等同起来。从现代标准来看,SQL是一种非常糟糕的语言。它是“关系”语言的一种有缺陷且不完整的实现(SQL根本不是真正的关系,这是问题的一部分),在过去30年中发展并不多。许多使用SQL的人几乎不了解关系模型-他们所知道的只是SQL,因此他们认为关系模型是他们沮丧的原因。


1

没有上下文,很难确定谁/为什么将RDBM视为时尚的说法。

从短期到中期(5 -10年),我认为更长的时间不会消失。RDBM提供了一种有效,有效的方法来存储,处理和检索关系数据,而这正是大多数公司的客户/订单,乘客/机票等。

还有其他替代方案,例如NoSQL,随着开放源代码项目的普及,似乎越来越流行。

作为OLAP,这些确实是(在我看来)专业的数据库,旨在使企业能够提供有关公司的及时和有用的统计信息,并在当前数据上运行“假设情况”。当然,在几乎所有情况下,这些当前数据都来自RDMB,并且经过了处理后插入到OLAP数据库中。


1

关系数据库是一种时尚,就好像微计算是一种时尚一样。


1

简单的答案是否定的。RDBMS不是时尚。当您在LinqPad网站上阅读某些内容时,请记住,它们的目的是出售其产品的许可证。


问题是,为什么它会被视为一种时尚,而不是它是否是LinqPad的宣传手段。LinqPad标准是免费的。
StuperUser 2011年

问题来自于他阅读LinqPad的宣传词。只是指出他应该带一点盐。
Tundey 2011年

不,不是的,它来自maple_shaft对程序员的评论。stackexchange.com/questions/89994/… 。LinqPad的副本用少许盐制成的,但是我很好奇开发人员是否同意这两种说法。
StuperUser 2011年

是的,LinqPad的宣传言论是,编写SQL查询RDBMS是过时的,而不是RDBMS 本身是过时的。他们正在出售一种更好的使用RDBMS的方法,而不是替代他们。
Carson63000

@StuperUser和Carson63000:明白了。我的错。
Tundey 2011年

0

Fad不是正确的词,因为它们已经存在了很长时间。我认为您可能会开始争辩说该技术非常古老,也许是时候提出下一个问题了-也许是NoSQL体系结构


0

维基业。Fad所定义的“ fad”一词如下: fad是在大批人群中发展起来的某种形式的行为,并在一定时期内受到热情的共同追捧,这通常是由于该行为以某种方式被认为是新颖的。当采用这种时尚的人数开始迅速增加时,一种时尚被称为“流行”。一旦不再具有新颖性,这种行为通常会很快消失。

由于RDBMS的追随者并没有很快消失,并且在以后的很多年中都不会消失(由于使用它的大量生产应用程序),我们不能说这是一种时尚。实际上,RDBMS的核心概念保持相当稳定,许多其他技术发生了巨大变化(并且仍在变化中)。

RDBMS(及其主要工具SQL)的概念代表了技术上的一步,就像其他许多技术一样,也可能被更好的技术所取代。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.