验证 ORC 和 Parquet 数据的许可证合规性

如果从 9.1.0 之前的版本升级并且:

  • 您的数据库具有基于 ORC 或 Parquet 文件的外部表(无论是存储在 Vertica 群集本地还是存储 Hadoop 群集上)

  • 您的 Vertica 许可证有原始数据限额

在升级之前按照本主题中的步骤进行操作。

背景

Vertica 许可证可以包括原始数据限额。自 2016 年以来,Vertica 许可证允许您在外部表中使用 ORC 和 Parquet 数据。此数据始终计入您许可证中的任何原始数据限额。以前,ORC 和 Parquet 格式的数据审核通过手动方式加以处理。由于此审核并非自动运行,因此原生表和外部表中的数据总量可能会在一段时间内偷偷超过您的许可限额。

从版本 9.1.0 开始,Vertica 将自动审核外部表中的 ORC 和 Parquet 数据。此审核在您安装或升级到版本 9.1.0 后立即开始。如果 Vertica 许可证包含原始数据限额,且您在基于 Parquet 或 ORC 文件的外部表中有数据,请在升级到 Vertica 9.1.x 之前检查您的许可证合规性。验证数据库是否遵循许可条款,可避免数据库在升级后很快变得不合规。

验证 ORC 和 Parquet 的使用是否符合许可证条款

要验证您的数据使用是否符合许可证要求,请以数据库管理员身份运行以下查询:

SELECT (database_size_bytes + file_size_bytes) <= license_size_bytes
       "license_compliant?"
       FROM (SELECT database_size_bytes,
                    license_size_bytes FROM license_audits
                    WHERE audited_data='Total'
                    ORDER BY audit_end_timestamp DESC LIMIT 1) dbs,
            (SELECT sum(total_file_size_bytes) file_size_bytes
                    FROM external_table_details
                    WHERE source_format IN ('ORC', 'PARQUET')) ets;

此查询将返回以下三个值之一:

  • 如果您没有 ORC 或 Parquet 格式的外部数据,则此查询返回 0 行:

     license_compliant?
    --------------------
    (0 rows)
    

    在这种情况下,可以继续升级。

  • 如果基于 ORC 或 Parquet 格式的外部表中有数据,并且该数据不会导致您的数据库超出原始数据限额,则此查询返回 t:

     license_compliant?
    --------------------
     t
    (1 row)
    

    在这种情况下,可以继续升级。

  • 如果基于 ORC 和 Parquet 的外部表中的数据导致您的数据库超出原始数据限额,则查询返回 f:

     license_compliant?
    --------------------
     f
    (1 row)
    

    在这种情况下,请在升级之前解决合规问题。有关详细信息,请参阅下文。

解决不合规问题

如果上一部分中的查询表明您的数据库不符合许可证要求,您应该在升级之前解决此问题。可通过以下两种方法使您的数据库合规:

  • 联系 Vertica 将您的许可证升级到更大的数据大小限额。 请参阅获取许可证密钥文件

  • (从基于 ORC 和 Parquet 的外部表或 Vertica 原生表中)删除数据,使您的数据大小符合许可证要求。您始终应该备份即将从 Vertica 中删除的所有数据。丢弃外部表是用来缩小数据库的具有较小破坏性的方法,因为数据不会丢失 — 它仍然位于外部表所基于的文件中。