装载和卸载数据

装载和卸载数据

这一节中的主题描述了Greenplum数据库中将数据装载进来和写出去的方法,以及如何格式化数据文件。

Greenplum数据库支持高性能的并行数据装载和卸载,并且支持对较少数据、单个文件的非并行数据导入和导出。

Greenplum数据库可以对多种类型的外部数据源读出和写入,包括文本文件、Hadoop文件系统以及Web服务器。
  • SQL命令COPY在Master主机上的一个外部文本文件和一个Greenplum数据库表之间传输数据。
  • 外部表允许用户使用如SELECTJOIN或者SORT EXTERNAL TABLE DATA等SQL命令并行地直接查询位于数据库之外的数据。用户可以为外部表创建视图。外部表常常被用在一个如CREATE TABLE table AS SELECT * FROM ext_table之类的命令中,用于装载外部数据到一个普通的数据库表中。
  • 外部Web表提供对动态数据的访问。它们背后可以是来自于用HTTP协议访问的URL的数据或者一个运行在一个或者更多Segment上的OS脚本的输出数据。
  • gpfdist工具是Greenplum数据库的并行文件分发程序。它是一个配合外部表使用的HTTP服务器,它允许Greenplum数据库的Segment并行地从多个文件系统装载外部数据。用户可以在不同的主机和网络接口上运行多个gpfdist的实例并且并行访问它们。
  • gpload工具使用一个YAML格式的控制文件使装载任务的步骤自动化。
装载数据的方法选择取决于源数据的特性-它的位置、尺寸、格式以及是否需要转换。

在最简单的情况中,SQL命令COPY从一个对Greenplum数据库Master实例可访问的文本文件中装载数据到一个表中。这样做不需要设置并且可以为较少的数据提供很好的性能。通过COPY命令,数据可以在Master主机上的单个文件和数据库之间来回复制。这限制数据集的总尺寸为外部文件所在文件系统的容量并且把数据传输限制为一个单一的文件写流。

用于大型数据集的更高效的数据装载选项利用了Greenplum数据库的MPP架构,使用Greenplum数据库的Segment并行装载数据。这些方法允许数据从多个文件系统通过多个主机上的多个NIC被装载,达到非常高的数据传输率。外部表允许用户从数据库中像访问普通数据库表一样访问外部文件。在与Greenplum数据库的并行文件分发程序gpfdist一起使用时,外部表通过使用所有的Greenplum数据库Segment来装载或卸载数据达到完全并行。

Greenplum数据库利用了Hadoop分布式文件系统的并行架构来访问其上的文件。