Доброе утро,
В данный момент мне нужна помощь от кого-то более опытного в проблемах с базой данных, чем я.Мне нужно работать с двумя наборами пар (String, Int32).Первый имеет около 160 000 пар, а второй - около 1 620 000 пар.Вопрос в том, что каждая часть строк этой последней коллекции содержится в первом наборе ... В связи с этим я подумал об имитации базы данных в оперативной памяти путем реализации трех словарей:
Dictionary<String, Int32>
для хранениястрока и что-то вроде «первичного ключа», Dictionary<Int32, Int32>
соединяющего каждый первичный ключ со значением, необходимым Dictionary<Tuple<Int32, Int32>, Int32>
для хранения пары первичных ключей и другого значения.
Использование двух словарей и сохранение избыточной информацииПрограмма выделяет около 200 МБ оперативной памяти.Хотя это не ключевой вопрос, я бы хотел уменьшить его.Поэтому я попытался использовать три словаря выше, и, как я и ожидал, выделенная память была значительно уменьшена, примерно до 90 МБ.Однако производительность поиска при поиске по строке была снижена, что заняло примерно вдвое больше времени, чем первый, более простой, но избыточный подход.
Так что теперь я думаю о реализации этого в качестве базы данных SQLite.Проблема во времени поиска: оно должно быть как можно быстрее.Возможно ли использование базы данных такого типа для получения времени поиска, аналогичного времени доступа к ОЗУ?
Большое спасибо.