Byggde lojalitets- och ryktessystemet — 67 funktioner över en huvudbok i 31 tabeller, med ligor, märken och en inlösenbutik — som tar ett radlås på saldot för att stänga fönstret för dubbelspendering.
Arbetet utfört: 2025
67 funktioner över en lojalitetshuvudbok i 31 tabeller
Situation. Professionella nätverk har ett kallstartsproblem: plattformen är värd att använda när andra redan använder den, och fram till dess finns det inte mycket som lockar tillbaka. Den vanliga hävstången är ett belöningssystem — poäng för att bidra, en status som speglar anseende — vilket är lätt att beskriva och förrädiskt att bygga, för i samma stund som poäng kan spenderas är de pengar, och varje misstag som går att göra med pengar går att göra här också.
Uppgift. Bidrag måste gå att mäta och belöna, med ett saldo som inte kan spenderas två gånger.
Handling. Lojalitetsschemat omfattar 31 tabeller och 67 funktioner, med status i ytterligare 5 tabeller och 32 funktioner, och bredvid dem finns scheman för upptäckt och personalisering som avgör vad en viss medlem ser. Ovanpå huvudboken finns ligor, märken och en inlösenbutik där ett saldo blir till något verkligt. Den del som krävde omsorg är den äldsta buggen av alla: kontrollera saldot, spendera det sedan, och två anrop som kommer samtidigt klarar båda kontrollen. Varje skrivoperation tar ett radlås på plånboken innan plånboken läses, så att det andra anropet väntar på att det första ska bli klart i stället för att kapplöpa med det. Att plånboken ligger i samma databas som allt annat är det som över huvud taget gör det möjligt — saldot och det som köptes för det committas tillsammans eller inte alls.
Resultat. Bidrag mäts och belönas, och ett saldo är aritmetik i stället för en uppskattning. Radlåsning är det långsammare svaret och valdes ändå: vid trängsel kring en plånbok får transaktionerna vänta på sin tur, och alternativet är en medlem som spenderar samma poäng två gånger och någon som får stämma av det för hand efteråt.
Se tillbaka på Höll schemat korrekt genom 1 022 migreringar med en CI‑grind som bygger databasen på båda sätten — en ny installation, och en installation plus varje migrering — och fäller när de två skiljer sig åt. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.