# 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.

2025

**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.

---

- Roll: Databasingenjör
- Kategorier: [Backendutveckling](https://engineer.company/sv/categories/backend/), [Databaser](https://engineer.company/sv/categories/databases/), [PostgreSQL](https://engineer.company/sv/categories/postgresql/), [SQL](https://engineer.company/sv/categories/sql/), [Prestandaoptimering](https://engineer.company/sv/categories/performance/), [Produkt och krav](https://engineer.company/sv/categories/product/)
- Tjänster: [Backend- och API‑utveckling](https://engineer.company/sv/services/backend-development/), [Databasdesign och datamodellering](https://engineer.company/sv/services/database-design/), [Produktstrategi och krav](https://engineer.company/sv/services/product-strategy/)

<https://engineer.company/sv/portfolio/built-the-loyalty-and-reputation-system-105/>
