Hyperdrive என்பது ஒரு managed connection-pooling சேவையாகும், இது Workers நேரடியாக PostgreSQL தரவுத்தளங்களுடன் — vector search-க்காக pgvector extension பயன்படுத்தும் தரவுத்தளங்கள் உட்பட — தொடர்பு கொள்ள அனுமதிக்கிறது. மீண்டும் பயன்படுத்தக்கூடிய தரவுத்தள இணைப்புகளின் தொகுப்பை (reusable set of database connections) சர்வருக்கு அருகிலேயே வைத்திருப்பதன் மூலம், Hyperdrive நீண்டகாலமாக edge AI workloads-களைத் தடுத்தி வந்த handshake overhead-ஐக் குறைக்கிறது.
Workers மற்றும் PostgreSQL ஏன் முரண்படுகின்றன
Cloudflare Workers பல டஜன் கணக்கான edge இடங்களில் குறுகிய கால JavaScript செயல்பாடுகளாக (short-lived JavaScript functions) இயங்குகின்றன. ஒவ்வொரு வரும் கோரிக்கையும் (incoming request) ஒரு புதிய செயல்முறையைத் தொடங்குகிறது, மேலும் வழக்கமான முறை என்பது backend தரவுத்தளத்திற்கு ஒரு புதிய TCP இணைப்பைத் தொடங்குவதாகும். இருப்பினும், PostgreSQL ஒவ்வொரு client process-க்கும் ஒரு நிலையான இணைப்பை எதிர்பார்க்கிறது மற்றும் மொத்த ஒத்திசைவு இணைப்புகளின் (simultaneous connections) எண்ணிக்கையை வரம்பிற்குட்படுத்தி வைக்கிறது. இதன் விளைவாக இரண்டு சிக்கல்கள் ஏற்படுகின்றன:
- அதிக இணைப்புச் செலவு (High connection cost) – ஒரு இணைப்பை ஏற்படுத்துவதற்கு அங்கீகாரம் (authentication) மற்றும் புரோட்டோகால் பேச்சுவார்த்தைக்காக (protocol negotiation) பலமுறை தரவு பரிமாற்றம் (round trips) தேவைப்படுகிறது. அந்தத் தரவுப் பரிமாற்றங்கள் ஒவ்வொரு கோரிக்கைக்கும் தாமதத்தை (latency) அதிகரிக்கின்றன.
- இணைப்பு வரம்புகள் (Connection limits) – Workers ஆயிரக்கணக்கான ஒத்திசைவுச் செயல்பாடுகளாக (concurrent executions) அளவடைய முடியும், இது PostgreSQL-ன் connection pool-ஐ விரைவாகத் தீர்த்துவிடும் மற்றும் தரவுத்தளத்தை முடக்கிவிடவும் (crashing) வாய்ப்புள்ளது.
Hyperdrive எவ்வாறு இந்த இடைவெளியைக் குறைக்கிறது
Hyperdrive, ஒரு Worker மற்றும் தரவுத்தளத்திற்கு இடையில் அமர்ந்து, PostgreSQL instance-க்கு நெட்வொர்க் ரீதியாக அருகாமையில் உள்ள ஒரு சர்வரில் நிலையான இணைப்புகளின் தொகுப்பை (pool of persistent connections) பராமரிக்கிறது. Worker-ன் பார்வையில், புதிய connection string மட்டுமே மாற்றமாக இருக்கும். உட்புறமாக, இந்த proxy ஒவ்வொரு வரும் query-க்கும் ஏற்கனவே உள்ள இணைப்பைப் பயன்படுத்துகிறது, இதனால் handshake செலவு தவிர்க்கப்படுகிறது.
அமைப்பானது (Setup) வேண்டுமென்றே எளிமையாக வடிவமைக்கப்பட்டுள்ளது:
- Wrangler CLI-ஐ (Cloudflare-ன் command-line tool) இயக்கி, அசல் தரவுத்தள URL-ஐ வழங்கி ஒரு Hyperdrive instance-ஐ உருவாக்கவும்.
- உருவாக்கப்பட்ட Hyperdrive binding-ஐ
wrangler.tomlஉள்ளமைவு கோப்பில் (configuration file) சேர்க்கவும். - Worker குறியீட்டில்
node-postgresபோன்ற இணக்கமான driver-ஐப் பயன்படுத்தவும்; இந்த driver Hyperdrive endpoint-ஐ ஒரு சாதாரண PostgreSQL server ஆகக் கருதும்.
தரவுத்தள கடவுச்சொல் Hyperdrive உள்ளமைவில் மட்டுமே இருப்பதால், அது Worker source code-ல் ஒருபோதும் தோன்றாது, இது தாக்குதல் பரப்பளவைக் (attack surface) குறைக்கிறது.
Vector search-க்கான நடைமுறை ஆலோசனைகள்
pgvector பயன்படுத்தும் vector-search workloads, ஒவ்வொரு query-க்கும் மாறக்கூடிய பெரிய floating-point arrays-களைக் கொண்டுள்ளன. Hyperdrive-ன் இயல்பான செயல்பாட்டில் ஒரு read cache உள்ளது, இது தொடர்ந்து மாறக்கூடிய தரவுகளுடன் முரண்படலாம். முடிவுகள் புத்துணர்ச்சியுடன் இருக்க, caching முடக்கப்பட்ட இரண்டாவது Hyperdrive உள்ளமைப்பை உருவாக்கவும்.
நீண்ட நேரம் நடக்கும் transactions மற்றொரு சிக்கலாகும். ஒரு வெளிப்புற AI model பதிலுக்காகக் காத்திருக்கும்போது தரவுத்தள இணைப்பைத் தக்கவைப்பது, pool-ல் ஒரு இடத்தைப் பிடித்துக்கொள்ளும் மற்றும் pooling-ன் நோக்கத்தையே சிதைத்துவிடும். பரிந்துரைக்கப்படும் முறை:
- ஒரு transaction-ஐத் திறக்கவும்.
- Query-ஐ இயக்கவும்.
- உடனடியாக commit செய்யவும்.
- Transaction-க்கு வெளியே AI model-ஐ அழைக்கவும்.
pgvector அளவுருக்களை (parameters) நுணுக்கமாகச் சரிசெய்வது (உதாரணமாக, தேடல் துல்லியத்தைக் கட்டுப்படுத்தும் hnsw.ef_search setting), ஒரு குறுகிய transaction-க்குள் SET LOCAL அறிக்கையைப் பயன்படுத்திச் செய்யப்படலாம். இது அந்த மாற்றம் தற்போதைய query-க்கு மட்டுமே பொருந்தும் என்பதையும், pool-ஐப் பகிரும் பிற Workers-ஐப் பாதிக்காது என்பதையும் உறுதி செய்கிறது.
எஞ்சியுள்ள வரம்புகள்
Hyperdrive தரவுத்தளத்தையே இடமாற்றம் செய்யாது. PostgreSQL server ஒரு தொலைதூர cloud region-ல் இருந்தால், தாமதம் (latency) அந்தப் பௌதிகத் தூரத்தால் (physical distance) கட்டுப்படுத்தப்படும். Cloudflare-ன் “Smart Placement” அம்சம், Hyperdrive instance உள்ள அருகிலுள்ள edge node-க்கு Workers-ஐ வழிநடத்துவதன் மூலம் உதவலாம், ஆனால் அது அடிப்படையான நெட்வொர்க் round-trip-ஐ நீக்க முடியாது.
Caching அடுக்கு, நிலையான வாசிப்புகளுக்கு (static reads) பயனுள்ளதாக இருந்தாலும், ஒவ்வொரு கோரிக்கைக்கும் மாறும் vector தரவுகளில் அடிக்கடி தோல்வியடையும் (miss). Cache hits மற்றும் தேடல் முடிவுகளின் புத்துணர்ச்சி ஆகியவற்றுக்கு இடையிலான சமநிலையை (trade-off) டெவலப்பர்கள் கவனிக்க வேண்டும்.
எப்போது மாற்றாகத் தேர்ந்தெடுக்க வேண்டும்
ஒரு பயன்பாட்டிற்கு relational joins இல்லாமல் தூய vector storage மட்டும் தேவைப்பட்டால், Cloudflare Vectorize என்ற பிரத்யேக சேவையை வழங்குகிறது. Vectorize, vectors-களை நேரடியாக edge-ல் சேமிக்கிறது மற்றும் PostgreSQL backend-ன் தேவையை நீக்குகிறது. பயனர் சுயவிவரங்கள் (user profiles) அல்லது பரிவர்த்தனை வரலாறுகள் (transaction histories) போன்ற ஏற்கனவே உள்ள relational tables-உடன் vectors-களை இணைக்க வேண்டியிருந்தால், Hyperdrive சிறந்த தேர்வாக இருக்கும்.
சுருக்கம்
Hyperdrive, edge டெவலப்பர்களுக்குத் தங்கள் PostgreSQL இணைப்பு வரம்புகளைத் தாண்டாமல் AI-அடிப்படையிலான vector searches-களை இயக்க ஒரு நடைமுறை கருவியைக் கொடுக்கிறது. இது handshake latency-ஐக் குறைக்கிறது, சான்றுகளை (credentials) மையப்படுத்துகிறது மற்றும் caching மற்றும் transaction நீளம் ஆகியவற்றின் மீது நுணுக்கமான கட்டுப்பாட்டை வழங்குகிறது. இந்தச் சேவை edge மற்றும் தரவுத்தளத்திற்கு இடையிலான அடிப்படைத் தூரத்தை நீக்காது, மேலும் cache-misses ஒரு கவலையாகவே இருக்கும், ஆனால் relational joins மற்றும் vector similarity ஆகிய இரண்டையும் தேவைப்படும் workloads-களுக்கு, Hyperdrive என்பது அளவிடக்கூடிய (scalable), குறைந்த தாமதமுள்ள (low-latency) edge stack-க்கான மிக நேரடியான வழியாகும்.
