Come devo rendere più efficiente la ricerca di un database relazionale? [duplicare]

2

Questo è nell'ambito di un'applicazione web. Ho un database che ha alcune relazioni annidate. C'è una caratteristica che descrive la storia di una grande catena di relazioni. È essenzialmente una funzione di analisi dei dati. Il problema è che per poter eseguire la ricerca, è necessario caricare un grafico a oggetti di grandi dimensioni - il tempo di caricamento per questo grafico dell'oggetto non è abbastanza veloce per essere valido. Il problema è che senza caricare l'intero grafico rende quasi impossibile la ricerca da una singola stringa. Per eseguire la ricerca, è necessario specificare i campi espliciti e i dati di ricerca forniti.

Esiste uno schema di progettazione per esporre i dati in un modo che faciliti una ricerca a stringa singola invece di dover definire esplicitamente i parametri?

    
posta Travis J 12.11.2013 - 01:42
fonte

2 risposte

1

Perché non puoi semplicemente cercare le tabelle appropriate una alla volta:

term = "%" + term + "%";

"select * from some_table where first_field like :term or
                                second_field like :term"

Quindi caricare solo le parti del grafico dell'oggetto che corrispondono effettivamente ai termini di ricerca?

    
risposta data 12.11.2013 - 16:11
fonte
1

Ho affrontato in qualche modo lo stesso problema e sono giunto alla conclusione che ero come cercare di utilizzare lo strumento sbagliato per risolverlo.

Tieni presente che RDBMS è stato progettato per uno scopo di archiviazione efficiente in cui i motori di ricerca sono stati progettati per la ricerca!

L'utilizzo del DB potrebbe non essere il modo migliore per andare qui.
So di FullText Search, ma hanno MOLTE limitazioni rispetto a ciò che un motore di ricerca può fare:

  • Legato allo schema DB, legato ai dati strutturati
  • Solo le colonne basate sui caratteri sono ricercabili
  • Costoso se devi ridimensionare
  • Ogni ricerca raggiunge il DB (prestazioni, larghezza di banda, ...)

Motori di ricerca:

  • Non legato a nessuno schema / struttura
  • Ogni tipo di dati è indicizzabile / ricercabile
  • Facile da ingrandire
  • Sfaccettature e altre cose carine e pronte

Ci sono molti motori di ricerca, hanno tutti i loro pro e amp; contro (ci sono tonnellate di articoli e domande SO che ti aiuteranno a sceglierne uno a seconda della tua infrastruttura esistente, della tua lingua di programmazione o persino del tuo DB esistente).

Uno di questi è ElasticSearch . Viene fornito con un modo semplice per indicizzare automaticamente i dati provenienti da qualsiasi tipo di fonte (inclusi RDBMS come SQLServer), utilizzando ciò che chiamano fiume . ES è dotato di API Rest e utilizza il proprio store NoSQL.

Considera di dare un'occhiata a "ES - Oltre la ricerca di testo completo" che solo sono stati pubblicati!

    
risposta data 12.11.2013 - 13:57
fonte

Leggi altre domande sui tag