Spec-Zone.ru › DuckDB

Шифрование Parquet

Начиная с версии 0.10.0, DuckDB поддерживает чтение и запись зашифрованных файлов Parquet. DuckDB в целом следует спецификации Модульной шифрования Parquet с некоторыми ограничениями.

Чтение и запись зашифрованных файлов

С помощью функции PRAGMA add_parquet_key, можно добавлять в сеанс секретные ключи шифрования длиной 128, 192 или 256 бит. Эти ключи хранятся в оперативной памяти:

PRAGMA add_parquet_key('key128', '0123456789112345');
PRAGMA add_parquet_key('key192', '012345678911234501234567');
PRAGMA add_parquet_key('key256', '01234567891123450123456789112345');

Запись зашифрованных файлов Parquet

После указания ключа (например, key256), файлы можно зашифровать следующим образом:

COPY tbl TO 'tbl.parquet' (ENCRYPTION_CONFIG {footer_key: 'key256'});

Чтение зашифрованных файлов Parquet

Зашифрованный файл Parquet, использующий определенный ключ (например, key256), можно прочитать следующим образом:

COPY tbl FROM 'tbl.parquet' (ENCRYPTION_CONFIG {footer_key: 'key256'});

Или:

SELECT *
FROM read_parquet('tbl.parquet', encryption_config = {footer_key: 'key256'});

Ограничения

Шифрование Parquet в DuckDB в настоящее время имеет следующие ограничения.

  1. Он несовместим с шифрованием, например, PyArrow, пока не будут реализованы недостающие детали.

  2. DuckDB шифрует подпись и все столбцы с помощью footer_key. Спецификация Parquet позволяет шифровать отдельные столбцы с использованием различных ключей, например:

    COPY tbl TO 'tbl.parquet'
        (ENCRYPTION_CONFIG {
            footer_key: 'key256',
            column_keys: {key256: ['col0', 'col1']}
        });

    Однако это в настоящее время не поддерживается и вызовет ошибку (на данный момент):

    Not implemented Error: Parquet encryption_config column_keys not yet implemented

Последствия для производительности

Обратите внимание, что шифрование оказывает некоторое влияние на производительность. Без шифрования чтение/запись таблицы lineitem из TPC-H в SF1, которая содержит 6 млн строк и 15 столбцов, из/в файл Parquet занимает 0,26 и 0,99 секунды соответственно. При шифровании это занимает 0,64 и 2,21 секунды, что примерно в 2,5 раза медленнее, чем в незашифрованном варианте.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/data/parquet/encryption.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API