Il miglior approccio per un database di stringhe lunghe


12

Devo archiviare domande e risposte in un database. Le domande saranno una o due frasi, ma le risposte saranno lunghe, almeno un paragrafo, probabilmente più.

L'unico modo che conosco per farlo adesso è un database SQL. Tuttavia, non mi sembra che questa sia una buona soluzione perché, per quanto ho visto, questi database non vengono utilizzati per dati di questo tipo o dimensione. È questo il modo corretto di procedere o esiste un modo migliore per archiviare questi dati? Esiste un modo migliore rispetto alla memorizzazione di stringhe non elaborate?



Si prega di definire "lungo" 1k, 5M, 1GB ??
James Anderson,

perché non ti piacciono le stringhe "grezze"? I dati sono in realtà stringhe o sono dati strutturati? Pensi di farci qualcosa che non funzionerebbe con le stringhe? Non c'è alcun motivo chiaro nella tua domanda perché un database non sia appropriato. Lo stesso con le stringhe (o forse CLOBS se sono troppo grandi e in base al database che si utilizza).
psr

Mi riferivo a un modo intelligente di memorizzarli, forse attraverso un qualche tipo di compressione, non stringhe di testo in chiaro. Sono preoccupato essenzialmente per le dimensioni del database qui.
gsingh2011,

1
Quale RDBMS stai usando? Oracle ha un eccellente supporto per la gestione e la ricerca di testo.
Matthew Flynn,

Risposte:


19

Mongodb è eccezionale, ma conosci SQL. Non c'è niente di sbagliato nel memorizzare lunghe risposte nei campi. Puoi archiviare immagini o persino file in SQL. Penso che la dimensione massima del campo sia di 2 GB.

Sono quasi sicuro che questa stessa risposta venga archiviata in un campo di tabella da qualche parte.

Per quanto riguarda ce ne sono migliaia, nessun problema. Anche milioni non dovrebbero essere un problema. Potresti considerare di utilizzare l'indicizzazione di testo completo se stai cercando parole chiave o qualcosa nel campo. Ma provo a non ottimizzare fino a quando non vedo un problema. I computer sono economici, lo spazio di archiviazione è sostanzialmente gratuito.


11
+1 su non ottimizzare fino a quando non hai effettivamente il problema!
GrandmasterB,

4
La dimensione massima del campo non è specificata in ANSI SQL, dipende dal DBMS (e di solito alcuni altri fattori, come set di caratteri, tipo di dati di colonna, motore di archiviazione, sistema operativo, ecc.).
martedì

6

Non vi è alcun problema nella memorizzazione di testi lunghi nei database (SQL o altro). Ecco come praticamente ogni voce del blog (pensa Wordpress), articolo di notizie e post del forum (pensa phpbb) su Internet è memorizzata. Non conosco i dettagli specifici della configurazione dello scambio di stack, ma sono sicuro che anche la tua domanda verrà archiviata in un database. La maggior parte dei database SQL ha un TEXTtipo di campo o equivalente solo allo scopo di memorizzare dati testuali di qualsiasi lunghezza. Molti hanno anche sistemi di ricerca full text in atto.

Prendi decisioni tecniche basate sulla conoscenza e sulla comprensione tecniche, non sui sentimenti.


5

Sì, è la strada giusta da percorrere. La memorizzazione di stringhe in un database SQL è ciò che si desidera fare. Una delle mie tabelle nel DB ha oltre una serie di dati in chiaro e funziona bene.

Se sei preoccupato per lo spazio di archiviazione, ricorda che è economico!

Se sei preoccupato per le prestazioni, allora non preoccuparti, un buon database può scalare (o ridurre) per quanti dati vuoi inserire.

L'ultima cosa che vuoi fare è iniziare a ottimizzare ora per il gusto di comprimerlo (comprimendo le stringhe prima di metterle nel DB o qualcosa di pazzo) prima che diventi effettivamente un problema. Ti stai solo dando più lavoro.


2

Non ci sono problemi a memorizzare stringhe di grandi dimensioni o dati binari. Ho lavorato con un database con più di un terabyte di dati binari e ho funzionato molto bene (postgres) e l'unica cosa negativa era il tempo di backup.

La grande domanda è: "Dovrai fare ricerche costanti in questo testo?"

Se stai cercando stringhe nel testo, puoi pensare in una soluzione di indice:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.