非关系型数据库

问题描述 投票:0回答:2
  1. 到底什么是非关系型数据库??我听说fb、google等网站都在使用非关系型数据库那是什么

  2. 什么情况下我们应该使用非关系型数据库

  3. 非关系型数据库相对于关系型数据库有哪些优势..??

database database-design
2个回答
3
投票

客观性、db4o(开源)等被称为对象数据库,我认为你在问什么?它们不称为 RDBMS,而是称为 ODBMS。还有新的“云数据库”,但我对这些数据库不太熟悉,而且我不确定它们对每种类型的应用程序是否实用/有用,即使在遥远的将来也是如此。在这两者之间(可能)是两种主要的非 RDBMS 数据库类型。 (参见 http://en.wikipedia.org/wiki/NoSQL

对象数据库非常酷,想想像 Hibernate 这样的东西,只是速度更快,因为没有完成到 SQL 的转换。当您拥有复杂/深层的数据层次结构时,对象数据库应该会更快。 (“一般来说”它们可能也更快一点,但有一些缺点需要注意。)

对象数据库的一个缺点是它给开发人员带来了更多的工作量,有时甚至是类似 DBA 的任务。 (我猜这可能是好事,也可能是坏事。)如果您使用对象数据库,您的传统 Oracle DBA 将毫无头绪且毫无用处。一些问题包括 - (至少对于 db4o)没有真正强大的工具来帮助管理数据库(RDBMS 有大量这样的工具),不同的“模式升级”过程,并且通常它是一种不太成熟的数据库类型。如果您谈论的是大型系统,那么可扩展性可能是一个问题,而且 db4o 中还没有集群或类似的东西。 此外,为了完整起见,Adabas 或 VSAM 等较旧的遗留数据库被视为非关系型数据库。


0
投票
1:

关系型数据库的反面是线性数据库。 线性数据库看起来像这样:我们有一个(或多个)表,每个表存储不同的列表。这些表之间没有连接(关系)。表的所有属性(列)都静态连接在行/行中。在下面的例子中,约翰肯定在体育俱乐部,而爱丽丝与玛丽没有任何关系。

线性数据库:

表用户

uuid00010002
名字
约翰 体育俱乐部
玛丽 读书会

表其他

| uuid|名称 | |:-----|:-----| | 0013|杰克| | 0014|爱丽丝|



关系数据库:

此外,在关系数据库中,(甚至可以是相同的表)我们在表之间存在关系。

表用户

| uuid|名称 | |:-----|:-----| | 0001|约翰 | | 0002|玛丽 |

表格组

| uuid|名称 | |:-----|:------------| | 0037|体育俱乐部| | 0038|读书会|

为了可视化(或链接)元素的关系,我们可以有以下关系表。 UUID(通用唯一标识)表示在所有表中必须唯一的键/主键。

表relation_users_groups

| uuid| uuid 用户 | uuid 组 | |:-----|:------------|:-----------------| | 0104| 0001| 0037| | 0105| 0002| 0037| | 0106| 0002| 0038| | 0107| 0013| 0038| | 0108| 0014| 0038 |

在关系表中我们可以看到,John (0001) 在体育俱乐部 (0037) 中,而 Mary (0002) 在体育

阅读俱乐部中(0037 和 0038)。 进一步我们可以看到,我们还关联了其他用户表,并且 Jack (0013) 和 Alice (0014) 现在与 Mary 在同一个俱乐部。

最后,这意味着在关系数据库中,信息块(这些信息的粒度/大小并不重要)可以相互关联。 (非静态组合)。独立于所使用的数据库程序或查询语言。




2:

当不需要元素之间的动态关系时,可以使用非关系/线性数据库或表结构。如果应用程序的结构非常简单,则线性方法是有意义的。


3:

一个优点可能是它们更易于阅读,即使在没有前端 (GUI) 的数据库中也是如此。在上面的示例中,rel_users_groups 表很容易理解。实际上,这些表不是人类可读的,因为 UUID 是长哈希/令牌,例如 490c869e-292f-4b0a-be19-92c9dd67d4c7。

© www.soinside.com 2019 - 2024. All rights reserved.