Hyperdrive એ એક મેનેજ્ડ કનેક્શન-પૂલિંગ સર્વિસ છે જે Workers ને PostgreSQL ડેટાબેઝ સાથે સીધી વાત કરવા દે છે – જેમાં વેક્ટર સર્ચ માટે pgvector એક્સટેન્શનનો ઉપયોગ કરતા ડેટાબેઝનો પણ સમાવેશ થાય છે. સર્વરની નજીક ડેટાબેઝ કનેક્શનનો ફરીથી ઉપયોગ કરી શકાય તેવો સેટ રાખીને, Hyperdrive તે હેન્ડશેક ઓવરહેડને ઘટાડે છે જે લાંબા સમયથી એજ (edge) AI વર્કલોડ્સમાં અવરોધરૂપ રહ્યો છે.

Workers અને PostgreSQL વચ્ચે સમસ્યા શા માટે થાય છે

Cloudflare Workers ડઝનબંધ એજ લોકેશન પર ટૂંકા ગાળાના JavaScript ફંક્શન્સ તરીકે ચાલે છે. દરેક આવતી રિક્વેસ્ટ એક નવી પ્રોસેસ શરૂ કરે છે, અને સામાન્ય રીતે બેકએન્ડ ડેટાબેઝ સાથે નવું TCP કનેક્શન ખોલવામાં આવે છે. જોકે, PostgreSQL દરેક ક્લાયન્ટ પ્રોસેસ માટે સ્થિર કનેક્શનની અપેક્ષા રાખે છે અને એકસાથે થતા કનેક્શન્સની કુલ સંખ્યા મર્યાદિત રાખે છે. પરિણામે બે સમસ્યાઓ ઊભી થાય છે:

  • હાઈ કનેક્શન કોસ્ટ (High connection cost) – કનેક્શન સ્થાપિત કરવા માટે ઓથેન્ટિકેશન અને પ્રોટોકોલ નેગોશિએશન માટે અનેક રાઉન્ડ ટ્રિપ્સની જરૂર પડે છે. આ રાઉન્ડ ટ્રિપ્સ દરેક રિક્વેસ્ટમાં લેટન્સી (latency) વધારે છે.
  • કનેક્શન લિમિટ્સ (Connection limits) – Workers હજારો કન્કરન્ટ એક્ઝિક્યુશન સુધી સ્કેલ થઈ શકે છે, જેનાથી PostgreSQL નું કનેક્શન પૂલ ઝડપથી ખાલી થઈ શકે છે અને સંભવિત રીતે ડેટાબેઝ ક્રેશ થઈ શકે છે.

Hyperdrive કેવી રીતે આ અંતર પૂરો કરે છે

Hyperdrive એ Worker અને ડેટાબેઝ વચ્ચે કામ કરે છે, જે નેટવર્કની દૃષ્ટિએ PostgreSQL ઇન્સ્ટન્સની નજીક રહેલા સર્વર પર પર્સિસ્ટન્ટ કનેક્શન્સનું પૂલ જાળવી રાખે છે. Worker ના દૃષ્ટિકોણથી, એકમાત્ર ફેરફાર નવી કનેક્શન સ્ટ્રિંગ (connection string) છે. આંતરિક રીતે, પ્રોક્સી દરેક આવતી ક્વેરી માટે અસ્તિત્વમાં રહેલા કનેક્શનનો ફરીથી ઉપયોગ કરે છે, જેનાથી હેન્ડશેક કોસ્ટ દૂર થાય છે.

સેટઅપ જાણીજોઈને હળવું (lightweight) રાખવામાં આવ્યું છે:

  1. મૂળ ડેટાબેઝ URL આપીને Hyperdrive ઇન્સ્ટન્સ બનાવવા માટે Wrangler CLI (Cloudflare નું કમાન્ડ-લાઇન ટૂલ) ચલાવો.
  2. જનરેટ થયેલ Hyperdrive બાઈન્ડિંગને wrangler.toml કન્ફિગરેશન ફાઇલમાં ઉમેરો.
  3. Worker કોડમાં node-postgres જેવું સુસંગત ડ્રાઇવર વાપરો; ડ્રાઇવર Hyperdrive એન્ડપોઇન્ટને સામાન્ય PostgreSQL સર્વર તરીકે જુએ છે.

ડેટાબેઝ પાસવર્ડ ફક્ત Hyperdrive કન્ફિગરેશનમાં જ હોવાથી, તે ક્યારેય Worker સોર્સ કોડમાં દેખાતો નથી, જેનાથી એટેક સરફેસ (attack surface) ઘટે છે.

વેક્ટર સર્ચ માટે પ્રેક્ટિકલ ટિપ્સ

pgvector નો ઉપયોગ કરતા વેક્ટર-સર્ચ વર્કલોડ્સમાં મોટા ફ્લોટિંગ-પોઈન્ટ એરે (floating-point arrays) સામેલ હોય છે જે દરેક ક્વેરી પર બદલાતા રહે છે. Hyperdrive ના ડિફોલ્ટ બિહેવિયરમાં રીડ કેશ (read cache) શામેલ છે, જે સતત બદલાતા ડેટા સાથે ટકરાઈ શકે છે. પરિણામો તાજા રાખવા માટે, કેશિંગ ડિસેબલ કરીને બીજું Hyperdrive કન્ફિગરેશન સેટ કરો.

