Python 关系数据库的用途是什么?

Python 关系数据库的用途是什么?,python,sql,relational-database,Python,Sql,Relational Database,通常,当人们向你宣传一种工具时,他们首先会告诉你为什么需要它,然后讨论如何使用它。关于数据库和SQL的前5本书并非如此。我真的觉得我在和宗教崇拜者说话:)。他们没有讨论:数据库的功能是什么,为什么它是这样设计的,等等。他们告诉你,你应该遵守第三范式和Codd,它的预言者 我的问题是:在哪些方面,我的网站(例如,使用PostreSQL后端作为数据存储)优于我的网站(将数据存储在哈希表中)以及使用我选择的编程语言(如pickle/中的shelve)构建的通用序列化机制 我相信答案是性能,但在这里,S

通常,当人们向你宣传一种工具时,他们首先会告诉你为什么需要它,然后讨论如何使用它。关于数据库和SQL的前5本书并非如此。我真的觉得我在和宗教崇拜者说话:)。他们没有讨论:数据库的功能是什么,为什么它是这样设计的,等等。他们告诉你,你应该遵守第三范式和Codd,它的预言者

我的问题是:在哪些方面,我的网站(例如,使用PostreSQL后端作为数据存储)优于我的网站(将数据存储在哈希表中)以及使用我选择的编程语言(如
pickle
/
中的shelve
)构建的通用序列化机制

我相信答案是性能,但在这里,SQL高手通常是含糊不清的。我想知道,什么操作成本比数据库低得多?设计如何帮助实现这一点?真的,当你在努力遵守一些规则时,你真的想知道这一切是为了什么

你能推荐一本先陈述目标,然后介绍范式、关系代数等概念,然后解释这些概念如何帮助解决目标的书吗。
谢谢,很抱歉有点咆哮。为了说明我的问题,请将上一篇wiki文章与Stanislav Lem的文章进行比较。

在我看来,这似乎是SQL与NoSQL之间的问题—在您的例子中是一个哈希表

与简单的blob存储相比,RDBMS的最大优势在于名称。关系数据库擅长存储关系。虽然BLOB存储可能是某些应用程序所需的全部,但大多数情况下,对象都有关系

例如,您可以让组中的用户和组拥有权限,在3中很容易对此进行建模。正常表单,然后检索数据,以及修改权限。如果您将每个用户都作为一个对象,并拥有其所有的组和权限,那么建立这样的模型将更加复杂。如果更改组的权限,则需要检查组中的所有用户并在其中进行编辑

就速度而言,blob存储显然会更快地检索对象,但使用SQL可以直接在数据库上执行许多操作。在读取数据之前,可以将数据修改到某一点。这减少了应用程序中的逻辑,并使整个数据处理更快,因为它直接在源代码处执行

这是SQL提供给您的,但是它并不总是必要的,有时您已经足够使用哈希表了。您需要根据自己的需求选择要使用的工具

如果您想了解RDBMS与其他存储系统之间的差异的更多细节,我认为这是一篇不错的文章:


关于为什么要使用RDBMS以及哪些功能取决于要使用的服务器的更多详细资料。每台服务器都有不同的功能丰富性和其他权衡,因此我建议您在google上问一些为什么的问题,或者查看一些包含不同RDBMS功能摘要的页面。

在我看来,这似乎是SQL与NoSQL之间的问题—在您的例子中是一个哈希表

与简单的blob存储相比,RDBMS的最大优势在于名称。关系数据库擅长存储关系。虽然BLOB存储可能是某些应用程序所需的全部,但大多数情况下,对象都有关系

例如,您可以让组中的用户和组拥有权限,在3中很容易对此进行建模。正常表单,然后检索数据,以及修改权限。如果您将每个用户都作为一个对象,并拥有其所有的组和权限,那么建立这样的模型将更加复杂。如果更改组的权限,则需要检查组中的所有用户并在其中进行编辑

就速度而言,blob存储显然会更快地检索对象,但使用SQL可以直接在数据库上执行许多操作。在读取数据之前,可以将数据修改到某一点。这减少了应用程序中的逻辑,并使整个数据处理更快,因为它直接在源代码处执行

这是SQL提供给您的,但是它并不总是必要的,有时您已经足够使用哈希表了。您需要根据自己的需求选择要使用的工具

如果您想了解RDBMS与其他存储系统之间的差异的更多细节,我认为这是一篇不错的文章:


关于为什么要使用RDBMS以及哪些功能取决于要使用的服务器的更多详细资料。每台服务器都有不同的功能丰富性和其他权衡,因此我建议您在google上问一些为什么的问题,或者查看一些包含不同RDBMS功能摘要的页面。

我认为这里有两个问题:

  • 为什么选择关系模型
  • 为什么在设计关系数据库时应用规范化原则
  • A1。在回答第一个问题时,关系模型是一种非常灵活和强大的数据抽象。它支持数据完整性规则、数据操作逻辑和特殊查询,允许用户从数据中获得有意义的结果,而无需编写大量代码,也无需承担底层技术实现细节的负担。除其他原因外,这些原因使得关系模型非常适合于非常广泛的用例

    严格来说,SQL是一种非关系数据模型,只是部分基于关系原则。然而,SQL比许多替代方法更接近关系模型。许多基本的关系思想仍然适用于SQL世界,因此SQL系统通常被归为关系和关系-