Мы должны войти в ту же базу данных или отдельную базу данных

До сих пор я использовал файловую систему для ведения журнала, теперь планирую перейти на систему базы данных.

Я планирую одну и ту же базу данных и другую коллекцию (термин NoSQL) / таблицу для журналов. Безопасно ли использовать одну и ту же базу данных или лучше использовать другую базу данных для регистраторов?

Требуется ли индексация, пользователь может запросить получение всех журналов с этого дня по сегодняшний день и покажет только X журналов на текущем экране, при нажатии на кнопку "Далее" он получит другие X журналов. Хорошо ли загружать все данные, запрашиваемые у пользователя, за определенный день и хранить их в памяти, чтобы при следующем и обратном вызове интерфейс мог запрашивать соответствующие данные?

Если у кого-то из вас уже есть соединение с базой данных для логгера, пожалуйста, предложите лучшие практики и сценарии с большинством ошибок.

1 ответ

Решение

Я видел довольно много логгеров, работающих с ElasticSearch (фактически весь стек ELK). Есть вещи, которые нужно учитывать, если вы собираетесь внедрить новое решение:

  1. Регистратор должен быть быстрым. Это не может замедлить работу приложения. Если вы реализуете это самостоятельно, неплохо начать с циклической буферизации и многопоточной обработки.
  2. Там будет много данных. Отдельная БД обязательна. Таким образом, вы можете перенести его позже на сервер с более дешевым хранилищем или масштабировать его под свои нужды или что-то еще.
  3. Данные журнала основаны на времени. Проектируя хранилище, вы можете захотеть делать почасовые / ежедневные разделы для облегчения манипуляций.
  4. То же самое касается чтения. Можно ожидать, что данные будут упорядочены по времени, самые последние данные наиболее необходимы. Ваши индексы должны соответствовать этому.
  5. Технические вещи, такие как нумерация страниц и кэширование, зависят от поставщика базы данных. Я не знаю много о MongoDB, но я думаю, что нумерация страниц должна быть на месте. Итак, нажимая Next, вы должны просто запросить несколько дополнительных строк из предыдущего запроса.

Еще один момент: лично я бы не стал тратить время на реализацию чего-то нового. Я бы установил экземпляр ELK, настроил Log4J (или какой-либо другой регистратор приложений) и потратил дополнительное время на обучение ребят из службы поддержки использованию новой среды.

Другие вопросы по тегам