வீடியோ URL தரநிலைப்படுத்தல் செயல்முறை (Pipeline) உருவாக்குதல்
எனது தயாரிப்பு (production) SQLite தரவுத்தளத்தில் ஒரு வினவலை (query) இயக்கியபோது ஒரு மிகப்பெரிய சிக்கலைக் கண்டறிந்தேன்.
videos அட்டவணையில் 41,283 வரிசைகள் இருந்தன, ஆனால் 29,000 தனித்துவமான தலைப்புகள் மட்டுமே இருந்தன. நாங்கள் ஒரே வீடியோக்களை பலமுறை சேமித்து வைத்திருந்தோம்.
இது ஏன் நடந்தது? அதே YouTube வீடியோ வெவ்வேறு URL வடிவங்களில் வந்தன:
• குறுகிய இணைப்புகள் (Short links): youtu.be/ID
• டெஸ்க்டாப் இணைப்புகள்: youtube.com/watch?v=ID
• மொபைல் இணைப்புகள்: m.youtube.com/watch?v=ID
• ஷார்ட்ஸ் (Shorts): youtube.com/shorts/ID
ஒரு வீடியோ என்பது நான்கு தரவுத்தள வரிசைகளையும் நான்கு கிட்டத்தட்ட ஒரே மாதிரியான வலைப்பக்கங்களையும் குறித்தது. இது எனது க்ரால் பட்ஜெட்டை (crawl budget) வீணடித்ததுடன், Google Search Console-இல் பிழைகளையும் காட்டியது.
நான் TrendVidStream நடத்தி வருகிறேன். நாங்கள் எட்டு வெவ்வேறு பிராந்தியங்களிலிருந்து டிரெண்டிங் தரவுகளைப் பெறுகிறோம். ஒவ்வொரு பிராந்தியமும் ஒரே வைரல் வீடியோவை வெவ்வேறு URL வடிவங்களில் வெளிப்படுத்தக்கூடும்.
இதைச் சரிசெய்ய PHP 8.4 மற்றும் SQLite ஆகியவற்றைப் பயன்படுத்தி ஒரு செயல்முறையை (pipeline) உருவாக்கினேன்.
இந்தச் செயல்முறை எவ்வாறு செயல்படுகிறது என்பது இங்கே:
- பிரித்தெடுத்தல் (Extract): எந்தவொரு URL மாறுபாட்டையும் நிலையான 11-எழுத்து வீடியோ ID-யாக மாற்றவும்.
- தரநிலைப்படுத்துதல் (Normalize): அந்த ID-யிலிருந்து ஒரே ஒரு தரப்படுத்தப்பட்ட (canonical) URL-ஐ உருவாக்கவும்.
- சரிபார்த்தல் (Validate): தரவுத்தளத்தைத் தொடங்குவதற்கு முன் விரைவான சோதனைகளைச் செய்யவும்.
- அப்சர்ட் (Upsert): புதிய வரிசைகளைச் சேர்ப்பதற்குப் பதிலாக தரவை இணைக்க SQLite
UPSERT-ஐப் பயன்படுத்தவும். - வெளியிடுதல் (Emit): தேடுபொறிகள் ஒரே ஒரு URL-ஐக் கண்டறியும் வகையில் தரப்படுத்தப்பட்ட டேக்-களையும் (canonical tags) 301 ரீடைரக்ட்களையும் (redirects) சேர்க்கவும்.
முக்கிய தொழில்நுட்ப முடிவுகள்:
• துல்லியமான ஹோஸ்ட் அனுமதிப்பட்டியலை (allowlist) பயன்படுத்தவும். சப்ஃபிக்ஸ் பொருத்தம் (suffix matching) பயன்படுத்த வேண்டாம். இது பாதுகாப்பு அபாயங்களைத் தடுக்கிறது.
• ID-களை ஒருபோதும் சிறிய எழுத்துக்களாக (lowercase) மாற்ற வேண்டாம். YouTube ID-கள் எழுத்து வடிவம் சார்ந்தவை (case-sensitive). அவற்றைச் சிறிய எழுத்துக்களாக மாற்றினால் வெவ்வேறு வீடியோக்கள் ஒன்றாக இணைந்துவிடும்.
• video_id-யில் ஒரு UNIQUE கட்டுப்பாட்டைப் (constraint) பயன்படுத்தவும். இது நகல் தரவுகளுக்கு எதிரான உங்கள் வலிமையான பாதுகாப்பாகும்.
• SQLite WAL முறையைப் பயன்படுத்தவும். இது தரவுகளை எழுதுவதை வேகமாகவும் நம்பகமானதாகவும் மாற்றுகிறது.
முடிவு:
எங்களது வீடியோ அட்டவணை 41,283 வரிசைகளிலிருந்து 28,094 வரிசைகளாகக் குறைந்தது. நாங்கள் ஒரு வீடியோவையும் இழக்கவில்லை. Google Search Console பிழைகள் 412-லிருந்து 9 ஆகக் குறைந்தது. ஒரே வீடியோவை நான்கு முறை காட்டுவதை நிறுத்தியதால் தேடல் முடிவுகள் மிகவும் தெளிவாக மாறின.
பாடம் எளிமையானது: பல ஆதாரங்களிலிருந்து தரவைச் சேகரிக்கும்போது, முதலில் உங்கள் அமைப்பில் ஒரு அடையாளத்தை (identity) உருவாக்குங்கள். ஒரு நிலையான ID-யைப் பிரித்தெடுக்கவும், தரவுத்தளக் கட்டுப்பாடுகளுடன் அதை உறுதிப்படுத்தவும், மற்றும் ஒவ்வொரு எழுத்துச் செயல்பாட்டையும் (write) idempotent ஆக மாற்றவும்.
உங்களுக்கு சிக்கலான கருவிகள் தேவையில்லை. PHP மற்றும் SQLite போதுமானது.
