Reddit'in sadə interfeysi altında iki maraqlı texniki problem gizlənir: sonsuz dərinlikdə yorum ağaclarının yüklənməsi və ana səhifədə paylaşımların sıralanması. Şirkətin yanaşması həm effektivlik, həm də qarşılıqlı fayda prinsipinə əsaslanır.
Yorum ağacları və yükləmə taktikası
Hər bir yorum istənilən digərinə cavab verə bildiyi üçün, sadə "parent_id" sahəsi ilə yükləmə çox sayda sorğu tələb edir. Bunu həll etmək üçün Reddit əvvəlcə bütün yorumları bir sorğu ilə toplayır, sonra ağacı yaddaşda qurur. Bu üsul hətta populyar mövzularda minlərlə yorumun tez yüklənməsinə imkan yaradır — bir şərtlə ki, yorumlar yaddaşla uyğun olsun.
Daha dərin yorum ağacları üçün materiallaşdırılmış yol (materialized path) və ya bağlanma cədvəli (closure table) kimi modellər istifadə olunur. Birinci model alt ağacları bir sorğu ilə çıxarmağa, ikincisi isə hər əcdad-nəsil cütlüyünü qeyd edərək yazma işlərini artırmağa əsaslanır. Seçilməsi tamamilə yazma/oxuma nisbətindən asılıdır.
İsti paylaşımların sıralanması
Reddit'in ana səhifə sıralaması zamanın təsirini nəzərə alan bir formula əsaslanır. Paylaşımın səs fərqi ilə yanaşı, yerləşdirmə vaxtı da balla ədədi birləşdirilir. Səs sayısı loqaritmik şəkildə artır, vaxt isə köhnələn postları aşağı itələyir. Bu yanaşma yeni və keyfiyyətli məzmunun tez bir zamanda yüksəlməsinə, köhnə populyarların isə tədricən aşağı düşməsinə imkan yaradır. Ballar yalnız səs dəyişdikdə yenidən hesablanır, bu da ana səhifənin ucuz xidmət etməsini təmin edir.
Öyrəniləcək dərs
Reddit'in əsas prinsipi: oxuduğun iş modelinə uyğun dizayn et. Yorumlar bir dəfə yazılır, amma daim oxunur. Bu səbəbdən yazma zamanı xərcləri qəbul edib oxuma vaxtını ucuzlaşdırmaq, sıralamanı isə hər səhifə yüklənməsində deyil, ballar dəyişdikdə yeniləmək ən optimal yanaşmadır.


