Ecco la domanda ...
Considerando 192 trilioni di record, quali dovrebbero essere le mie considerazioni?
La mia preoccupazione principale è la velocità.
Ecco il tavolo ...
CREATE TABLE `ref` (
`id` INTEGER(13) AUTO_INCREMENT DEFAULT NOT NULL,
`rel_id` INTEGER(13) NOT NULL,
`p1` INTEGER(13) NOT NULL,
`p2` INTEGER(13) DEFAULT NULL,
`p3` INTEGER(13) DEFAULT NULL,
`s` INTEGER(13) NOT NULL,
`p4` INTEGER(13) DEFAULT NULL,
`p5` INTEGER(13) DEFAULT NULL,
`p6` INTEGER(13) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY (`s`),
KEY (`rel_id`),
KEY (`p3`),
KEY (`p4`)
);
Ecco le domande ...
SELECT id, s FROM ref WHERE red_id="$rel_id" AND p3="$p3" AND p4="$p4"
SELECT rel_id, p1, p2, p3, p4, p5, p6 FROM ref WHERE id="$id"
INSERT INTO rel (rel_id, p1, p2, p3, s, p4, p5, p6)
VALUES ("$rel_id", "$p1", "$p2", "$p3", "$s", "$p4", "$p5", "$p6")
Ecco alcune note ...
- Le SELECT verranno eseguite molto più frequentemente di INSERT. Tuttavia, ogni tanto voglio aggiungere alcune centinaia di dischi alla volta.
- Per quanto riguarda il carico, non ci sarà nulla per ore, quindi forse qualche migliaio di domande tutte in una volta.
- Non credo di poter più normalizzare (ho bisogno dei valori p in una combinazione)
- Il database nel suo insieme è molto relazionale.
- Questo sarà di gran lunga il tavolo più grande (il prossimo più grande è di circa 900k)
AGGIORNAMENTO (08/11/2010)
È interessante notare che mi è stata data una seconda opzione ...
Invece di 192 trilioni ho potuto memorizzare 2,6 * 10 ^ 16 (15 zeri, che significa 26 quadrilioni) ...
Ma in questa seconda opzione avrei solo bisogno di memorizzare un bigint (18) come indice in una tabella. Ecco fatto: solo una colonna. Quindi verificherei solo l'esistenza di un valore. Occasionalmente aggiungere record, non cancellarli mai.
Questo mi fa pensare che ci debba essere una soluzione migliore di mysql per la semplice memorizzazione dei numeri ...
Data questa seconda opzione, dovrei prenderlo o attenermi al primo ...
[modifica] Sono appena arrivate le notizie di alcuni test che sono stati eseguiti: 100 milioni di righe con questa configurazione restituiscono la query in 0,0004 secondi [/ modifica]