关系数据库有什么用途?

时间:2014-03-01 07:52:25

标签: python sql relational-database

通常,当人们向您宣传工具时,他们首先告诉您,为什么您需要它,然后讨论如何使用它。前5本关于我试过的数据库和SQL的书并非如此。这真的感觉就像我在和宗教信仰者交谈:)。他们没有讨论:数据库能够做什么,为什么设计它的设计方式等等。他们告诉你,你应该服从第3范式和Codd,它的先知。

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

我认为答案是性能,但在这个地方,SQL专家通常都是模糊的。我想知道,数据库的运营成本是多少?设计如何帮助实现这一目标?真的,当你努力遵守一些规则时,你真的想知道那是什么缘故?

你能否建议首先说明目标然后引入正常形式,关系代数等概念的阅读,然后解释这些概念如何帮助解决目标。 谢谢,抱歉有点咆哮。为了说明我的问题,请将relational databases上的wiki文章与Stanislav Lem的Sepulka进行比较。

2 个答案:

答案 0 :(得分:6)

我认为这里有两个问题:

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

    严格来说,SQL是非关系数据模型,仅部分基于关系原则。但是,SQL比许多替代方案更接近关系模型。许多基本关系思想仍然适用于SQL世界,因此SQL系统通常归入关系衍生系统和关系衍生系统的标题下。

    A2。关系数据库规范化理论及其所依赖的依赖理论构成了一组用于创建和分析数据库设计的原则。规范化原则有助于确保数据库设计准确地为您打算使用的业务规则建模。应用这些原则将帮助您避免可能出现的某些类型的数据完整性问题。

    推荐阅读:数据库系统:完整的书由Garcia-Molina,Ullman,Widom

答案 1 :(得分:1)

在我看来,这似乎是SQL与NoSQL的问题 - 在您的情况下是HashTable。

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

例如,您可以让组和组中的用户具有权限,可以在3. Normal Form中对此进行建模,然后检索数据,以及修改权限。如果你将每个用户都作为具有所有组和权限的对象,那么对这样的东西进行建模会更复杂。如果您更改组的权限,则需要检查组中的所有用户并在其中进行编辑。

就速度而言,很明显blob存储将更快地检索对象,但使用SQL可以直接在数据库上执行大量操作。您可以在阅读之前将数据修改为某个点。这减少了应用程序中的逻辑,并使整个数据处理更快,因为它直接在源头执行。

这就是SQL给你的东西,但它并不总是必要的,有时你对哈希表足够了。您需要根据自己的要求选择要使用的工具。

如果您想了解RDBMS与其他存储系统之间差异的更多细节,我觉得这篇文章很好:RDBMS vs. NoSQL: How do you pick?

有关使用RDBMS的原因以及这些功能依赖于您要使用的服务器的详细信息。每个服务器都有不同的功能丰富性和其他权衡,所以我建议你在谷歌上询问一些为什么 - 问题,或者查看一些包含不同RDBMS功能摘要的页面。