Il co-fondatore di Reddit ha presentato una presentazione sui problemi riscontrati durante il ridimensionamento a milioni di utenti. È disponibile un riepilogo here.Database con "schema aperto" - Idea buona o cattiva?
Ciò che mi ha sorpreso è il punto 3:
Al contrario, essi mantengono una tabella cosa e una tabella di dati. Tutto in Reddit è una cosa: utenti, link, commenti, subreddit, premi, ecc. Le cose mantengono attributi comuni come voti alti/bassi, un tipo e data di creazione. La tabella Dati ha tre colonne: cosa id, chiave, valore. C'è una riga per ogni attributo. C'è una riga per titolo, url, autore, voti spam, ecc. Quando aggiungono nuove funzionalità non devono più preoccuparsi del database. Non hanno dovuto aggiungere nuovi tavoli per nuove cose o preoccuparsi degli aggiornamenti.
Questa mi sembra una pessima idea, ma sembra aver funzionato per Reddit. È una buona idea in generale, però? O è una peculiarità di Reddit che è successo a lavorare per loro?
In realtà nel discorso Huffman parla di creare report e come lo fanno esportando un gruppo di dati in un file di testo e analizzandolo altrove https://vimeo.com/10506751 m24: 50 –
Reddit ha pochi o nessuno requisiti di integrità dei dati. Non è come se stessero memorizzando valori di date o interi che devono essere compresi tra determinati intervalli o avere regole aziendali complicate. La correttezza dei dati non è molto importante per un sito come reddit; deve solo essere per lo più corretto. Tuttavia, le app LOB non sono così tolleranti rispetto all'inesattezza. Il design di Reddit è focalizzato sull'acquisizione dei dati non sulla correttezza. Tuttavia, la cosa sulla correttezza è che quando ci si preoccupa di farlo, è eccessivamente costoso non affrontarlo in anticipo. – Thomas