વિડિયો URL કેનોનિકલાઇઝેશન પાઇપલાઇન બનાવવી

મેં મારા પ્રોડક્શન SQLite ડેટાબેઝ પર એક ક્વેરી ચલાવી અને એક મોટી સમસ્યા શોધી.

videos ટેબલમાં 41,283 રો (rows) હતા, પરંતુ માત્ર 29,000 યુનિક (unique) ટાઇટલ હતા. અમે એક જ વિડિયોને વારંવાર સ્ટોર કરી રહ્યા હતા.

આવું શા માટે થયું? એક જ YouTube વિડિયો અલગ-અલગ URL ફોર્મેટમાં આવી રહ્યો હતો:

• શોર્ટ લિંક્સ: youtu.be/ID • ડેસ્કટોપ લિંક્સ: youtube.com/watch?v=ID • મોબાઈલ લિંક્સ: m.youtube.com/watch?v=ID • શોર્ટ્સ: youtube.com/shorts/ID

એક વિડિયોનો અર્થ ચાર ડેટાબેઝ રો અને ચાર લગભગ સમાન વેબ પેજ હતો. આના કારણે મારો ક્રોલ બજેટ (crawl budget) વેડફાયો અને Google Search Console માં ભૂલો (errors) જોવા મળી.

હું TrendVidStream ચલાવું છું. અમે આઠ અલગ-અલગ પ્રદેશોમાંથી ટ્રેન્ડિંગ ડેટા મેળવીએ છીએ. દરેક પ્રદેશ અલગ-અલગ URL ફોર્મેટનો ઉપયોગ કરીને એક જ વાયરલ વિડિયો બતાવી શકે છે.

મેં PHP 8.4 અને SQLite નો ઉપયોગ કરીને આને સુધારવા માટે એક પાઇપલાઇન બનાવી.

પાઇપલાઇન કેવી રીતે કામ કરે છે તે અહીં છે:

  1. Extract: કોઈપણ URL વેરિઅન્ટને સ્થિર 11-કેરેક્ટરના વિડિયો ID માં ફેરવો.
  2. Normalize: તે ID પરથી એક સિંગલ કેનોનિકલ (canonical) URL બનાવો.
  3. Validate: ડેટાબેઝમાં ફેરફાર કરતા પહેલા ઝડપી ચેક કરો.
  4. Upsert: નવા રો ઉમેરવાને બદલે ડેટાને મર્જ કરવા માટે SQLite UPSERT નો ઉપયોગ કરો.
  5. Emit: કેનોનિકલ ટેગ્સ અને 301 રિડાયરેક્ટ્સ ઉમેરો જેથી સર્ચ એન્જિન એક જ URL શોધી શકે.

મુખ્ય ટેકનિકલ નિર્ણયો:

• ચોક્કસ હોસ્ટ એલોલિસ્ટ (allowlist) નો ઉપયોગ કરો. સફિક્સ મેચિંગ (suffix matching) નો ઉપયોગ કરશો નહીં. આ સુરક્ષા જોખમોને અટકાવે છે. • ID ને ક્યારેય લોઅરકેસ (lowercase) ન કરો. YouTube ID કેસ-સેન્સિટિવ (case-sensitive) હોય છે. તેમને લોઅરકેસ કરવાથી અલગ-અલગ વિડિયો મર્જ થઈ જાય છે. • video_id પર UNIQUE કન્સ્ટ્રેઇન્ટ (constraint) નો ઉપયોગ કરો. ડુપ્લીકેટ્સ સામે આ તમારું સૌથી મજબૂત સંરક્ષણ છે. • SQLite WAL મોડનો ઉપયોગ કરો. આ લખવાની પ્રક્રિયા (writes) ને ઝડપી અને વિશ્વસનીય બનાવે છે.

પરિણામ:

અમારું વિડિયો ટેબલ 41,283 રો થી ઘટીને 28,094 રો થઈ ગયું. અમે એક પણ વિડિયો ગુમાવ્યો નથી. Google Search Console માં ભૂલો 412 થી ઘટીને 9 થઈ ગઈ. સર્ચ રિઝલ્ટ વધુ ચોખ્ખા બન્યા કારણ કે અમે એક જ વિડિયો ચાર વાર બતાવવાનું બંધ કરી દીધું.

પાઠ સરળ છે: જ્યારે તમે ઘણા સ્ત્રોતોમાંથી ડેટા એકત્રિત કરો છો, ત્યારે પહેલા તમારા સિસ્ટમમાં ઓળખ (identity) બનાવો. એક સ્થિર ID એક્સટ્રેક્ટ કરો, ડેટાબેઝ કન્સ્ટ્રેઇન્ટ્સ દ્વારા તેને લાગુ કરો, અને દરેક રાઈટ (write) ને આઈડેમપોટેન્ટ (idempotent) બનાવો.

તમારે જટિલ સાધનોની જરૂર નથી. PHP અને SQLite પૂરતા છે.

સ્ત્રોત: https://dev.to/ahmet_gedik778845/building-a-video-url-canonicalization-pipeline-in-php-84-with-sqlite-32ne