MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak przechowywać dane wyjściowe zapytania w temp db?

Mongo nie obsługuje natywnie kolekcji „temp”.

Typową rzeczą, jaką należy tutaj zrobić, jest nie zapisywanie całego wyniku wyników do innej bazy danych, ponieważ byłoby to całkowicie bezcelowe, ponieważ Elasticsearch wykonuje własne buforowanie, dlatego nie potrzebujesz żadnej warstwy na wierzchu.

Ponadto, ze względu na obawy związane z IO, zwykle złym pomysłem jest zapisywanie, powiedzmy, zestawu wyników 10k rekordów do Mongo lub innej bazy danych.

Jest prośba o funkcję dotyczącą tego, o czym mówisz:https://jira.mongodb.org/ przeglądaj/SERWER-3215 ale na razie nie ma planowania.

Przykład

Możesz mieć tabelę wyników.

W tej tabeli znajdziesz dokument, który wygląda następująco:

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

Za każdym razem, gdy przeszukujesz i przewijasz każdy element wyników, wpisujesz wiersz do tej tabeli, wypełniając pole słów kluczowych słowami kluczowymi z tego wyniku wyszukiwania. Byłoby to na wynik wyszukiwania na listę wyników wyszukiwania na wyszukiwanie. Prawdopodobnie najlepiej byłoby po prostu przesyłać strumieniowo każdy wynik wyszukiwania do MongoDB, gdy się pojawią. Nigdy nie programowałem Pythona (choć chciałbym się uczyć), więc przykład w 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.
}

Tak więc idąc wzdłuż wyników, po prostu masowo wstawiasz tak szybko, jak to możliwe, tworzysz rodzaj „strumienia” danych wejściowych do MongoDB. Może to zrobić całkiem dobrze.

Powinno to dać ci listę słów i czasowników językowych do dzielenia na fragmenty do przetwarzania takich rzeczy jak MR i rzeczy do agregowania statystyk na ich temat.

Nie wiedząc coraz więcej o twoim scenariuszu, jest to moja najlepsza odpowiedź.

Nie używa to koncepcji tabeli tymczasowej, ale zamiast tego sprawia, że ​​Twoje dane są trwałe, co jest w porządku, ponieważ chcesz użyć Mongo jako silnika pamięci do dalszych zadań.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wydajny sposób przechowywania danych w MongoDB:dokumenty osadzone vs pojedyncze dokumenty

  2. łączenie się z Mongodb w oknie dokowanym za pomocą GUI kompasu mongodb

  3. Jak wyszukiwać w indeksie pełnotekstowym za pomocą php w mongodb

  4. Wybierz pasujący element tablicy i zwróć wybrane pola

  5. Jak czekać na wypchnięcie pozycji z listy mangusty?