Hyperdrive — це керований сервіс пулінгу з'єднань, який дозволяє Workers взаємодіяти безпосередньо з базами даних PostgreSQL, зокрема з тими, що використовують розширення pgvector для векторного пошуку. Завдяки підтримці набору повторно використовуваних з'єднань з базою даних поруч із сервером, Hyperdrive зменшує накладні витрати на handshake, що тривалий час перешкоджало роботі AI-навантажень на edge.

Чому Workers та PostgreSQL конфліктують

Cloudflare Workers працюють як короткочасні JavaScript-функції у десятках edge-локацій. Кожен вхідний запит запускає новий процес, і зазвичай прийнято відкривати нове TCP-з'єднання з бекенд-базою даних. Однак PostgreSQL очікує стабільне з'єднання для кожного клієнтського процесу та обмежує загальну кількість одночасних з'єднань. Це призводить до двох проблем:

  • Висока вартість з'єднання — встановлення з'єднання потребує кількох циклів «запит-відповідь» (round trips) для автентифікації та узгодження протоколу. Ці цикли додають затримку (latency) до кожного запиту.
  • Ліміти з'єднань — Workers можуть масштабуватися до тисяч одночасних виконання, що швидко вичерпує пул з'єднань PostgreSQL і потенційно може призвести до збою бази даних.

Як Hyperdrive долає цей розрив

Hyperdrive розташовується між Worker та базою даних, підтримуючи пул постійних з'єднань на сервері, який мережево наближений до екземпляра PostgreSQL. З точки зору Worker єдина зміна — це новий рядок підключення (connection string). Внутрішньо проксі повторно використовує існуюче з'єднання для кожного вхідного запиту, усуваючи витрати на handshake.

Налаштування навмисно є максимально простим:

  1. Запустіть Wrangler CLI (інструмент командного рядка Cloudflare), щоб створити екземпляр Hyperdrive, вказавши оригінальну URL-адресу бази даних.
  2. Додайте згенерований Hyperdrive binding у конфігураційний файл wrangler.toml.
  3. Використовуйте сумісний драйвер, наприклад node-postgres, у коді Worker; драйвер сприйматиме Hyperdrive endpoint як звичайний сервер PostgreSQL.

Оскільки пароль бази даних зберігається лише в конфігурації Hyperdrive, він ніколи не з'являється у вихідному коді Worker, що зменшує поверхню атаки.

Практичні поради для векторного пошуку

Навантаження для векторного пошуку з використанням pgvector включають великі масиви чисел з плаваючою комою, які мають тенденцію змінюватися при кожному запиті. Поведінка Hyperdrive за замовчуванням включає кеш читання, що може конфліктувати з даними, які постійно змінюються. Щоб результати були актуальними, створіть другу конфігурацію Hyperdrive з вимкненим кешуванням.

Тривалі транзакції — це ще одна пастка. Утримання з'єднання з базою даних під час очікування відповіді від зовнішньої моделі AI займає слот у пулі та нівелює саму суть пулінгу. Рекомендований шаблон:

  • Відкрийте транзакцію.
  • Виконайте запит.
  • Одразу зробіть commit.
  • Викличте модель AI поза межами транзакції.

Тонке налаштування параметрів pgvector (наприклад, налаштування hnsw.ef_search, яке контролює точність пошуку) можна виконати за допомогою оператора SET LOCAL всередині короткої транзакції. Це гарантує, що зміна застосується лише до поточного запиту і не вплине на інші Workers, які використовують той самий пул.

Залишковий обмеження

Hyperdrive не переміщує саму базу даних. Якщо сервер PostgreSQL розташований у віддаленому хмарному регіоні, затримка все одно буде обмежена цією фізичною відстанню. Функція Cloudflare «Smart Placement» може допомогти, спрямовуючи Workers до найближчого edge-вузла, де також є екземпляр Hyperdrive, але вона не може усунути базовий мережевий цикл «запит-відповідь».

Шар кешування, хоч і корисний для статичного читання, часто матиме промахи (misses) на векторних даних, що змінюються з кожним запитом. Розробникам потрібно зважити компроміс між попаданнями в кеш (cache hits) та актуальністю результатів пошуку.

Коли варто обрати альтернативу

Якщо додатку потрібне лише чисте сховище векторів без реляційних об'єднань (joins), Cloudflare пропонує спеціалізований сервіс під назвою Vectorize. Vectorize зберігає вектори безпосередньо на edge і усуває потребу в бекенді PostgreSQL. Hyperdrive залишається кращим вибором, коли вектори потрібно об'єднувати з існуючими реляційними таблицями, такими як профілі користувачів або історія транзакцій.

Підсумок

Hyperdrive надає edge-розробникам практичний інструмент для виконання векторного пошуку на основі AI без перевищення лімітів з'єднань PostgreSQL. Він зменшує затримку handshake, централізує облікові дані та пропонує точний контроль над кешуванням і тривалістю транзакцій. Сервіс не усуває фундаментальну відстань між edge та базою даних, а промахи кешу залишаються фактором, що потребує уваги, але для навантажень, які потребують як реляційних об'єднань, так і векторної схожості, Hyperdrive є найпрямішим шляхом до масштабованого edge-стека з низькою затримкою.