
# 了解数据目录、数据库和表
数据库和表是SQL作业、Spark作业场景开发的基础，在执行作业前您需要根据业务场景定义数据库和表。
![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
Flink支持动态数据类型，可以在运行时定义数据结构，不需要事先定义元数据。
#### 数据目录
"数据目录"用于"[DLI对接LakeFormation](https://support.huaweicloud.com/usermanual-dli/dli_01_0629.html)"场景下的"在DLI控制台创建LakeFormation数据目录映射"操作。目前"DLI对接LakeFormation"功能处于受限使用阶段。您需提交工单申请开通该功能，开通后才可在DLI管理控制台的SQL编辑器页面查看数据目录。
数据目录（Catalog）是元数据管理对象，它可以包含多个数据库。
DLI当前支持DLI数据目录和LakeFormation数据目录。
在DLI数据目录库下创建数据库和表请参考[在DLI控制台创建数据目录、数据库和表](https://support.huaweicloud.com/usermanual-dli/dli_01_0005.html)。
创建并使用LakeFormation元数据请参考[创建并使用LakeFormation元数据](https://support.huaweicloud.com/usermanual-dli/dli_01_0628.html)。
#### 数据库
数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。数据库通常用于存储、检索和管理结构化数据，由多个数据表组成，这些数据表通过键和索引相互关联。
#### 表
表是数据库最重要的组成部分之一，它由行和列组成。每一行代表一个数据项，每一列代表数据的一个属性或特征。表用于组织和存储特定类型的数据，使得数据可以被有效地查询和分析。
数据库是一个框架，表是其实质内容。一个数据库包含一个或者多个表。
用户可通过管理控制台或SQL语句创建数据库和表，其中SQL语句的操作方法请参见[创建数据库](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0071.html)、[创建OBS表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0076.html)和[创建DLI表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0098.html)等。本章节介绍在管理控制台创建数据库和表的操作步骤。
![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
创建数据库和表时，有权限控制，需要对其他用户授权，其他用户才可查看该用户新建的数据库和表。
#### 表的元数据
元数据（Metadata）是用来定义数据类型的数据。主要是描述数据自身信息，包含源、大小、格式或其它数据特征。数据库字段中，元数据用于诠释数据仓库的内容。
创建表时，会定义元数据，由列名、类型、列描述三列组成。
#### DLI支持创建的表类型
- **DLI表**
  DLI表是存储在DLI数据湖中的数据表。支持多种数据格式，可以存储结构化、半结构化和非结构化数据。
  DLI表的数据存储在DLI服务内部，查询性能更好，适用于对时延敏感类的业务，如交互类的查询等。
  库表管理中表的列表页面，表类型为**Managed** 的即代表**DLI表**。
  
- **OBS表**
  OBS表的数据存储在OBS上，适用于对时延不敏感的业务，如历史数据统计分析等。
  OBS表通常以对象的形式存储数据，每个对象包含数据和相关的元数据。
  库表管理中表的列表页面，表类型为**External，存储位置为OBS路径** 的即代表**OBS表**。
  
- **视图表**
  视图表（View）是一种虚拟表，它不存储实际的数据，而是根据定义的查询逻辑动态生成数据。视图通常用于简化复杂的查询，或者为不同的用户或应用提供定制化的数据视图。
  视图表可以基于一个或多个表创建，提供了一种灵活地方式来展示数据，而不影响底层数据的存储和组织。
  库表管理中表的列表页面，表类型为**View** 的即代表**视图表**。
  ![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
  View只能通过SQL语句进行创建，不能通过"创建表"页面进行创建。视图中包含的表或视图信息不可被更改，如有更改可能会造成查询失败。
  
- **跨源表**
  跨源表是指能够跨越多个数据源进行查询和分析的数据表。这种表可以整合来自不同数据源的数据，提供统一的数据视图。
  跨源表常用于数据仓库和数据湖架构中，允许用户执行跨多个数据源的复杂查询。
  库表管理中表的列表页面，表类型为**External，存储位置非OBS路径** 的即代表**跨源表**。
  
 
#### 数据库和表的约束与限制
表1DLI资源相关约束限制 
| 限制项  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| 数据库  | - "default"为内置数据库，不能创建名为"default"的数据库。  - DLI支持创建的数据库的最大数量为50个。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 数据表  | - DLI支持创建的表的最大数量为5000个。  - DLI支持创建表类型： - Managed：数据存储位置为DLI的表。  - External：数据存储位置为OBS的表。  - View：视图，视图只能通过SQL语句创建。  - 跨源表：表类型同样为External。    - 创建DLI表时不支持指定存储路径。   |
| 数据导入 | - 仅支持将OBS上的数据导入DLI或OBS中。  - 支持将OBS中CSV，Parquet，ORC，JSON和Avro格式的数据导入到在DLI中创建的表。  - 将CSV格式数据导入分区表，需在数据源中将分区列放在最后一列。  - 导入数据的编码格式仅支持UTF-8。                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 数据导出 | - 只支持将DLI表（表类型为"Managed"）中的数据导出到OBS桶中，且导出的路径必须指定到文件夹级别。  - 导出文件格式为json格式，且文本格式仅支持UTF-8。  - 支持跨账号导出数据，即B账户对A账户授权后，A账户拥有B账户OBS桶的元数据信息和权限信息的读取权限，以及路径的读写权限，则A账户可将数据导出至B账户的OBS路径中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 表管理页面
在"数据管理"页面中，单击对应数据库名称或"操作"列中的"表管理"，可进入其表管理页面。
表管理页面显示用户在当前数据库中创建所有的表，您可以查看表类型，数据存储位置等信息。表列表默认按创建时间排列，创建时间最近的表显示在最前端。
