![]() |
Skapa en faceboook vägg med större dbfråga
Tja!
Har fått i uppdrag att bygga en liknande "wall" som Facebook. Jag vet inte hur dom har designat deras poster men jag kan tänka mig att det är ungefär såhär. wallPost_ID author_ID author_type /* account, group, site, etc.. */ content timestamp Och när man då har cirka 100 personer som man, i vårt fall, kan följa blir sgl riktigt stort. e.g. select wp.* from wallPosts wp where wp.author_ID = 2 OR wp.author_ID = 4 OR wp.author_ID = 23 OR wp.author_ID = 55 OR wp.author_ID = 233 OR wp.author_ID = 455 OR wp.author_ID = 63 OR wp.author_ID = 23 OR wp.author_ID = 342 OR wp.author_ID = 65 OR wp.author_ID = 22 OR wp.author_ID = 3 OR .... Min tanke är att de använder något caching system. Men hur cachar dom posterna? Eller hämtar dom direkt från databasen? |
Det finns en relationstabell som hanterar vänner, som man använder med fördel.
Sedan har facebook någon form av "intelligens" i sorteringen "topphändelser" som jag inte förstår mig på (tycker att den är lite märklig ibland). I en så stort system som fb måste man använda caching. Det borde de flesta sajterna ha. Sedan hur man ska konstruera cachningslogiken vet jag inte just nu. |
det går att skriva så här:
where wp.author_ID IN(2,4,5,6...) Men försök göra en kopplingstabell och joina istället, om du har dessa kolumner i en ny tabell: userID, author_ID Du kommer inte behöva caching om det inte är ett "stort" system du gör. |
Alla tider är GMT +2. Klockan är nu 11:31. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson