Drizzle ORM සහ Cloudflare D1 එකතු කරගෙන දෙකේ පසුබැසීමේ වැඩ කරන ශ්රී ලාංකීය සංවර්ධකයින්, නවතම relational query API එකේ with විකල්පය ඇත්තටම කුමන SQL එකක් උත්පාදනය කරනවාදැයි සැලකිල්ලට ගෙන නැතිව සිටියා.
ඉතින්, db.query.xxx.findMany({ with: … }) භාවිතා කරන විට, එය JOIN හරහා දත්ත ගන්නවාද, නැතහොත් N+1 ප්රශ්නයකට දායක වෙනවාදැයි පරීක්ෂා කිරීමට ලොගර් එකක් සකසා, එම SQL ප්රකාශනයන් ගණනක් ලියා බැලුවා.
පරීක්ෂණයේ ප්රථම ප්රතිඵලය වන්නේ, Drizzle එක සෑම විටම එකම SQL ප්රකාශනයක් නිර්මාණය කරන බවයි. එය JOIN නොව, SELECT කොටසේ correlated subquery එකක් ලෙස json_array() සහ json_group_array() භාවිතා කරයි. මෙයින් සම්බන්ධිත වගුවේ පේළි එකට එකතු කර JSON ආකාරයෙන් ලබා දේ.
උදාහරණයක් ලෙස, membership වගුවේ user තොරතුරු with: { user: { columns: { id:true, name:true, email:true } } } ලෙස ඇතුළත් කළ විට, නිර්මාණය වූ SQL එකේ (select json_array(...)) as "user" ලෙස subquery එකක් පෙනෙයි. ඒ වගේම, organization → memberships වැනි one‑to‑many සම්බන්ධතාවයන්හි json_group_array() භාවිතා කර, ශුන්ය පේළි සඳහා coalesce(..., json_array()) මගින් හිස් array එකක් ලබා දේ.
ඒ නිසා, D1 වැනි latency‑සම්බන්ධිත cloud database එකේ query ගණන වැඩි වීමෙන් සිදුවන ප්රභාත්යය අවශ්යතාව අඩු වේ. N+1 ප්රශ්නයක් නොමැතිව, ඕනෑම ගැඹුරු nesting (උදා. organization → memberships → user) සදහාද එකම SQL ප්රකාශනයක් පමණක් ක්රියාත්මක වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලාංකීය සංවර්ධකයින්, විශ්වවිද්යාල සිසුන්, ස්ථානාධිපති ව්යාපාරිකයින් සඳහා මෙය විශාල වාසියක් ලබා දෙයි:
- ඉක්මන් ප්රතිචාර වේලාව – Cloudflare D1 හි query ගණන අඩු වීමෙන් latency අඩුවේ.
- වැඩි දත්ත ආරක්ෂාව – එක් SQL ප්රකාශනයක් තුළ subquery මගින් SQL injection අවදානම අඩු වේ.
- ඉගෙනීමේ පහසුව – ORM එකේ with විකල්පය භාවිතා කරමින් JOIN syntax නොදැනුවත් වුවත් සංකීර්ණ සම්බන්ධතා ලබා ගත හැක.
- වියදම් ඉතිරි කිරීම – අතිරේක query ගණන නොමැති බැවින් Cloudflare D1 ගාස්තු අඩු වේ.
මෙම නවීන පරිදි ORM භාවිතය, ශ්රී ලංකාවේ තාක්ෂණික ආරම්භකයන්ට ඉතා ප්රයෝජනවත් වන අතර, දේශීය සොෆ්ට්වෙයා සමාගම්වලට තාරුණ්යමය පදනමක් සපයයි.
අවසන් වශයෙන්, Drizzle ORM එකේ with විකල්පය JOIN නොව, සම්බන්ධිත subquery සහ JSON aggregation මඟින් එකම SQL ප්රකාශනයක් තුළ සියලුම දත්ත ලබා දෙන බව තහවුරු විය. මෙය ඔබේ පසුබැසීමේ කාර්ය සාධනය වැඩිදියුණු කිරීමට හොඳ මාර්ගයක් වේ.