sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur lagrar jag frågeutdata i temp db?

Mongo stöder inte "temp"-samlingar.

En typisk sak att göra här är att faktiskt inte skriva hela resultatet till en annan DB eftersom det skulle vara helt meningslöst eftersom Elasticsearch gör sin egen cachning, så du behöver inte något lager över toppen.

På grund av IO-problem är det också normalt en dålig idé att skriva en resultatuppsättning med 10 000 poster till Mongo eller en annan DB.

Det finns en funktionsbegäran för det du pratar om:https://jira.mongodb.org/ bläddra/SERVER-3215 men ingen planering än.

Exempel

Du kan ha en resultattabell.

I den här tabellen skulle du ha ett dokument som ser ut så här:

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

Varje gång du söker och bläddrar igenom varje resultatobjekt skulle du skriva en rad till den här tabellen och fylla i sökordsfältet med nyckelord från det sökresultatet. Detta skulle vara per sökresultat per sökresultatlista per sökning. Det skulle förmodligen vara bäst att bara streama varje sökresultat till MongoDB när de kommer in. Jag har aldrig programmerat Python (även om jag vill lära mig) så ett exempel i 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.
}

Så när du går längs dina resultat, massinsätter du i princip bara så snabbt som möjligt och skapar en sorts "ström" av input till MongoDB. Den kan göra detta ganska bra.

Detta bör sedan ge dig en delningbar lista med ord och språkverb att bearbeta saker som MR på och sånt för att samla statistik om dem.

Utan att veta mer och mer om ditt scenario är detta i stort sett mitt bästa svar.

Detta använder inte temp table-konceptet utan gör istället din data permanent, vilket är bra av ljudet eftersom du vill använda Mongo som en lagringsmotor för ytterligare uppgifter.



  1. CouchDB vs MongoDB (minnesanvändning)

  2. Hur man frågar en underdokumentsamling med MongoDB och C#-drivrutinen

  3. Är det möjligt att få aviseringar om kartreducering i mongo?

  4. NoSql referensdata