代码之家  ›  专栏  ›  技术社区  ›  John Pence

数据库中目录的用途是什么?如果我们的数据库没有目录,会发生什么?

  •  1
  • John Pence  · 技术社区  · 7 年前

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

    还有两个关于目录的其他问题:

    1.目录是否提高了查询速度?

    2.它是否与数据独立性有关?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Community CDub    4 年前

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

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

    特定的系统不需要元数据,它们被称为NOSQL系统。此类系统中的数据存储为 自描述数据 其中包括 数据项名称 数据值 在里面 一个结构 .

    其他问题

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

    Component modules of a DBMS and their storage interactions

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

    Three-schema architecture

    我希望这有帮助!

    (图像来自 this blogpost ,总结了关于此主题的许多有用信息)