Ik gebruik op mn server nu MySQL InnoDB 3.23.46. Voldoet wel aardig voor de brakke site die erop draait. Ik wil er nu een forum mee maken.
Topics ga ik als volgt opslaan:
Wat er dus gebeurt als ik een nieuw topic post:
* Thread aanmaken
* Reply op de thread maken
Waar ik nu mee zit:
Als ik de thread gemaakt heb, heb ik dus in feite een brak topic met alleen een titel. Als er dan ineens iemand tussen komt om de topiclist van dat forum op te vragen, staat er dus een topic zonder inhoud. Ik wil dus dat zolang ik bezig ben om dat topicje te plaatsen, niemand die ene rij in de threads tabel mag zien. Lijkt me makkelijk door em te locken tegen read access, aangezien InnoDB Row-level locks heeft.
Ben ik hiermee op de goede weg, of denken jullie dat het veel beter kan/moet.
Topics ga ik als volgt opslaan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| CREATE TABLE THREADS ( ID INT(32) UNSIGNED NOT NULL AUTO_INCREMENT, SUBJECT VARCHAR(128) NOT NULL, USERNAME VARCHAR(16) NOT NULL, NUMBER_REPLIES INT(8) NULL DEFAULT 0, POST_TIME DATETIME NOT NULL, LAST_POST_TIME DATETIME NULL, READ_ONLY INT(1) NULL DEFAULT 0, HITS INT(8) NULL DEFAULT 0, PRIMARY KEY(ID), INDEX IND_USER (USERNAME), FOREIGN KEY (USERNAME) REFERENCES ACCOUNTS(USERNAME)) TYPE=INNODB; CREATE TABLE TOPICS ( ID INT(32) UNSIGNED NOT NULL AUTO_INCREMENT, USERNAME VARCHAR(16) NOT NULL, ROOT INT(32) UNSIGNED NOT NULL, POST_TIME DATETIME NOT NULL, TEXT_SOURCE TEXT NOT NULL, TEXT_PARSED TEXT NOT NULL, PRIMARY KEY(ID), INDEX IND_USER (USERNAME), INDEX IND_ROOT (ROOT), FOREIGN KEY (USERNAME) REFERENCES ACCOUNTS(USERNAME), FOREIGN KEY (ROOT) REFERENCES THREADS(ID)) TYPE=INNODB; |
Wat er dus gebeurt als ik een nieuw topic post:
* Thread aanmaken
* Reply op de thread maken
Waar ik nu mee zit:
Als ik de thread gemaakt heb, heb ik dus in feite een brak topic met alleen een titel. Als er dan ineens iemand tussen komt om de topiclist van dat forum op te vragen, staat er dus een topic zonder inhoud. Ik wil dus dat zolang ik bezig ben om dat topicje te plaatsen, niemand die ene rij in de threads tabel mag zien. Lijkt me makkelijk door em te locken tegen read access, aangezien InnoDB Row-level locks heeft.
Ben ik hiermee op de goede weg, of denken jullie dat het veel beter kan/moet.