catalog在数据库中有什么用?如果我们的数据库没有目录会怎样?

What is the usage of catalog in Database? what would happen if our database didn't have catalog?

所以我知道目录是包含有关数据库和表等信息的地方,但我不明白它的用途是什么?就像如果我们的数据库没有目录那么会发生什么?

另外两个关于目录的问题:

1.does目录提高查询速度?

2.does跟数据独立有什么关系?

目录确实存储了数据库的所有数据,例如每个文件的结构、每个数据项的类型和存储格式以及对数据的各种约束。所有这些数据称为 meta-data.

大多数数据库系统都需要目录,因为系统引用目录来检索数据库的结构并解释用户的查询。

特定系统不需要 meta-data,它们被称为 NOSQL-systems。此类系统中的数据存储为 self-describing 数据 ,其中包括 数据项名称 数据值 一个结构中

其他问题

  1. 整个数据库系统始终引用目录,如下图所示。例如,当用户输入一个查询时,该查询首先被编译,然后进入 查询优化器 。查询优化器关注操作的重新排列和可能的重新排序、冗余的消除以及在执行期间使用有效的搜索算法。这个优化的查询然后移动到执行查询的 运行时数据库处理器 并在这样做时使用目录。它还可以将统计数据等数据存储到目录中,并且它还做了很多超出这个问题范围的其他事情。 一般来说,您确实可以说目录的使用提高了查询速度(至少在具有大量数据的大型数据库中)。

  1. 目录本身与数据独立性概念本身无关。但是,当使用 multiple-level 数据库管理系统时,目录还必须存储有关如何在各个级别之间映射请求和数据的信息。例如(在 three-schema 架构中,如下图所示),如果用户在特定视图上使用它并为此视图编写查询,则该查询必须映射到整个概念模式的新查询,这又必须映射才能与内部模式一起使用并检索存储的数据。

希望对您有所帮助!

(图片来自 this blogpost,总结了很多关于这个主题的有用信息)