ವೀಡಿಯೊ URL ಕ್ಯಾನಾನಿಕಲೈಸೇಶನ್ ಪೈಪ್‌ಲೈನ್ ನಿರ್ಮಿಸುವುದು

ನಾನು ನನ್ನ ಪ್ರೊಡಕ್ಷನ್ SQLite ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಒಂದು ಕ್ವೆರಿಯನ್ನು ರನ್ ಮಾಡಿದೆ ಮತ್ತು ಅದರಲ್ಲಿ ಒಂದು ದೊಡ್ಡ ಸಮಸ್ಯೆಯನ್ನು ಕಂಡುಕೊಂಡೆ.

ವೀಡಿಯೊಗಳ ಟೇಬಲ್‌ನಲ್ಲಿ 41,283 ಸಾಲುಗಳಿದ್ದವು, ಆದರೆ ಕೇವಲ 29,000 ವಿಶಿಷ್ಟ ಶೀರ್ಷಿಕೆಗಳಿದ್ದವು. ನಾವು ಒಂದೇ ವೀಡಿಯೊಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಸಂಗ್ರಹಿಸುತ್ತಿದ್ದೆವು.

ಇದು ಏಕೆ ಸಂಭವಿಸಿತು? ಒಂದೇ YouTube ವೀಡಿಯೊವು ವಿವಿಧ URL ಫಾರ್ಮ್ಯಾಟ್‌ಗಳಲ್ಲಿ ಬಂದಿದ್ದವು:

• ಶಾರ್ಟ್ ಲಿಂಕ್‌ಗಳು: youtu.be/ID • ಡೆಸ್ಕ್‌ಟಾಪ್ ಲಿಂಕ್‌ಗಳು: youtube.com/watch?v=ID • ಮೊಬೈಲ್ ಲಿಂಕ್‌ಗಳು: m.youtube.com/watch?v=ID • ಶಾರ್ಟ್ಸ್: youtube.com/shorts/ID

ಒಂದು ವೀಡಿಯೊ ಎಂದರೆ ನಾಲ್ಕು ಡೇಟಾಬೇಸ್ ಸಾಲುಗಳು ಮತ್ತು ನಾಲ್ಕು ಬಹುತೇಕ ಒಂದೇ ರೀತಿಯ ವೆಬ್ ಪುಟಗಳು ಎಂದರ್ಥ. ಇದು ನನ್ನ ಕ್ರಾಲ್ ಬಜೆಟ್ ಅನ್ನು ವ್ಯರ್ಥ ಮಾಡಿತು ಮತ್ತು 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: ಸರ್ಚ್ ಇಂಜಿನ್‌ಗಳು ಒಂದೇ URL ಅನ್ನು ಹುಡುಕುವಂತೆ ಮಾಡಲು ಕ್ಯಾನಾನಿಕಲ್ ಟ್ಯಾಗ್‌ಗಳು ಮತ್ತು 301 ರಿಡೈರೆಕ್ಟ್‌ಗಳನ್ನು ಸೇರಿಸಿ.

ಪ್ರಮುಖ ತಾಂತ್ರಿಕ ನಿರ್ಧಾರಗಳು:

• ನಿಖರವಾದ ಹೋಸ್ಟ್ ಅಲೋಲಿಸ್ಟ್ (allowlist) ಬಳಸಿ. ಸಫಿಕ್ಸ್ ಮ್ಯಾಚಿಂಗ್ ಬಳಸಬೇಡಿ. ಇದು ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ತಡೆಯುತ್ತದೆ. • IDಗಳನ್ನು ಎಂದಿಗೂ ಲೋಕರ್‌ಕೇಸ್ (lowercase) ಮಾಡಬೇಡಿ. YouTube IDಗಳು ಕೇಸ್-ಸೆನ್ಸಿಟಿವ್ ಆಗಿರುತ್ತವೆ. ಅವುಗಳನ್ನು ಲೋಕರ್‌ಕೇಸ್ ಮಾಡುವುದರಿಂದ ವಿಭಿನ್ನ ವೀಡಿಯೊಗಳು ಒಂದಾಗಿ ಸೇರಿಕೊಳ್ಳುತ್ತವೆ. • video_id ಮೇಲೆ UNIQUE ಕನ್‌ಸ್ಟ್ರೈಂಟ್ ಬಳಸಿ. ಇದು ಡೂಪ್ಲಿಕೇಟ್‌ಗಳ ವಿರುದ್ಧ ನಿಮ್ಮ ಅತ್ಯಂತ ಬಲವಾದ ರಕ್ಷಣೆ. • SQLite WAL ಮೋಡ್ ಬಳಸಿ. ಇದು ಬರವಣಿಗೆಯನ್ನು (writes) ವೇಗವಾಗಿ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಸುತ್ತದೆ.

ಫಲಿತಾಂಶ:

ನಮ್ಮ ವೀಡಿಯೊ ಟೇಬಲ್ 41,283 ಸಾಲುಗಳಿಂದ 28,094 ಸಾಲುಗಳಿಗೆ ಇಳಿಯಿತು. ನಾವು ಯಾವುದೇ ವೀಡಿಯೊಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಲಿಲ್ಲ. Google Search Console ದೋಷಗಳು 412 ರಿಂದ 9 ಕ್ಕೆ ಇಳಿದವು. ನಾವು ಒಂದೇ ವೀಡಿಯೊವನ್ನು ನಾಲ್ಕು ಬಾರಿ ತೋರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದ್ದರಿಂದ ಸರ್ಚ್ ರಿಸಲ್ಟ್‌ಗಳು ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾದವು.

ಪಾಠ ಸರಳವಾಗಿದೆ: ನೀವು ಅನೇಕ ಮೂಲಗಳಿಂದ ಡೇಟಾವನ್ನು ಕ್ರೋಢೀಕರಿಸುವಾಗ, ಮೊದಲು ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಗುರುತನ್ನು (identity) ನಿರ್ಮಿಸಿ. ಒಂದು ಸ್ಥಿರವಾದ ID ಅನ್ನು ಹೊರತೆಗೆಯಿರಿ, ಅದನ್ನು ಡೇಟಾಬೇಸ್ ಕನ್‌ಸ್ಟ್ರೈಂಟ್‌ಗಳೊಂದಿಗೆ ಜಾರಿಗೊಳಿಸಿ ಮತ್ತು ಪ್ರತಿಯೊಂದು ಬರವಣಿಗೆಯನ್ನು ಐಡೆಂಪೊಟೆಂಟ್ (idempotent) ಆಗಿ ಮಾಡಿ.

ನಿಮಗೆ ಸಂಕೀರ್ಣ ಪರಿಕರಗಳ ಅಗತ್ಯವಿಲ್ಲ. PHP ಮತ್ತು SQLite ಸಾಕಾಗುತ್ತವೆ.

ಮೂಲ: https://dev.to/ahmet_gedik778845/building-a-video-url-canonicalization-pipeline-in-php-84-with-sqlite-32ne