MySQL - hur ska jag lägga upp en google keep liknande webbsida?

Permalänk
Entusiast

MySQL - hur ska jag lägga upp en google keep liknande webbsida?

Hej, jag har länge gjort statiska webbsidor, typ portfolios och sånt. Men det börjar bli tråkigt så jag har satt tänderna i PHP och MySQL.
Planen för att bekanta mig med det är att göra en webbsida som fungerar typ som google keep: Du har din inloggning, där kan du skapa små notiser som bara du kommer åt.

Jag har med hjälp av en hög tutorials lyckats slänga ihop ett inloggningssystem med en tabell för users:

users user_id (primary key, auto increment) username (unique) password (sha1 krypterat)

Sen på webbsidan har jag någon kontroll som kollar session user_id och inkluderar antingen member- eller login-sidan, beroende på om man är inloggad eller ej.

Nu till frågan. Hur ska jag lägga upp delen av databasen som innehåller alla notes som användarna skapar? Kanske en enorm tabell där alla notes ligger på rad, kopplade till sin skapare via user_id? Skulle det fungera om man har miljontals användare? Hur gör man annars?

Jag vill göra rätt från början, så även om jag realistiskt sett blir den enda användaren så ska den vara redo för hundratals miljontals användare.

Permalänk
Medlem

Använd inte sha1, använd PHP:s password_hash() funktion som just nu använder bcrypt och automatiskt skapar ett salt. Det är rätt sätt att göra på. Fördelen med password_hash() är att den är framtidssäker, då den automatiskt väljer en långsam hash metod och en lagom mängd rundor.

Note tabellen skulle jag göra så här:

Notes
id | user_id | note

Det är rätt sätt, kommer inte bli långsamt även om du skulle ha miljontals notes.

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem
Skrivet av Blargmode:

Jag vill göra rätt från början, så även om jag realistiskt sett blir den enda användaren så ska den vara redo för hundratals miljontals användare.

Med dina kunskaper kommer du inte kuynna göra "rätt" från början. INGA företag som är stora idag har gjort rätt från början, inte "ens" Google.
Och vara redo för miljoner användare handlar inte bara om att programmera rätt.
En site där man kan läsa om hur företag skalar och bygger sina service är http://highscalability.com som kan funka som natt/toalett-tlektyr.

Några keywords : sharding och NoSQL typ.

Permalänk
Medlem
Skrivet av Sony?:

Använd inte sha1, använd PHP:s password_hash() funktion som just nu använder bcrypt och automatiskt skapar ett salt. Det är rätt sätt att göra på. Fördelen med password_hash() är att den är framtidssäker, då den automatiskt väljer en långsam hash metod och en lagom mängd rundor.

Note tabellen skulle jag göra så här:

Notes
id | user_id | note

Det är rätt sätt, kommer inte bli långsamt även om du skulle ha miljontals notes.

Och en

CREATE INDEX user_id_index on Notes(user_id);

Detta gör att mysql vet att du kommer att söka efter user_id ofta och skapar databasen för att detta ska gå fort.

Dessutom bör user_id vara definerad som FOREIGN KEY, då är du säker på att varje user_id faktiskt finns som en användare.