У меня есть задача, которую я знаю, как кодировать (в C#), , но я знаю, что простая реализация не удовлетворит ВСЕ мои потребности. Итак, я ищу трюки, которые могут удовлетворить ВСЕ мои потребности.Методология для сохранения значений с течением времени
Я пишу симуляцию с участием N числа сущностей, взаимодействующих во времени.
N начнется примерно в 30 и переместится на многие тысячи.
a. The number of entities will change during the course of the simulation.
b. Я ожидаю, что это потребует, чтобы каждый объект имел свой собственный файл трассировки.
Каждый объект имеет как минимум 20 параметров, до миллионов; Я хочу отслеживать с течением времени.
a. Это, скорее всего, потребует, чтобы мы не могли постоянно сохранять все значения в памяти. Некоторые подмножества должны быть точными.
b. Первоначально число параметров на объект будет фиксированным, но я могу придумать какой-то тест, который бы менял со временем замедление числа параметров.
Моделирование продлится миллионы шагов времени, и мне нужно сохранить каждое значение для каждого параметра.
Что я буду использовать эти следы для:
а. Построение поднабора (настраиваемого) параметров в течение фиксированного промежутка времени с текущего временного шага в прошлое.
i. Normally on the order of 300 time steps. ii. These plots are in real time while the simulation is running.
b. Я буду использовать эти трассировки для повторного воспроизведения имитации, поэтому мне нужно быстро получить доступ ко всем параметрам на этапе предоставления времени, чтобы я мог быстро перейти к разным временам в симуляции.
i. This requires the values be stored in a file(s) which can be inspected/loaded after restarting the software. ii. Using a database is NOT an option.
c. Я буду использовать параметры для последующего анализа, которые я не могу определить спереди, поэтому желательна более гибкая система.
Моя первая мысль:
Один класс по каждому субъекту, который содержит все параметры.
Опираясь на файл с памятью.
только фиксированный, но перемещение, количество файла отображается в основной памяти
Вторая память отображается файл, который имеет временные индексы в основной файл для быстрого доступа во время повторного воспроизведения моделирования. Это может быть очень важно, потому что каждый файл сущности будет представлять собой другой временной срез полного моделирования.
Почему использование базы данных не вариант? Я просто ничего не вижу в ваших требованиях, которые сделают реляционную базу данных нецелесообразной. –
В базе данных не может быть и речи об общем требовании, чтобы иметь возможность запускать это на любой машине без настройки, кроме конфигурационных файлов.На некоторых из этих машин у меня не будет возможности устанавливать базу данных, а не все машины находятся в одной сети, чтобы обеспечить единую сетевую установку базы данных. Я также думаю, что накладные расходы на передачу этой большой информации по сети замедлят симуляцию слишком много. –
База данных не подразумевает сетевой сервер. Проверьте ответ на SQLite или SQL CE. – codekaizen