У меня есть система записи журналов в mongodb (около 1kk журналов в день). Еженедельно мне нужно рассчитать некоторую статистику по этим журналам. Поскольку вычисления являются очень процессором и потребляемой памятью, я хочу скопировать коллекцию, которую я работаю на мощную удаленную машину. Как я могу постоянно обновлять коллекции вне офиса без копирования всего? Я изменяю внешний сбор, сохраняя статистику в своих элементах, то есть добавляя поля {"alogirthm_1": "passed"}
или {"stat1": 3.1415}
. Является ли репликация правильным для моего варианта использования или я должен исследовать другие альтернативы?Обработка большой коллекции mongo offsite
ответ
Что касается вашего вопроса, да, репликация частично разрешает вашу проблему с ограничениями. Итак, есть несколько способов, которые я знаю, чтобы решить проблему:
Наполовину базы данных, путь наполовину приложения.
Репликация сохраняет ваши данные в актуальном состоянии. Однако он не позволяет вам изменять вторичные узлы (которые вы называете «внесетевой сбор»). Таким образом, вам нужно выполнить вычисления на вторичном и записать данные в основной. Вам нужно, чтобы приложение выполняло aggregation на вторичном сервере и записывало результат обратно в его основной.
Для этого вам нужно запустить приложение, PHP, .NET, Python, что угодно.полный сервер путь
Так как вы собираетесь иметь мульти-серверы каким-либо образом, вы можете рассмотреть возможность использования Sharding для более быстрого хранения и непосредственно делать вычисления в Интернете. Таким образом, вам даже не нужно запускать приложение. Map/Reduce выполняет расчет и запись вывода в новую коллекцию. I НЕТ рекомендуют это решение, хотя из-за Map/Reduce performance issue текущих версий.Способ полного применения
В основном вы по-прежнему используете репликацию для чтения, но сервер не выполняет никаких вычислений, кроме запроса данных. Вы можете использовать capped collection или TTL index для удаления истекших данных, и вы просто перечисляете данные один за другим в своем приложении и вычисляете сами.
- 1. mongo эффективный удалить данные из большой коллекции
- 2. Mongo вдруг игнорирует индекс в большой коллекции
- 3. Использование генератора для итерации по большой коллекции в Mongo
- 4. Mongo multiples баз данных против одной большой коллекции
- 5. Mongo и блокированные коллекции
- 6. Mongo Connection Обработка исключений
- 7. Фильтр большой коллекции
- 8. Обновление большой коллекции
- 9. Ошибка Dwolla Offsite Gateway API
- 10. Обработка PHP большой формы
- 11. mongo db insert большие коллекции
- 12. Mongo: потерянное соединение и коллекции
- 13. Как использовать коллекции в Mongo
- 14. Обновление коллекции mongo с $ set
- 15. Mongo Коллекции и Реакция Метеор
- 16. Переименование коллекции Mongo в PHP
- 17. Перебор большой коллекции MongoDB без запуска из памяти
- 18. Обработка ошибок Mongo utf-8
- 19. Обработка коллекции в BackgroundWorker
- 20. Отображение большой коллекции в DataGrid
- 21. Ошибка Mongoose при большой коллекции
- 22. Сортировка большой коллекции с haskell
- 23. Эффективное слияние большой коллекции словарей
- 24. Нужна обработка большой базы данных
- 25. большой текстовая обработка файлов ошибка
- 26. WooCommerce Offsite Payment с ошибкой SagePay 5080
- 27. Частичные обновления doc для большой коллекции mongo - как не запирать базу данных?
- 28. Запрос коллекции mongo по логическому полю
- 29. Просмотр коллекции, названной «статистика» Использование Mongo CLI
- 30. Объединение в большие коллекции с Mongo
Что такое 1kk logs в день? 1 м строк журнала в день? – Stennie
Как вы собираетесь обрабатывать данные своего журнала? Карта/Уменьшить или у вас есть приложение для расчета? – yaoxing
@Stennie, да, точно. – Moonwalker