← На главную

DuckPGQ учит DuckDB искать связи и пути прямо в базе

24.07.2026 17:00 · hackernews

DuckPGQ — это расширение сообщества для DuckDB, которое добавляет поддержку графовых запросов по стандарту SQL/PGQ (SQL:2023). Вы просто устанавливаете duckpgq из community-репозитория, загружаете его — и можете строить property-графы поверх обычных таблиц DuckDB, а потом искать кратчайшие пути, общих друзей или вычислять центральность прямо в аналитической базе, без внешних графовых движков.

Расширение показывает себя на трёх сценариях. В соцсетях по типу графа snb оно находит кратчайший путь от человека с id = 14 до всех остальных через отношения knows, вытаскивает общих друзей между двумя пользователями или считает топ-3 по подписчикам. Можно одним запросом выяснить, сколько форумов заведено у самого популярного участника. В авиационных данных flight_graph узлами становятся аэропорты, рейсы, билеты и самолёты, а рёбрами — маршруты, стыковки и посадочные талоны. Финансовый граф finbench собирает в единую структуру счета, компании, кредиты и людей со связями translate, withdraw, companyGuarantee и другими, позволяя исследовать цепочки транзакций и поручительств.

Синтаксис опирается на CREATE PROPERTY GRAPH, где явно указываются таблицы вершин и таблицы рёбер с ключами источника и назначения, а также на функцию GRAPH_TABLE внутри FROM. Например, запрос FROM GRAPH_TABLE(snb MATCH p = ANY SHORTEST (p1:person WHERE p1.id = 14) -[k:knows]->* (p2:person) ...) тут же возвращает длины путей. Все вычисления работают in-process внутри DuckDB, так что вы получаете высокую производительность без лишних зависимостей и серверов.

Ведёт разработку Даниэль тен Волде, аспирант CWI и специалист по графовой аналитике. Он подчёркивает, что DuckPGQ — исследовательский проект, и в нём ещё могут встречаться баги, недописанные функции или неожиданное поведение. Команда приветствует фидбек и баг-репорты, а код открыт и бесплатен. Установить расширение можно одной командой install duckpgq from community, после чего оно готово к работе в сессии.

Читать оригинал →