Мы должны войти в ту же базу данных или отдельную базу данных
До сих пор я использовал файловую систему для ведения журнала, теперь планирую перейти на систему базы данных.
Я планирую одну и ту же базу данных и другую коллекцию (термин NoSQL) / таблицу для журналов. Безопасно ли использовать одну и ту же базу данных или лучше использовать другую базу данных для регистраторов?
Требуется ли индексация, пользователь может запросить получение всех журналов с этого дня по сегодняшний день и покажет только X журналов на текущем экране, при нажатии на кнопку "Далее" он получит другие X журналов. Хорошо ли загружать все данные, запрашиваемые у пользователя, за определенный день и хранить их в памяти, чтобы при следующем и обратном вызове интерфейс мог запрашивать соответствующие данные?
Если у кого-то из вас уже есть соединение с базой данных для логгера, пожалуйста, предложите лучшие практики и сценарии с большинством ошибок.
1 ответ
Я видел довольно много логгеров, работающих с ElasticSearch (фактически весь стек ELK). Есть вещи, которые нужно учитывать, если вы собираетесь внедрить новое решение:
- Регистратор должен быть быстрым. Это не может замедлить работу приложения. Если вы реализуете это самостоятельно, неплохо начать с циклической буферизации и многопоточной обработки.
- Там будет много данных. Отдельная БД обязательна. Таким образом, вы можете перенести его позже на сервер с более дешевым хранилищем или масштабировать его под свои нужды или что-то еще.
- Данные журнала основаны на времени. Проектируя хранилище, вы можете захотеть делать почасовые / ежедневные разделы для облегчения манипуляций.
- То же самое касается чтения. Можно ожидать, что данные будут упорядочены по времени, самые последние данные наиболее необходимы. Ваши индексы должны соответствовать этому.
- Технические вещи, такие как нумерация страниц и кэширование, зависят от поставщика базы данных. Я не знаю много о MongoDB, но я думаю, что нумерация страниц должна быть на месте. Итак, нажимая Next, вы должны просто запросить несколько дополнительных строк из предыдущего запроса.
Еще один момент: лично я бы не стал тратить время на реализацию чего-то нового. Я бы установил экземпляр ELK, настроил Log4J (или какой-либо другой регистратор приложений) и потратил дополнительное время на обучение ребят из службы поддержки использованию новой среды.