𝗧𝘂𝗿𝘀𝗼 𝗹𝗶𝗯𝗦𝗤𝗟 𝘃𝘀 𝗖𝗹𝗼𝘂𝗱𝗳𝗹𝗮𝗿𝗲 𝗗𝟭
ஒரு Astro monorepo-விற்கான தரவுத்தளத்தைத் (database) தேர்ந்தெடுப்பது உங்கள் பணிப்பாய்வைப் (workflow) பொறுத்தது.
நான் சமீபத்தில் மூன்று Astro SSG தளங்களுக்காக ஒரு பகிரப்பட்ட தரவுத்தளத்தை உருவாக்கினேன். என்னிடம் இரண்டு தேர்வுகள் இருந்தன: Turso (libSQL) அல்லது Cloudflare D1.
நான் Turso-வைத் தேர்ந்தெடுத்தேன்.
நடைமுறை ரீதியான வேறுபாடு ஏன் முக்கியமானது என்பதற்கான காரணம் இதோ.
Cloudflare D1 என்பது Cloudflare Workers-க்காக உருவாக்கப்பட்டது. நீங்கள் server-side rendering-க்காக Workers-ஐப் பயன்படுத்தினால், D1 தான் சிறந்த தேர்வு. உங்கள் குறியீடு (code) இயங்கும் இடத்திலேயே இதுவும் இருக்கும்.
எனது அமைப்பு (setup) வேறுபட்டது. எனது தளங்கள் Cloudflare Pages-இல் உள்ள static Astro 5 SSG ஆகும். நான் Workers-ஐப் பயன்படுத்துவதில்லை. எனது ETL pipeline GitHub Actions-இல் இயங்குகிறது.
GitHub Actions-லிருந்து D1-ஐப் பயன்படுத்துவது கடினம். நீங்கள் Cloudflare API அல்லது Wrangler CLI-ஐப் பயன்படுத்த வேண்டும். இவை இரண்டில் எதுவுமே மேம்படுத்தலின் (development) போது வினவ (query) ஒரு local SQLite கோப்பைத் தருவதில்லை. ஒவ்வொரு சோதனைக்கும் நீங்கள் ஒரு remote database-ஐயே அணுக வேண்டியிருக்கும்.
Turso இதை @libsql/client package மூலம் தீர்க்கிறது. இது ஒரு URL-ஐ ஏற்றுக்கொள்கிறது. அந்த URL ஒரு remote link ஆகவோ அல்லது ஒரு local file path ஆகவோ இருக்கலாம்.
எனது குறியீடு இவ்வாறு இருக்கும்:
CI-இல் URL என்பது ஒரு remote Turso link ஆகும். எனது மடிக்கணினியில், client ஒரு local கோப்பைத் திறக்கும். Package, queries மற்றும் schema ஆகியவை மாறாமல் அப்படியே இருக்கும்.
குறியீட்டுப் பாதை (code path) ஒன்றுதான்.
இது எனக்கு இதற்கெல்லாம் அனுமதிக்கிறது:
- ETL scripts-களை உள்ளூர் ரீதியாக (locally) இயக்க.
- எந்தவொரு SQLite viewer மூலமும் தரவுத்தளத்தைப் பார்வையிட.
- production-இல் பயன்படுத்தப்படும் அதே function மூலம் migrations-களை இயக்க.
எனக்கு Docker தேவையில்லை. சிறப்பு flags தேவையில்லை. ஒரே SQL எல்லா இடங்களிலும் வேலை செய்யும்.
migrations-களுக்கு நான் ஒரு idempotent அணுகுமுறையைப் பயன்படுத்துகிறேன். ஒரு அட்டவணை (table) ஏற்கனவே உள்ளதா என்பதை எனது குறியீடு சரிபார்க்கும். இது மீண்டும் மீண்டும் இயக்குவதற்குப் பாதுகாப்பானது.
நீங்கள் எப்போது D1-ஐத் தேர்ந்தெடுக்க வேண்டும்? நீங்கள் search அல்லது API routes-களுக்காக Cloudflare Workers-ஐப் பயன்படுத்தினால், D1 சிறந்தது. இது ஒரே datacenter-க்குள் இருப்பதால் இணைப்பு (connection) வேகமானது.
எனது கட்டமைப்பு (architecture) முழுமையாக static ஆனது. நான் Workers-ஐப் பயன்படுத்தாததால், D1 தனது முக்கிய நன்மையைத் இழக்கிறது.
தற்போதைய சமரசங்கள் (trade-offs):
- Write performance: எனது ETL பணிகளை ஒவ்வொன்றாகச் செய்கிறது. அதிவேகமான concurrent writes-களை நான் இன்னும் சோதிக்கவில்லை.
- Schema changes: புதிய நெடுவரிசைகளை (columns) சேர்ப்பது எளிது. நெடுவரிசைகளின் பெயர்களை மாற்றுவதற்கு அதிக கவனம் தேவை.
- Pricing: இரண்டுமே தாராளமான free tiers-களைக் கொண்டுள்ளன. மூன்று தளங்களுக்கு, எனது செலவு பூஜ்ஜியம்.
தரவுத்தளத் தேர்வு என்பது முக்கிய நோக்கம் அல்ல. local file fallback என்பதுதான் நான் Turso-வைத் தேர்ந்தெடுத்ததற்கான காரணம். இது மேம்படுத்தலை (development) எளிதாக்குகிறது.
