Mole di Dati

di il
9 risposte

Mole di Dati

Buongiorno,

chiedo a voi esperti una spiegazione.

Supponendo io dovessi progettare un nuovo DB.

Su tale DB prevedo vengano inseriti "tanti" dati.

In fase progettuale potrei pensare a partizionare alcune tabelle.

La partizione mi sarebbe utile se i dati in una tabella sono "tanti".

so che "tanti" dati e' relativo, il "tanto" puo' dipendere dall'hardware di cui dispongo e da altri fattori.

Proprio qui la mia domanda. Se io sapessi di che hardware dispongo, come potrei fare a quantificare se un set di dati sono effettivamente "tanti" (e quindi potrei partizionare), o se sono una quantita' accettabile?

grazie a tutti

9 Risposte

  • Re: Mole di Dati

    Cosa intendi per "partizionare una tabella"?
    Rispondo a naso. Quando in una tabella c'è un campo dove riscontri che "determinati valori" si ripetono spesso e volentieri, occorre creare una tabella che parli univocamente di quei dati e va relazionata alla tabella da cui sei partito...spero di aver dato un senso alla discussione...non so. Ma occorrono fare tante altre considerazioni. Ogni database ha un suo senso che può andare verso una direzione oppure in un'altra.
  • Re: Mole di Dati

    OsvaldoLaviosa ha scritto:


    Cosa intendi per "partizionare una tabella"?
    Si intende la distribuzione di dati degli indici e tabelle in più partizioni con organizzazione su file differenti e in genere su dischi diversi.
    E' una tecnica che si usa in casi di tabelle con grosse quantità di dati, tali che in condizioni normali le funzioni di modifica e lettura dati saturano la capacità di lettura/scrittura disco creando code troppo lunghe che fanno da collo di bottiglia all'intero sistema.

    informatica33 ha scritto:


    so che "tanti" dati e' relativo, il "tanto" puo' dipendere dall'hardware di cui dispongo e da altri fattori.
    Dipende dalla progettazione del db, dal sistema di database che usi (SQL Server,.. ), dall'hardware, ecc.

    Di che RDBMS si tratta? come è strutturata la tabella, campi, indici, ecc? di quanti milioni di record stiamo parlando?
  • Re: Mole di Dati

    Toki ha scritto:


    OsvaldoLaviosa ha scritto:


    Cosa intendi per "partizionare una tabella"?
    Si intende la distribuzione di dati degli indici e tabelle in più partizioni con organizzazione su file differenti e in genere su dischi diversi.
    E' una tecnica che si usa in casi di tabelle con grosse quantità di dati, tali che in condizioni normali le funzioni di modifica e lettura dati saturano la capacità di lettura/scrittura disco creando code troppo lunghe che fanno da collo di bottiglia all'intero sistema.

    informatica33 ha scritto:


    so che "tanti" dati e' relativo, il "tanto" puo' dipendere dall'hardware di cui dispongo e da altri fattori.
    Dipende dalla progettazione del db, dal sistema di database che usi (SQL Server,.. ), dall'hardware, ecc.

    Di che RDBMS si tratta? come è strutturata la tabella, campi, indici, ecc? di quanti milioni di record stiamo parlando?
    Dunque , la mia domanda era un po vaga per capire come comportarmi.

    Comunque, verosimilmente il db sara' MySQL e una tabella di circa 50Gb

    Ora, 50Gb in alcuni contesti potrebbero essere pochi, in altri no.

    Il nocciolo della domanda e' questo:
    Se supponiamo io abbia un Hardware di potenza X come faccio a capire se nGb di dati sono tanti o pochi?
  • Re: Mole di Dati

    informatica33 ha scritto:


    Se supponiamo io abbia un Hardware di potenza X come faccio a capire se nGb di dati sono tanti o pochi?
    Non è cos'ì banale.
    Di per su un sistema operativo a 64 bit hai i seguenti limiti:
    MyISAM storage limite: 256TB;
    Innodb storage limite: 64TB;

    capirai che a livello di storage non c'è nessun problema.
    Resta tutta una questione di accettabilità delle performance che dipende da troppi fattori:
    - Progettazione del db (e qui se ne vedono sempre delle belle)
    - Quali query devono essere fatte sulla tabella a regime
    - Dischi (ed eventuale tipologia di raid) su cui lavorano i file di mysql
    - Ram disponibile
    - ecc
  • Re: Mole di Dati

    Consiglio: non fasciarti la testa fin da subito. Senza esperienza/competenza sull'argomento e' praticamente inutile.
    Inizia con un modello semplice e chiaro.

    Il partizionamento puo' sempre essere fatto in seguito: ad esempio partizionamento orizzontale (un po' di record da una parte ed un po' da un'altra) oppure verticale (un po' di campi da una parte ed un po' da 'un'altra)? La scelta dipende dal tipo di informazioni contenute nella tabella.

    Ad esempio una tabella contenente dati storici puo' probabilmente essere particionata in modo orizzontale: si tengono nella tabella primaria i dati piu' utilizzati, ed in una tabella secondaria i dati usati raramente o non piu' necessari.

    Al momento, una tabella di 1TB con un semplice campo indice e query con condizione su quel campo e' come un buffetto sulla guancia per quasi tutti i DB.
  • Re: Mole di Dati

    migliorabile ha scritto:


    Il partizionamento puo' sempre essere fatto in seguito: ad esempio partizionamento orizzontale (un po' di record da una parte ed un po' da un'altra) oppure verticale (un po' di campi da una parte ed un po' da 'un'altra)? La scelta dipende dal tipo di informazioni contenute nella tabella.
    se utilizza mysql e vuole sfruttare il dbms potra' fare solo partizionamento orizzontale.

    Poi da codice puo fare tutto, ma perche' reinventare la ruota
  • Re: Mole di Dati

    Bomberdini ha scritto:


    migliorabile ha scritto:


    Il partizionamento puo' sempre essere fatto in seguito: ad esempio partizionamento orizzontale (un po' di record da una parte ed un po' da un'altra) oppure verticale (un po' di campi da una parte ed un po' da 'un'altra)? La scelta dipende dal tipo di informazioni contenute nella tabella.
    se utilizza mysql e vuole sfruttare il dbms potra' fare solo partizionamento orizzontale.

    Poi da codice puo fare tutto, ma perche' reinventare la ruota
    MySQL Supporta la keyword FEDERATED
    Aggeggio estremamente interessante se si sa usare .

    Una tabella partizionata in verticale la puoi ricostruire con un banale JOIN

    Non e' questione di codice, ma di query (vabbe' non e' generata in automatico ma va scritta a mano, ma questo e' un'altro discorso).
  • Re: Mole di Dati

    Toki ha scritto:


    informatica33 ha scritto:


    Resta tutta una questione di accettabilità delle performance che dipende da troppi fattori:
    - Progettazione del db (e qui se ne vedono sempre delle belle)
    - Quali query devono essere fatte sulla tabella a regime
    - Dischi (ed eventuale tipologia di raid) su cui lavorano i file di mysql
    - Ram disponibile
    - ecc

    ok non vi e' una metodologia standard

    grazie
  • Re: Mole di Dati

    Se vuoi postaci la porzione di schema del database con la tabella interessata cos'ì vedo se è strutturata bene o ci sono delle migliorie da fare.
Devi accedere o registrarti per scrivere nel forum
9 risposte