Hyperdrive, Workers'ın PostgreSQL veritabanlarıyla (vektör araması için pgvector eklentisini kullananlar dahil) doğrudan iletişim kurmasını sağlayan yönetilen bir bağlantı havuzu (connection-pooling) servisidir. Hyperdrive, yeniden kullanılabilir bir veritabanı bağlantıları setini sunucuya yakın tutarak, uzun süredir edge AI iş yüklerini engelleyen el sıkışma (handshake) yükünü azaltır.

Workers ve PostgreSQL neden çatışır?

Cloudflare Workers, onlarca edge konumunda kısa ömürlü JavaScript fonksiyonları olarak çalışır. Her gelen istek yeni bir süreç başlatır ve alışılagelmiş yöntem, arka uç veritabanına yeni bir TCP bağlantısı açmaktır. Ancak PostgreSQL, her istemci süreci için kararlı bir bağlantı bekler ve toplam eşzamanlı bağlantı sayısını sınırlar. Sonuç olarak iki sorun ortaya çıkar:

  • Yüksek bağlantı maliyeti – bir bağlantı kurmak, kimlik doğrulama ve protokol müzakeresi için birkaç gidiş-dönüş (round trip) gerektirir. Bu gidiş-dönüşler her isteğe gecikme (latency) ekler.
  • Bağlantı sınırları – Workers, binlerce eşzamanlı yürütmeye ölçeklenebilir; bu da PostgreSQL'in bağlantı havuzunu hızla tüketebilir ve potansiyel olarak veritabanının çökmesine neden olabilir.

Hyperdrive aradaki boşluğu nasıl doldurur?

Hyperdrive, bir Worker ile veritabanı arasında konumlanarak, ağ açısından PostgreSQL örneğine yakın bir sunucuda kalıcı bağlantılar havuzu tutar. Worker açısından tek değişiklik yeni bir bağlantı dizesidir (connection string). Proxy, dahili olarak her gelen sorgu için mevcut bir bağlantıyı yeniden kullanarak el sıkışma maliyetini ortadan kaldırır.

Kurulum kasıtlı olarak hafiftir:

  1. Orijinal veritabanı URL'sini sağlayarak bir Hyperdrive örneği oluşturmak için Wrangler CLI'yı (Cloudflare'in komut satırı aracı) çalıştırın.
  2. Oluşturulan Hyperdrive bağlamını (binding) wrangler.toml yapılandırma dosyasına ekleyin.
  3. Worker kodunda node-postgres gibi uyumlu bir sürücü kullanın; sürücü, Hyperdrive uç noktasını normal bir PostgreSQL sunucusu olarak görür.

Veritabanı şifresi yalnızca Hyperdrive yapılandırmasında bulunduğu için Worker kaynak kodunda asla görünmez, bu da saldırı yüzeyini azaltır.

Vektör araması için pratik ipuçları

pgvector kullanan vektör arama iş yükleri, her sorguda değişme eğiliminde olan büyük kayan noktalı sayı dizileri (floating-point arrays) içerir. Hyperdrive'ın varsayılan davranışı, sürekli değişen verilerle çatışabilecek bir okuma önbelleği (read cache) içerir. Sonuçların güncel kalması için önbelleğe alma özelliği devre dışı bırakılmış ikinci bir Hyperdrive yapılandırması oluşturun.

Uzun süren işlemler (transactions) bir diğer tuzaktır. Harici bir yapay zeka modeli yanıtını beklerken bir veritabanı bağlantısını açık tutmak, havuzda bir slotu işgal eder ve havuzlama amacına aykırıdır. Önerilen desen şöyledir:

  • Bir işlem (transaction) açın.
  • Sorguyu yürütün.
  • Hemen onaylayın (commit).
  • Yapay zeka modelini işlemin dışında çağırın.

pgvector parametrelerini ince ayar yapmak (örneğin, arama doğruluğunu kontrol eden hnsw.ef_search ayarı), kısa bir işlem içinde SET LOCAL ifadesiyle yapılabilir. Bu, değişikliğin yalnızca mevcut sorgu için geçerli olmasını sağlar ve havuzu paylaşan diğer Worker'ları etkilemez.

Devam eden sınırlamalar

Hyperdrive veritabanının kendisini başka bir yere taşımaz. Eğer PostgreSQL sunucusu uzak bir bulut bölgesindeyse, gecikme yine de bu fiziksel mesafe ile sınırlı kalacaktır. Cloudflare'in “Smart Placement” özelliği, Worker'ları aynı zamanda bir Hyperdrive örneğine sahip en yakın edge düğümüne yönlendirerek yardımcı olabilir, ancak alttaki ağ gidiş-dönüşünü (round-trip) ortadan kaldıramaz.

Önbelleğe alma katmanı, statik okumalar için yararlı olsa da, istek başına değişen vektör verilerinde sık sık önbellek kaçırma (cache miss) yaşayacaktır. Geliştiricilerin, önbellek isabetleri (cache hits) ile arama sonuçlarının güncelliği arasındaki dengeyi tartması gerekir.

Ne zaman bir alternatif seçilmeli?

Eğer bir uygulama ilişkisel birleştirme (relational join) gerektirmeyen saf vektör depolamaya ihtiyaç duyuyorsa, Cloudflare Vectorize adlı özel bir hizmet sunar. Vectorize, vektörleri doğrudan edge üzerinde depolar ve bir PostgreSQL arka ucuna olan ihtiyacı ortadan kaldırır. Vektörlerin kullanıcı profilleri veya işlem geçmişleri gibi mevcut ilişkisel tablolarla birleştirilmesi gerektiğinde Hyperdrive daha iyi bir seçenek olmaya devam eder.

Özet

Hyperdrive, edge geliştiricilerine PostgreSQL bağlantı sınırlarını zorlamadan yapay zeka destekli vektör aramaları yapmaları için pratik bir araç sunar. El sıkışma gecikmesini azaltır, kimlik bilgilerini merkezileştirir ve önbelleğe alma ile işlem uzunluğu üzerinde hassas kontrol sağlar. Servis, edge ile veritabanı arasındaki temel mesafeyi ortadan kaldırmaz ve önbellek kaçırmaları bir endişe kaynağı olmaya devam eder; ancak hem ilişkisel birleştirmelere hem de vektör benzerliğine ihtiyaç duyan iş yükleri için Hyperdrive, ölçeklenebilir ve düşük gecikmeli bir edge yığınına giden en doğrudan yoldur.