Quale paradigma di database è suggerito per un sito con funzionalità di ricerca?

3

Attualmente sto cercando di selezionare il miglior paradigma di DB per implementare un sito web con funzionalità di ricerca ricerca full-text e ricerca sfaccettata . Ho un importante requisito funzionale:

Il paradigma del database dovrebbe supportare forti modifiche dello schema concettuale durante ogni parte della vita del software.

Ad esempio, la nostra azienda può porre un dato aggiuntivo su un registro che dovrebbe essere preso in considerazione in ogni ricerca. Se utilizziamo un paradigma relazionale, questa modifica richiede di modificare lo schema del database (aggiungendo o eliminando righe e modificando le chiavi esterne, ecc.). Ovviamente, questo può portare a problemi di manutenibilità indesiderati.

  1. Dovremmo usare un DB basato su documenti? (cioè un database XML)
  2. Questo problema può essere considerato una sfida di progettazione dello schema concettuale puramente relazionale? (cioè potremmo progettare il DB relazionale avendo presente il vincolo dichiarato)
  3. Pensi che questo problema debba essere trattato utilizzando un paradigma specifico?
posta JPCF 08.08.2011 - 19:26
fonte

2 risposte

5

Potrei suggerire un percorso alternativo: utilizza una libreria di indicizzazione / ricerca come Lucene o Lucene.net. Hanno già implementato molte delle complessità di indicizzazione, sintassi di ricerca e ottimizzazione.

(Non sono sicuro che siano appropriati, non hai menzionato un ambiente o una lingua specifici)

Se hai deciso di implementare il tuo database, ci saranno considerazioni sulla progettazione che non hai menzionato per prendere in considerazione. Ad esempio, gli utenti possono cercare solo per parole e frasi che verrebbero mappate a una query di testo parziale SQL (selezionare * da documenti con contenuto come '% keyword%') o si desidera essere in grado di specificare parole chiave, ricerca per campo, ricerca per data, ecc.

    
risposta data 08.08.2011 - 19:58
fonte
3

Un'altra scelta è un modello Entity-Attribute-Value . Se lo fai nella maggior parte dei moderni rdbms, puoi anche ottenere la ricerca full-text.

Non ci sono abbastanza informazioni per sapere se l'applicazione è adatta a questo. Potrebbero esserci problemi di prestazioni e dover trasporre i valori in colonne separate per affrontare le sfide di codifica per farlo dinamicamente.

Ci sono molti post sui pro e contro per i database di tipo NoSQL.

    
risposta data 08.08.2011 - 20:04
fonte

Leggi altre domande sui tag