Se memorizzare tutti i numeri o solo i loro intervalli nel database per questa applicazione

3

Sto sviluppando un'app Web ( PHP MySQL ) che venderà i numeri di cellulare in tempo reale generati dinamicamente per le aziende cellulari. Una società chiederà, per esempio, un migliaio di numeri e questa app controllerà i numeri disponibili e li fornirà.

Il numero sarà una cifra di 8 cifre. Il primo two digits del numero sarà per lo più fissato come codes specifico per una determinata azienda, il resto delle cifre verrà generato dinamicamente.

La mia domanda è se

a) I should store all the sold numbers in database, if yes then:
   i)  Separate number in separate row or
   ii) All the numbers in a single row

b) Should store range of numbers i.e 32500001-32510000

Tenendo a mente le prestazioni e la facilità di gestione dell'algoritmo, mi suggerisco gentilmente la soluzione.

    
posta Syntax Error 01.09.2014 - 17:16
fonte

2 risposte

3

a) ii) è pura idiota, cattiva stupidità. Non farlo.

a) è meglio se vuoi codificare la cosa più semplice possibile (che di solito è un "volere" molto grande).

b) è meglio se si preme per lo spazio del database o si deve assolutamente ridurre al minimo il tempo di accesso al DB, e non si preoccupa della logica aggiuntiva richiesta dal codice per recuperare i numeri. (I numeri di cellulare non sono così grandi come lo spazio dei nomi, quindi è improbabile che tu debba ottimizzare così tanto, ma ciò non può essere deciso a distanza.)

    
risposta data 01.09.2014 - 17:22
fonte
1

Dipende da qualche altro dettaglio che non dai, ad esempio la dimensione prevista dei dati. Ma in generale, molto probabilmente andrei a) i)

a) ii) sarebbe solo un'opzione se parlassi di un sistema di database che ha caratteristiche speciali per archiviare e interrogare questo come alcuni database NoSQL (e forse Postgres in una certa misura), avendo la possibilità di interrogare effettivamente questi dati e non è necessario definire migliaia di colonne che sarebbero sciocche.

a) i) ha il leggero vantaggio di memorizzare i dati così come sono effettivamente utilizzati e non è necessario duplicare le informazioni che appartengono a un "lotto" (come il proprietario) molte volte. Se memorizzi numeri singoli, dovrebbe esserci almeno una tabella "batch-header" e le singole righe numeriche sono in relazione con questo.

La complessità delle query dovrebbe essere per lo più simile. In realtà non è tanto una differenza nell'SQL risultante. (Prevedo che le query siano per lo più del tipo se un determinato intervallo è ancora gratuito o se possiede un numero specifico.)

    
risposta data 01.09.2014 - 17:32
fonte

Leggi altre domande sui tag