在 DuckDB 中,数据的组织结构遵循传统的数据库层次结构,包括 Catalog(目录)、Schema(模式)和 Table(表)。以下是对这些概念的详细解释,以及如何在 DuckDB 中使用它们。
1.Catalog(目录)
在 DuckDB 中,Catalog通常指的是一个数据库文件。每个数据库文件(如default.duckdb
)就是一个独立的 Catalog,可以包含多个 Schema 和表。
• 作用:
• 组织数据:将不同的数据对象(如表、视图、函数等)分组到不同的 Catalog 中,便于管理和访问。
• 隔离数据:不同 Catalog 中的数据是隔离的,一个 Catalog 中的数据不会影响到另一个 Catalog。
• 提供命名空间:每个 Catalog 有自己的命名空间,避免了名称冲突。
• 查看当前 Catalog:
SELECT current_database();
• 查看所有 Catalog:
SELECT * FROM duckdb_databases();
2.Schema(模式)
在 DuckDB 中,Schema是一个逻辑分组,用于组织和分类数据库对象,如表、视图、函数等。每个 Catalog 默认包含以下 Schema:
• main
:默认的用户定义对象存储位置。
• system
:包含系统表和视图。
• temp
:用于存储临时对象。
• 作用:
• 组织数据:将不同的数据对象分组到不同的 Schema 中,便于管理和访问。
• 隔离数据:不同 Schema 中的数据是隔离的,一个 Schema 中的数据不会影响到另一个 Schema。
• 提供命名空间:每个 Schema 有自己的命名空间,避免了名称冲突。
• 查看当前 Schema: