sql >> Database >  >> NoSQL >> MongoDB

Hoe query-uitvoer op te slaan in temp db?

Mongo ondersteunt geen "tijdelijke" collecties.

Een typisch ding om hier te doen is om niet de volledige uitvoer van de resultaten naar een andere DB te schrijven, omdat dat volkomen zinloos zou zijn, aangezien Elasticsearch zijn eigen caching doet, dus je hebt geen laag over de top nodig.

Ook is het vanwege IO-problemen normaal gesproken een slecht idee om bijvoorbeeld een resultatenset van 10.000 records naar Mongo of een andere DB te schrijven.

Er is een functieverzoek voor waar je het over hebt:https://jira.mongodb.org/ bladeren/SERVER-3215 maar nog geen planning.

Voorbeeld

Je zou een tabel met resultaten kunnen hebben.

Binnen deze tabel zou u een document hebben dat eruitziet als:

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

Elke keer dat u zoekt en door elk resultaatitem bladert, schrijft u een rij naar deze tabel en vult u het trefwoordenveld met trefwoorden uit dat zoekresultaat. Dit zou zijn per zoekresultaat per zoekresultaatlijst per zoekactie. Het zou waarschijnlijk het beste zijn om elk zoekresultaat gewoon naar MongoDB te streamen zodra ze binnenkomen. Ik heb Python nooit geprogrammeerd (hoewel ik het wel wil leren), dus een voorbeeld 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.
}

Dus terwijl je doorgaat met je resultaten, voeg je in feite zo snel mogelijk massaal in en creëer je een soort "stroom" van invoer naar MongoDB. Het kan dit heel goed.

Dit zou je dan een verwijderbare lijst van woorden en taalwerkwoorden moeten geven om dingen zoals MR's op te verwerken en dingen om statistieken over te verzamelen.

Zonder steeds meer te weten over je scenario, is dit zo'n beetje mijn beste antwoord.

Dit maakt geen gebruik van het tijdelijke tabelconcept, maar maakt in plaats daarvan uw gegevens permanent, wat prima is door de geluiden ervan, aangezien u Mongo wilt gebruiken als opslagengine voor verdere taken.



  1. MongoDb subdocument uit document verwijderen

  2. AfschaffingWaarschuwing:het luisteren naar gebeurtenissen in de Db-klasse is beëindigd en wordt verwijderd in de volgende hoofdversie

  3. Hoe selectief Mongo-herstel te doen?

  4. Gegevens lezen van Redis naar Flink