首页 >> 知识问答

rdbms是什么(MongoDB 与传统 RDBMS 之间的主要区别是什么)

2023-12-24 知识问答 24 作者:cxvdsgrgRTR68

大家好,今天给大家分享rdbms是什么,一起来看看吧。

如果我们谈论存储结构的历史,首先想到的是文件。所以在 1960 年代,最广泛使用的存储结构是目录中的文件。这种类型的数据模型被称为层次模型。这种模型中的数据表示如下所示。

这里的数据存储在树状结构中。

这个模型有问题

应用程序设计为硬核模式,它广泛知道“电子”下有“电视”和“便携式电子”类别。在此模型上执行事务时一切正常,因为您的应用程序知道存储的类别和结构。但是假设现在需要在这个称为“手机”的存储结构中添加新的类别。在这样的事件中,整个应用程序代码将需要重组和重新编码,以使应用程序意识到现在它具有这个新类别以及可以执行哪些事务的事实。

事务是昂贵的,尤其是读事务。想象一下,搜索设备名称形成了一个 TB 的数据,但不知道该设备属于哪个类别。在这种情况下,必须遍历整个树才能找到匹配项。 (时间随着数据的增加线性增加,这很糟糕。)

所有交易都必须进行硬编码。也就是说,如果应用程序想要提供对插入、删除和更新的支持,那么所有这些查询都必须由开发人员进行广泛的编程,以提供对特定存储结构的支持。

总之,对于开发人员来说,设计具有这种存储的系统极其困难,因为他们必须进行优化以实现性能。并且还需要对整个系统进行重组和记录,以防对现有存储结构/模式进行极小的修改。所以这些类型的系统是保守的改变。这让公司损失了数百万美元,因为维护这个东西非常困难。因此,这些问题导致了称为关系数据库系统的新系统的开发。

关系型数据库管理系统

关系数据库的设计使命是通过为开发人员提供一个抽象层来简化他们的生活。 RDBMS 的数据模型是表。这些表可以通过外键相互连接,因此可以在表上执行连接。表面还具有用于搜索记录的主键。最重要的方面是模式。 Scheme 只是数据库的一种设计,它显示了给定数据库中的所有表如何相互关联。并且它还定义了与表的每一列相关联的特定类型和约束等。所有事务支持均由数据库管理系统 (DBMS) 提供。一些流行的 DBMS 是 Oracle、MySQL 等。与这些表(数据库)的交互(事务)可以使用称为 SQL 的非常简单的声明性语言(类似英语)来执行。

因此,通过模式,RDBMS 能够为开发人员提供一个抽象层。这种抽象是可能的,因为它限制了从数据库写入和检索数据的方式。例如,如果表的模式为 (id, text, text, number, number) 那么它将接受具有约束断言的相同格式的记录,如果应用程序不遵守,则它不会插入到数据库中给出一个例外。因此,存储在该系统中的数据干净、易于阅读且结构良好。结构良好是这里最重要的一点,因为现在系统了解它需要了解的所有数据,以便管理数据交易及其数据结构。因此,它可以针对各种系统进行通用设计。

RDBMS 提供的优点:

抽象

ACID 属性(保证数据的一致性、持久性、集成性和原子性)

以极其简单的查询语言提供事务支持。

对数据库模式的修改非常容易,并且节省了大量开发时间,因为应用程序不需要知道模式。 (即幕后逻辑)换句话说,它为应用程序提供了与数据无关的层次。

所有事务都经过优化以提供最高性能。 (使用“解释”查询来查看同一查询的执行流程将如何根据正在处理的数据量和数据类型而变化)

让我们不要忘记让开发人员的生活如此轻松。

它在行业中运行良好超过 30 年,每个人都知道我吨。

现在的主要问题是,如果这个系统如此出色,那么对非 RDBM(所谓的 No-SQL)有什么需要?

RDBMS 也有缺点。

RDBMS 不可扩展。 (从技术上讲,有一些解决方案叫做 Teradata,MySQL 的数据库系统,但这些解决方案仍然非常昂贵,而且当数据超过 100GB 时间性能仍然很差。)而在现代,现在一个 PB 系统上产生 PB 级数据时,100 GB 非常小。小时期。道德是,一旦每个表的数据超过 10GB,开源解决方案就不会做得很好。搜索很慢,所有其他交易都很慢。

许多应用程序不能有任何方案。应用程序的数据模型不能根据连接表来定义。例如,语言矩阵或人的个性/特征等等。 (并不是说这不能作为表格,但这样做时总会有重大的权衡,因为这样做可能会丢失必要的信息或信息的有效性可能会下降)

