MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come memorizzare l'output della query nel db temporaneo?

Mongo non supporta nativamente le raccolte "temporanee".

Una cosa tipica da fare qui è non scrivere effettivamente l'intero output dei risultati su un altro DB poiché sarebbe del tutto inutile poiché Elasticsearch esegue la propria memorizzazione nella cache in quanto tale non è necessario alcun livello sopra le righe.

Inoltre, a causa di problemi di IO, normalmente è una cattiva idea scrivere un set di risultati di 10.000 record su Mongo o su un altro DB.

C'è una richiesta di funzionalità per ciò di cui parli:https://jira.mongodb.org/ sfoglia/SERVER-3215 ma ancora nessuna pianificazione.

Esempio

Potresti avere una tabella dei risultati.

All'interno di questa tabella avresti un documento simile a:

{keywords: ['bok', 'mongodb']}

Ogni volta che cerchi e scorri ogni elemento dei risultati, scrivi una riga in questa tabella popolando il campo delle parole chiave con le parole chiave di quel risultato di ricerca. Questo sarebbe per risultato di ricerca per elenco di risultati di ricerca per ricerca. Probabilmente sarebbe meglio trasmettere in streaming ogni risultato di ricerca su MongoDB non appena arrivano. Non ho mai programmato Python (anche se desidero imparare), quindi un esempio in pseudo:

var elastic_results = [{'elasticresult'}];
foreach(elastic_results as result){
    //split down the phrases in this result and make a keywords array
    db.results_collection.insert(array_formed_from_splitting_down_result); // Lets just lazy insert no need for batch or trying to shrink the amount of data to one go or whatever, lets just stream it in.
}

Quindi, mentre procedi con i tuoi risultati, fondamentalmente inserisci in massa il più velocemente possibile, crei una sorta di "flusso" di input in MongoDB. Può farlo abbastanza bene.

Questo dovrebbe quindi darti un elenco frammentabile di parole e verbi linguistici su cui elaborare cose come MR e cose per aggregare statistiche su di loro.

Senza sapere sempre di più sul tuo scenario, questa è praticamente la mia migliore risposta.

Questo non utilizza il concetto di tabella temporanea, ma rende i tuoi dati permanenti, il che va bene a quanto pare poiché desideri utilizzare Mongo come motore di archiviazione per ulteriori attività.