Un truc que je ne pige pas de Youtube
Détail très technique pour le commun des mortels, mais pour un développeur comme moi, je n’arrive pas à comprendre pourquoi l’identification des vidéos sur YouTube se fait avec un code bizarre.
Exemples:
youtube.com/watch?v=qSbO_YHP3-w
youtube.com/watch?v=QmX-O13e1Cs
Pourquoi ne pas avoir mis simplement un numéro séquentiel? Ou encore utiliser un truc comme le URL rewriting? Qui a décidé ça et, surtout, pourquoi? Est-ce un pari que le développeur à perdu? Ou pire, qu’il a gagné? Est-ce pour la sécurité? Pour prévenir le spam? Pour faire parler inutilement les blogueurs comme moi?
Quelqu’un a une idée?
Categorie: N'importe quoi 16 comments »



Le cryptage de l’identifiant par une fonction simple et réversible permet de s’assurer de la validité du lien sans avoir à exécuter une quelconque recherche sur la BD.
De plus un numéro séquentiel permettrai de deviner l’URL d’autres objets (ce qui n’est pas forcement souhaitable).
Ha? Intéressant le truc du cryptage. C’est vrai qu’avec leur trafic, ça doit enlever plusieurs requêtes inutiles à la BD et avoir un impact significatif sur la performance.
Si les Url sont stockés en base , ce qui est forcement le cas …
Chaque octet occupé doit etre considéré a partir du moment ou l’on atteint un taille aussi grande , a mon avis 11 caracteres valent mieux que de longue url a enregistrer, et evitent les bug lié aux eventuels caracteres speciaux !
Je pense qu’effectivement, on ne peux pas prévoir l’url qu’on va avoir et ainsi éviter de trouver plus facilement les URL et surtout pour les vidéos privés. En effet, récupérer l’url est d’autant plus dûr.
Enfin, je suis d’accord avec l’analyse que ca permet d’avoir de petites URL et un peu plus homogène, car l’incrémental aurait à terme alongé les URL, et si on passait en alphanumérique on aurait eu que des URL ressemblant alors que là on est sûr d’avoir des chiffres avec des charactères.
Il y a aussi la possibilité de bloquer aussi la connaissance d’information sur le nombre réel de vidéo sur le site. L’incrémental aurait pu l’estimer.
Étant donné la grande quantité de vidéo, il était probablement plus simple d’utiliser une base 64 ou plus pour la numérotation. Ça permet donc d’identifié beaucoup plus de vidéos avec seulement quelques caractères dans l’URL.
Je n’ai pas de réponse à apporter, mais c’est vrai qu’un coup d’URL rewriting ne leur aurait pas fait de mal je pense. D’ailleurs, Dailymotion en est l’exemple parfait !
KubX, Google fera tout pour bien référencer youtube alors ils ont pas besoin d’url rewriting
Sinon moi j’aime bien ce genre d’url fantaisistes. Je pense que je vais adopter un truc similaire pour faire “cool”.
Si quelqu’un à une idée de l’algorithme qui est utilisé je suis preneur.
Pierre
Une réponse qui pourrais tenir la route :
L’encodage me fait penser aux fonctions de nom de fichier unique (“tempnam” en PHP).
Nom unique forcement sans caractere accentué et caractéres spéciaux.
Nom unique à taille fixe et pouvant ensuite servir de clé primaire sans auto-increment.
Même si je doute que ce soit la bonne réponse.
Plutot pour des raisons de la sécurité
J’pense pas mal comme Jérôme; Une fonction d’encryption reversible custom pour ne pas deviner l’id séquentiel.
@jarodxxx
Je ne crois pas que ça été fait dans le but de sauver des octets puisque cette encryption est là depuis le début et je ne crois pas que les 2 développeurs de départ est osé imaginé “hoster” des millions et des millions de vidéos.
C’est une technique utilisée au lancement des sites pour cacher les ID. Imagine si Youtube utilise des nombres séquentiels. Juste au lancement tu devrais voir 1,2,3,4 … c pas joli ! mais avec des codes tu ne peut pas savoir combien de vidéos, si t’es le premier ou le dernier … si tu veut c’est plus marketing que technique
Je connais une technique bien simple pour contrer ça : Commencer la séquence à disons, 100 000?
pcq qSbO_YHP3-w est le meilleur vidé-o- sur Y-o-utube?
J’ai déjà vu ce vidéo … supposé être un truc de sloche? Je pige pas du tout.
Peut-être est-ce aussi tout simplement une clé de “Hash coding” permettant un accès plus rapide à la BD … (je suis peut-être de la vieille école mais j’aurais surement pensé à un truc comme ça il y a une dizaine d’années)
J’avais lu un papier “MySQL Scaling and High Availability Architectures” qui expliquait le partitionnement des données stockées dans une base afin de les distribuer sur plusieurs serveurs.
L’idée est d’avoir un algorithme qui permet en fonction d’une clé d’obtenir un serveur associé.
Peut-être que Youtube utilise un système de ce genre.
Sinon concernant ce genre d’algo et d’implémentation, voici quelques liens pour les personnes interressées :
- http://www.audioscrobbler.net/development/ketama/
- last.fm/group/Programmers...journal/2007/04/10/392555
- akamai.com/dl/technical_p...potsontheworldwideweb.pdf
- www8.org/w8-papers/2a-web...erver/caching/paper2.html
- http://pdos.csail.mit.edu/chord/