Как хранить информацию? База данных против структуры данных против файлов журнала

Недавно я столкнулся со сценарием в вопросе:

Есть n сайты с n страниц каждый и n пользователи, посещающие сайты.... каждый визит пользователя должен быть сохранен и страницы, которые он / она посетил (не упоминается ли в базе данных или файлах журнала, так что это зависит от разработчика)

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

Таким образом, у нас есть 3 способа хранения чего-либо в общем...log filesdata-structuredatabase

Теперь я действительно сбит с толку, когда следует использовать структуры данных, базы данных или просто файлы журналов не только для этого конкретного сценария, но и в общем виде?

В чем реальная разница?


Я понимаю, что этот вопрос в основном основан на мнении, но не смог получить конкретный результат при просмотре!

1 ответ

Решение

Файлы журнала часто / обычно только для вывода - эти файлы редко, если вообще когда-либо, будут прочитаны, возможно, только для чтения вручную. Некоторые типы файлов могут иметь произвольный доступ, что позволяет довольно эффективно находить данную запись по одному индексу (с помощью бинарного поиска), но вы не можете (легко) иметь несколько индексов для данных в одном файле, который является тривиальное задание для базы данных. Если вы просто хотите записать что-то для ручной обработки позже, файл журнала может работать нормально (даже если база данных тоже может работать).

Базы данных являются стандартом в отрасли, поскольку они обеспечивают постоянство, эффективное чтение и запись, стандартный интерфейс и избыточность (но, конечно, их необходимо правильно настроить).

Чистое решение для структуры данных, как правило, не учитывает постоянное хранение, так как при сохранении данных по какой-то причине программа сохраняется. Если вы действительно хотите писать и читать из постоянного хранилища, это часто будет сопряжено с большими сложностями, чтобы делать это эффективно и регулярно. И множественные / сложные индексы это немного хлопот для удовлетворения. Это не означает, что структуры данных нельзя использовать с постоянным хранилищем - базы данных создаются с использованием структур данных, а некоторые структуры данных специально созданы для чтения и записи на диск. Но вы не хотите разбираться с этим на низком уровне - лучше просто позаботиться об этом, если вам нужна настойчивость.

Вы также можете объединить структуры данных и базы данных, используя базу данных в качестве постоянного хранилища, и использовать структуру данных для кэширования результатов, поэтому вам нужно только выполнять (более медленные) записи в базу данных и выполнять (более быстрые) операции чтения из структуры данных. Это не редкость в больших системах с внешними базами данных. Хотя что-то более сложное, чем стандартная структура картографических данных, вероятно, слишком усложняет ваш кеш и указывает на большую проблему с вашим дизайном.


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

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