当涉及到大量数据时,对该系统的分析很糟糕。想象一下有 200 列的时候,您需要获得 1 列的平均值。它需要读取整个数据库才能做到这一点。 (即,每次查询 DB 所有的单个记录时都会检索所有 200 列,因为这些记录存储在磁盘上的块中,并且在查询时将检索整个块。)想象一下只有 1 TB 拿到数据并对其进行平均,如何从磁盘读取它需要多长时间?并且正在执行的操作非常简单,但是想象执行复杂的操作。

在现代世界中收集或产生的数据的结构并不像 RDBMS 所希望的那样。

这个系统不支持图像数据和视频数据存储。(我知道这是可能的,但你知道它的表现,所以我们就说不)

数据库设计决策和模式很难设计,在某些情况下可能需要数年时间才能设计。

并非每个人都了解架构,因为我在行业中经常看到,没有人记录基于架构决策和数据库设计决策的证据。 (新员工的情况)

所以需要一个不是 RDBS 和 60 年代树状的新系统。而这些新系统被称为 No-SQL。奇怪的是,他们将其命名为 No-SQL 而不是 No-relational。因为 SQL 只是一种语言,与关系 DBMS 的实现方式无关。

有了 No-SQL,就不再需要模式来存储数据。现在,应用程序可以在数据库中存储任何类型的数据,并且它旨在处理大型非结构化数据。前几个流行的系统是什么 MapReduce、CouchDB、MongoDB 和 Hadoop 等。某些系统专门针对 OLAP 而不是 OTLP。 (简而言之,它们更面向分析而不是面向事务)

好处:

最终的一致性(如果你不知道这意味着什么,或者如果有足够多的人要求,将来会具体说明。)

系统具有高度的可扩展性,旨在扩展和运行 1000 一 PC。 (许多系统将计算转化为数据,而不是将数据转化为计算,例如 map reduce)

不需要模式。能够轻松存储大型非结构化数据。

表现很好。 (每个系统都具有特定类型的性能。例如分析性、事务性等)

缺点:

没有架构。 (可能是福音也是祸根)

项目和应用程序之间不会保持标准。因此,如果所有应用程序都是用 RDBMS 设计的,那么应用程序就知道无论在哪里查询,它都会返回一些关系数据,而在 No-SQL 系统中则不然。

程序员有责任确保各种查询的性能和优化。 (虽然有优化的系统,但很多没有像 RDBMS 优化的那样优化)

MongoDB

MongoDB 是面向文档的 No-SQL 数据库。 MongoDB 中的文档与称为 JSON 数据表示与技术密切相关。 JSON 数据易于解析和处理。下面给出了 MongoDB 文档的示例。

MongoDB 是在 2007 年创建的,然后经过多年的改进。最近 MongoDB 因此对 SQL like 语言的支持而变得非常流行。大数据工具中的解决方案非常困难,尤其是 Map Reduce,因为公司没有资源来编程和维护新技术。 (当然,MapReduce 使程序员的工作变得容易,但仍然不是所有的程序员都能使用它来获得最大的效用)

如今,大数据被认为是炒作。每个人都想使用它,但没有人知道如何使用它。他们缺乏使用它所需的技能。 MongoDB 提出的解决方案帮助许多公司实施和使用大数据技术,比如我之前提到的 SQL 之类的查询语言支持。 (当然,MongoDB 对许多有些事情,我同意这一点,但您也必须将此因素视为成功因素)

如您所见,MongoDB 中的存储是面向文档的,并且没有与文档相关联的特定模式和结构。任何东西都可以添加到文档中。但是这里程序员必须确保在所有文档中维护某种类型的标准和结构,以便可以对记录进行基本查询。

要使用 SQL 在 RDBMS 重新创建数据库,您将执行以下操作。

创建数据库我的数据库;

猜猜在 MongoDB 中你会喜欢什么

使用我的数据库;

看看它有多简单?现在我不会谈论所有不同的查询并进行比较,你可以谷歌它并与 SQL 进行比较。

好处

高度可扩展

数据复制得到照顾

最终一致性

提供大数据解决方案,简单易用

没有方案

很棒的表演

良好的文档和支持

数据库管理员不必花时间设计模式。因此节省了时间和金钱。

缺点:

开发人员必须确保在整个数据库中维护某些结构。

使用大量内存。与其他 SQL 系统相比,在某些方面较慢。

希望现在你能很好地理解这些系统。

以上就是rdbms是什么的内容分享,希望对大家有用。

tags:

关于我们

利安问答,分享生活中的实用知识,信息,指南。

最火推荐

小编推荐

联系我们