У меня есть несколько наборов данных среднего размера в памяти, которые я должен уметь фильтровать и быстро находить информацию. Наборы данных достаточно малы, поэтому я не хочу испытывать снижение производительности при переходе к базе данных каждый раз, когда мне нужна запись, но достаточно большой, чтобы мне действительно нужно как-то индексировать данные.
В настоящее время я использую объекты POCO с одним или несколькими словарями для индексации. Это отлично работает, когда мне нужно найти что-то по определенному ключу, но иногда это не так. В качестве примера, мне часто нужно найти запись в определенном диапазоне времени-даты. И иногда мне нужна запись с самой низкой ценой. Чаще всего запросы просматривают несколько простых ключей и одно или два других поля одновременно.
Существуют ли какие-либо инструменты, продукты, библиотеки (нацеленные на .NET-framework), которые могут помочь мне в этом? Или мне нужно взять эту большую пыльную старую книгу по Алгоритмам и начать смотреть на деревья поиска?
Пример:
Trip
- DepartureCode
- DestinationCode
- HotelCode
- RoomCode
- Дата
- Цена
Мне нужно, чтобы запрос был чем-то вроде: «принеси мне самое дешевое путешествие между 2010-03-09 и 2010-03-12, где DepartureCode = LAX DestinationCode = NYC»