Между мной и некоторыми коллегами, которые берут один и тот же класс (и, следовательно, имеют тот же проект), обсуждается вопрос сохранения данных в файлы и чтения из этих файлов только тогда, когда нам нужны эти конкретные данные.
Например, проект связан с управлением социальной сетью. Я не буду вдаваться в подробности, потому что это не имеет значения, но идея состоит в том, чтобы использовать лучшие структуры данных для манипулирования этими данными.
Допустим, я использую хэш-таблицу для сохранения данных профиля пользователя. Некоторые из них утверждают, что только некоторая конкретная информация должна быть сохранена в структурах данных, таких как и ID, который представляет пользователя. Все остальное должно быть помещено в файлы. Мы должны получить доступ к файлам, чтобы получить те данные, которые мы хотим, когда захотим.
Я не думаю, что это практично ... Может быть, если бы мы использовали какую-то библиотеку для базы данных, такой как SQLite или что-то в этом роде, но это не так, и я не думаю, что мы должны это делать. Мы должны только кодировать все сами и использовать функции C, такие как these . Я также не думаю, что мы должны делать идеальное управление памятью. Реквизиты проекта не для нас, чтобы кодировать базу данных или даже псевдобазу. От нас этого проекта требуют лучшие структуры данных (если мы знаем, как обосновать, почему мы выбрали их вместо других) для хранения типа данных и всех данных, указанных для проекта.
Я должен сообщить вам, что до этого у нас было 2 класса, где знания, которые мы получили, должны быть применены в этом проекте. Один из них касался основы C, функций, структур, массивов, строк, файлового ввода-вывода, рекурсии, указателей и простых структур данных, таких как двоичные деревья и связанные списки, и тому подобное. В другом рассказывалось о более сложных структурах данных, хеш-таблицах, деревьях AVL, кучах, графиках и т. Д. В нем также говорилось о сложности времени, больших значениях O и подобных вещах.
Например, скажем, все, что у меня в памяти, это идентификаторы пользователей, а затем мне нужно найти всех друзей конкретного пользователя. Мне придется обработать весь файл (или файлы), чтобы найти друзей этого пользователя. Было бы намного проще, если бы я мог хранить все эти данные в памяти.
Мне не имеет смысла, что нам нужно выбрать (и обосновать) структуры данных, которые мы лучше всего считаем подходящими для проекта, а затем использовать их только для поиска идентификатора. Затем нам нужно будет выполнить второй поиск, чтобы получить реальные данные, которые нам нужны, что займет время, не так ли? Почему мы вообще беспокоились о структурах данных, если нам по-прежнему нужно искать кучу файлов на жестком диске?
Как это могло быть возможно, используя стандартные функции C, кодируя все вручную и при этом симулируя какую-то базу данных? Это практично вообще?
Я что-то здесь упускаю?