Tecnologia DB per una ricerca efficiente nei dati tabulari?

1

Abbiamo un repository di tabelle. Circa 200 tabelle, ciascuna tabella può essere composta da migliaia di righe, tutte le tabelle sono originariamente in fogli Excel.

Ogni tabella ha uno schema diverso. Tutti i dati sono di testo o numeri.

Vogliamo creare un'applicazione che consenta la ricerca di testo libero su tutte le tabelle (definiamo quali colonne verranno cercate in ogni tabella) in modo efficiente - la velocità è importante.

Il dilemma principale è quale tecnologia DB dovremmo scegliere.

Abbiamo creato un modello importando tutte le tabelle su MS SQL Server e creando un indice di testo completo su di esse. La ricerca viene eseguita utilizzando la parola chiave CONTAINS. Questa soluzione funziona bene per un numero limitato di tabelle, ma non scala.

Abbiamo pensato a una soluzione NoSQL, ma non ne abbiamo ancora esperienza.

I nostri limiti (che purtroppo non posso effettuare): solo i server Windows. Ma possiamo installare su di loro quello che vogliamo.

    
posta KellyG 16.05.2012 - 09:53
fonte

1 risposta

1

Se dovessi seguire la rotta NoSQL, o anche se non lo fossi, ti suggerirei di guardare Lucene (ha anche un'implementazione .NET) per le vostre esigenze di indicizzazione. È un componente ad altissime prestazioni e in realtà sbadiglia ai numeri che stai citando.

Se è un po 'basso per te, guarda RavenDb. È una soluzione NoSQL che utilizza Lucene per la sua indicizzazione. È una soluzione .NET però (non hai mai menzionato quale lingua / piattaforma stai usando), se stai usando .NET, brilla davvero con il suo supporto per LINQ. Considererei un'altra alternativa (come MongoDB) se non stai usando .NET perché attualmente non ci sono client RavenDB implementati per altre piattaforme.

Direi di provarli entrambi se ne hai il tempo (sembra che tu sia ancora nella fase di prototipazione della tua applicazione). Ci sono vantaggi per ciascuno. Come ho già detto, RavenDB brilla davvero per un'applicazione .NET a causa di quanto LINQ profondamente radicato sia nella sua API. Si definiscono gli indici usando LINQ, si esegue una query con LINQ ... è roba davvero potente. MongoDB è più vecchio e può essere usato facilmente con altre piattaforme, se necessario.

Spero che questo aiuti.

    
risposta data 16.05.2012 - 14:12
fonte

Leggi altre domande sui tag