Легкая настройка PLV8 на PostgreSQL
Откройте для себя наш оптимизированный Docker-образ для PLV8, теперь поддерживающий PostgreSQL версии 17.0 и 16.4 на arm64 и Mac M1, M2, M3, созданный с использованием Debian/Alpine для упрощенной установки
Поддерживается на:
или
PLV8 для PostgreSQL объединяет силу JavaScript и SQL, предоставляя разработчикам гибкость, минимальное программирование, высокую производительность и безграничные возможности.
Простая установка и интеграция
Широкая архитектурная поддержка
Эффективность в экономии времени
Постоянная поддержка и обновления
Первые шаги
Этот образ устанавливается таким же образом, как стандартный образ Postgres, единственное отличие заключается в добавлении расширения PLV8.

Выполните скрипт для создания расширения:
CREATE EXTENSION plv8;
Копировать
Для скачивания образа выполните команду:
docker pull sibedge/postgres-plv8
Копироать
Для запуска контейнера на основе образа выполните команду:
docker run --name postgres-plv8 -e POSTGRES_PASSWORD=mysecretpassword -d sibedge/postgres-plv8
Копироать
Затем вы можете выполнять SQL-запрос:
DO $$
     plv8.elog(NOTICE, plv8.version);
$$ LANGUAGE plv8;
Копировать
После этого вы сможете увидеть версию установленного расширения PLV8.
Модификации образа
Из-за проблемы сериализации BigInt этот образ поставляется в двух вариантах:
стандартная сборка (по умолчанию в PLV8 v3.0.0 и выше числа BigInt преобразуются в строку)
специальная модификация с поддержкой сериализации BigInt
CREATE TABLE test
(
     id SERIAL PRIMARY KEY NOT NULL,
     comment text
);

INSERT INTO test(comment)
        
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
     RETURNS jsonb
     LANGUAGE plv8 IMMUTABLE AS
$$
        const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
        const data = plv8.execute(sql);
        return data[0];
$$;

SELECT * FROM get_count('test');

Копировать
Проверьте различия в работе:
Результаты:
sibedge/postgres-plv8: {"cnt": "2"}
sibedge/postgres-plv8-bigint: {"cnt": 2}
CREATE TABLE test
(
id SERIAL PRIMARY KEY NOT NULL,
comment text
);

INSERT INTO test(comment)
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
RETURNS jsonb
LANGUAGE plv8 IMMUTABLE AS
$$
const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
const data = plv8.execute(sql);
return data[0];
$$;

SELECT * FROM get_count('test');

Хотите запустить PLV8
на физическом или облачном сервере?
Запросите индивидуальную сборку, соответствующую вашим уникальным требованиям.
Наша команда готова создать для вас идеальное решение.
c любовью от sibedge
и благодарностью к PLV8JS Development Group и PostgreSQL