લાંબા સમય સુધી ચાલતા ટ્રાન્ઝેક્શન (Long-running transactions) એ બીજી એક સમસ્યા છે. એક્સટર્નલ AI મોડલના પ્રતિસાદની રાહ જોતી વખતે ડેટાબેઝ કનેક્શન પકડી રાખવાથી પૂલમાં એક સ્લોટ રોકાઈ જાય છે અને પૂલિંગનો હેતુ નિષ્ફળ જાય છે. ભલામણ કરેલ પેટર્ન આ મુજબ છે:

  • ટ્રાન્ઝેક્શન ખોલો.
  • ક્વેરી એક્ઝિક્યુટ કરો.
  • તરત જ કમિટ (Commit) કરો.
  • ટ્રાન્ઝેક્શનની બહાર AI મોડલને કોલ કરો.

pgvector પેરામીટર્સને ફાઇન-ટ્યુન કરવા (દાખલા તરીકે, સર્ચ ચોકસાઈને નિયંત્રિત કરતી hnsw.ef_search સેટિંગ) ટૂંકા ટ્રાન્ઝેક્શનની અંદર SET LOCAL સ્ટેટમેન્ટ દ્વારા કરી શકાય છે. આ સુનિશ્ચિત કરે છે કે ફેરફાર ફક્ત વર્તમાન ક્વેરી પર જ લાગુ થાય છે અને પૂલ શેર કરતા અન્ય Workers ને અસર કરતો નથી.

બાકી રહેલી મર્યાદાઓ

Hyperdrive ડેટાબેઝને પોતે રિલોકેટ કરતું નથી. જો PostgreSQL સર્વર દૂરના ક્લાઉડ રિજનમાં હોય, તો લેટન્સી હજુ પણ તે ભૌતિક અંતર દ્વારા મર્યાદિત રહેશે. Cloudflare ની “Smart Placement” ફીચર Workers ને નજીકના એજ નોડ પર રૂટ કરીને મદદ કરી શકે છે જેમાં Hyperdrive ઇન્સ્ટન્સ પણ હોય, પરંતુ તે મૂળ નેટવર્ક રાઉન્ડ-ટ્રિપને દૂર કરી શકતું નથી.

કેશિંગ લેયર, સ્થિર રીડ્સ (static reads) માટે ઉપયોગી હોવા છતાં, દરેક રિક્વેસ્ટ મુજબ બદલાતા વેક્ટર ડેટા પર વારંવાર 'miss' થશે. ડેવલપર્સે કેશ હિટ્સ (cache hits) અને સર્ચ રિઝલ્ટની તાજગી વચ્ચેના સંતુલનનો વિચાર કરવો પડશે.

વિકલ્પ ક્યારે પસંદ કરવો

જો એપ્લિકેશનને રિલેશનલ જોઇન્સ (relational joins) વગર ફક્ત શુદ્ધ વેક્ટર સ્ટોરેજની જરૂર હોય, તો Cloudflare Vectorize નામની સમર્પિત સર્વિસ ઓફર કરે છે. Vectorize એજ પર સીધા વેક્ટર્સ સ્ટોર કરે છે અને PostgreSQL બેકએન્ડની જરૂરિયાત દૂર કરે છે. જ્યારે વેક્ટર્સને યુઝર પ્રોફાઇલ અથવા ટ્રાન્ઝેક્શન હિસ્ટ્રી જેવી હાલની રિલેશનલ ટેબલ્સ સાથે જોડવાના હોય, ત્યારે Hyperdrive એ વધુ સારો વિકલ્પ રહે છે.

સારાંશ

Hyperdrive એજ ડેવલપર્સને તેમના PostgreSQL કનેક્શન લિમિટ્સ વધાર્યા વગર AI-સંચાલિત વેક્ટર સર્ચ ચલાવવા માટે એક પ્રેક્ટિકલ ટૂલ આપે છે. તે હેન્ડશેક લેટન્સી ઘટાડે છે, ક્રેડેન્શિયલ્સને કેન્દ્રીકૃત કરે છે, અને કેશિંગ તથા ટ્રાન્ઝેક્શન લંબાઈ પર ઝીણવટભર્યું નિયંત્રણ આપે છે. આ સર્વિસ એજ અને ડેટાબેઝ વચ્ચેના મૂળભૂત અંતરને દૂર કરતી નથી, અને કેશ-મિસ (cache-misses) ચિંતાનો વિષય બની રહે છે, પરંતુ એવા વર્કલોડ્સ માટે જેને રિલેશનલ જોઇન્સ અને વેક્ટર સિમિલારિટી બંનેની જરૂર છે, Hyperdrive એ સ્કેલેબલ, લો-લેટન્સી એજ સ્ટેક માટે સૌથી સીધો માર્ગ છે.