• User Attivo

    ottimizzare dimensione database

    Salve,
    mi accingo a realizzare una web application che dovrà gestire una discreta quantità di dati, crescente (si spera) nel tempo.
    Non ho una conoscenza "scientifica" di MySql e vorrei capire come strutturare il database per evitare sprechi di spazio.

    Ad esempio mi chiedo se sia consigliabile ricorrere agli array, in modo di memorizzare più valori in un'unico campo di una tabella (senza generare nuove righe), oppure salvare ogni valore in una nuova riga.

    Per farla breve, occupa meno spazio un database con un alto numero di righe con una bassa "mole" di dati, od uno con un basso numero di righe con una maggior "mole" di dati? O non ci sono differenze apprezzabili?

    Ovviamente la prima ipotesi consente una maggior gestibilità e semplifica la programmazione, ma non vorrei ritrovarmi con un database enorme e rallentato, tanto da dover rivedere le mie scelte.
    Ah, l'applicazione girerebbe in rete locale.

    Mi rendo conto che sono domande ingenue, ma come dicevo sono autodidatta e quindi non ho una conoscenza metodica di Mysql.


  • ModSenior

    Ciao Ministry,

    ho notato soltanto ora questo tuo thread privo di risposte e ti dico cosa penso in base alle mie esperienze pregresse.

    Il problema che poni non è banale, tuttavia considera che, se i dati crescono in maniera considerevole. conviene a maggior ragione strutturare a mio avviso da subito:

    • un database per quanto possibile più vicino alla "terza forma normale";
    • studiare i punti critici come quello che hai sollevato facendo delle scelte in funzione della tua particolare necessità

    A mio avviso preferibilmente mi sento di consigliarti di gestire molto bene le entità in gioco e incasellarle il più possibile in tabelle e record separati (Le attuali macchine hanno una potenza di calcolo che ti permettono tranquillamente di avere una tabella in più legata ad un'altra ed elaborarne i dati in una frazione di secondo).

    E' un lavoro a volte lungo e che sembra non pagare nell'immediato ma te lo ritrovi nel lungo termine (che mi sembra non sia di poco conto a fronte della tua richiesta).

    Un'ultima cosa che ti ricordo del database MySql è la scelta dei formati MyISAM o InnoDB. Non è una scelta indifferente, ognuna ha i suoi pro e contro che dovrai valutare.


  • User Attivo

    Grazie per la risposta.
    Cosa intendi per "terza forma normale"?

    Il mio dubbio, comunque, non riguarda tanto la velocità di esecuzione delle query, quanto la possibilità di scontrarmi con limiti di "spazio" o "memoria".

    Ad esempio, da quanto so (correggimi se sbaglio) un database non ha limiti di dimensione se non quelli imposti dal file system della macchina su cui gira il server. Ma a parità di dimensioni totali, conta anche il numero di record?

    Cioè, qual è il numero massimo di record che può gestire MySQL? Ci sono limiti in tal senso?
    Per meglio dire, la mia domanda ha senso? 😉


  • ModSenior

    Ciao Ministry,

    rispondo punto per punto alle tue richieste.

    per "terza forma normale" o 3FN si intende questo:
    http://it.wikipedia.org/wiki/Normalizzazione_del_database

    Per il numero di record inseriti in tabelle non ci sono limiti. I limiti di MySql (versione 5) sono:

    • massimo 61 tabelle in join tra di loro
    • 4096 colonne per tabella (o per riga > di 64Kb, leggi bene nel link che ti segnalo dopo)
    • alcune limitazioni specifiche per la versione Windows legate a questo sistema operativo
      Per approfondire puoi partire da qua: http://dev.mysql.com/doc/refman/5.0/en/limits.html

    Ultima cosa per problemi di memoria