元数据与内省
元数据 包含有关数据库对象、结构、数据库对象源代码等方面的信息。 GoLand 使用这些信息在 数据库 工具窗口中显示对象、展示其 DDL、在代码补全时提供建议,并为其他编码辅助、导航与搜索功能提供支持。
在 GoLand 中,有两种方式可获取数据库的元数据:小型目录与 内省。
- 小型目录
对于系统架构的小型目录,系统架构的元数据已预先内省,并由 IDE 提供。 在不连接数据库且未内省系统架构的情况下,允许编写使用系统元数据的脚本。
内省
内省 是加载数据库元数据的过程。 执行内省时,会检查数据源中的结构信息,以检测表、列、例程及其他数据库对象及其属性。
仅支持对具有数据结构与目录的数据库进行内省。
默认情况下,仅内省选定在 数据库 工具窗口中显示的架构与数据库。
您可以通过在 数据库 工具窗口中选择,或在 数据源和驱动程序 对话框(Shift+Enter )中编辑数据源属性的方式,选择要进行内省并显示的架构与数据库。
选择用于内省的架构与数据库
在 数据库 工具窗口中:
要打开 数据库 工具窗口,请从主菜单中选择 。 或按 ⌘ 1 键。
在 数据库 工具窗口中,点击数据源、数据库或架构名称旁的 第 N 项,共 M 项 按钮。

在架构选择弹出窗口中,选择数据库或架构并按下 Enter。
在 数据源和驱动程序 对话框中:
要打开该对话框,请在 数据库 工具窗口中右键点击数据源,然后选择
属性。 或者,点击工具栏上的
数据源属性 图标。
在 架构 标签页的 数据源和驱动程序 对话框中,选择数据库或架构。

请注意, 对象过滤器 字段仅定义哪些对象在 数据库 工具窗口中可见,不影响内省范围。
应用更改并关闭对话框。
一旦必要的数据库与架构已完成内省,IDE 即可在脚本中将数据库对象解析到正确的上下文。 以下示例展示了对已内省与未内省架构的数据库对象解析。

尚未进行内省的
MySQL数据源。PostgreSQL数据源中唯一已内省的guest数据库。 该数据库包含四个架构,仅有public架构已被内省。在 查询控制台 中的数据库对象解析:已成功解析已内省的
guest架构,未能解析未内省的tests架构。
对于每个数据源,您还可以选择加载数据库对象源代码的架构类别。
为不同架构加载数据库对象的源代码
要选择加载数据库对象源代码的架构,请打开 数据源和驱动程序 对话框(Shift+Enter ),然后选择数据源。
在 选项 标签页内,前往 加载以下项的源代码 设置,选择架构类别。
应用更改并关闭对话框。

如处理所有对象,数据库用户可能会经历较长的内省时间,而这通常对日常工作与编程辅助而言并非必要。 为减少被内省的对象数量,GoLand 提供了额外的 内省类型 ,并在部分受支持的数据库中实现了三个 内省级别。
内省类型
内省类型定义了在内省期间将刷新哪些数据库对象。 某些数据库支持将内省范围缩小至特定对象。 在 GoLand 中,根据您的数据库,可用的内省类型包括: 完全内省、 片段内省 和 增量内省。
- 完全内省
在 数据库 工具窗口(架构选择器 )或 数据源和驱动程序 对话框(架构 选项卡 )中选定用于内省的架构与数据库将被刷新。
- 增量内省
仅刷新在上次内省后于数据库中发生变更的数据库对象。
- 片段内省
当您调用 刷新 操作时,仅刷新 数据库 工具窗口中选定的数据库对象。

当您在 查询控制台 中运行语句时,会应用 智能刷新机制。 GoLand 会分析该语句可能会修改哪些对象,仅刷新该特定对象集合。
对于某些受支持的数据库,可通过 内省级别 执行内省操作。
- 按级别进行内省
内省级别定义了检索数据库对象时的详细程度:
级别 1:仅加载数据库对象名称。
级别 2:除数据库对象的源代码外加载全部内容。
级别 3:加载全部内容。
有关内省级别的详细信息,请参阅 内省级别 主题。

如果某个数据库不支持特定类型的内省,GoLand 将执行完全内省。 以下数据库支持特定类型的内省和内省级别:
数据库 | 增量内省 | 片段内省 | 内省级别 |
|---|---|---|---|
是 | 是 | - | |
是 | - | - | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 |