设置

在开始使用外部数据包装器之前,请登录到您当前的数据库托管提供商,并获取以下连接详细信息:

  • 主机
  • 端口(通常为5432)
  • 数据库名称
  • Postgres用户
  • Postgres密码

一旦获取了这些信息,我们可以设置我们的实时外部数据包装器连接。所有以下命令都应在您的PostgresML数据库上执行。您无需在生产数据库上执行任何其他步骤。

连接

要从PostgresML连接到您的数据库,首先创建相应的SERVER:

  1. CREATE SERVER live_db
  2. FOREIGN DATA WRAPPER postgres_fdw
  3. OPTIONS (
  4. host 'Host',
  5. port 'Port',
  6. dbname 'Database name'
  7. );

用您在上一步中收集的详细信息替换Host、Port和Database name。

一旦有了SERVER,让我们对数据库进行身份验证:

  1. CREATE USER MAPPING
  2. FOR CURRENT_USER
  3. SERVER live_db
  4. OPTIONS (
  5. user 'Postgres user',
  6. password 'Postgres password'
  7. );

用在上一步中收集的详细信息替换Postgres user和Postgres password。如果一切顺利,我们将能够通过只查询一个查询来验证一切是否正常:

  1. SELECT * FROM dblink(
  2. 'live_db',
  3. 'SELECT 1 AS one'
  4. ) AS t1(one INTEGER);

现在,您可以从PostgresML数据库内执行对生产数据库的任何查询。

处理您的表格

您可以使用外部数据包装器将整个模式导入PostgresML,而不是为每个查询创建临时表格:

  1. CREATE SCHEMA live_db_tables;
  2. IMPORT FOREIGN SCHEMA public
  3. FROM SERVER live_db
  4. INTO live_db_tables;

现在,来自公共模式的所有表都在live_db_tables模式中可用。您可以读取和写入这些表,就好像它们托管在PostgresML中一样。例如,如果您有一个名为users的表格,您可以这样访问它:

  1. SELECT * FROM live_db_tables.users LIMIT 1;

就是这样,您的PostgresML数据库直接连接到您的生产数据库,您可以开始您的机器学习之旅。

加速大量访问

为了加速对数据的访问,您可以通过将其从外部表格复制到常规表格中,在PostgresML中进行缓存。以users表格为例:

  1. CREATE TABLE public.users (LIKE live_db_tables.users);
  2. INSERT INTO public.users SELECT * FROM live_db_tables.users;

这将把您的users表格中的所有行复制到PostgresML中。如果需要执行批处理作业(如生成嵌入式或训练监督模型),您将能够更快地访问它们。

导出 ML 工件

如果您想将PostresML中创建的一些工件导出到您的生产数据库,您也可以使用外部数据包装器。只需使用与上述相同的机制将它们复制过去,只不过不是从外部模式复制数据,而是从常规表格向外部模式复制数据。