Мне нужно разработать систему для хранения большого количества (от 10 до 100 тысяч) объектов. Каждый объект похож на электронную почту - здесь есть основное текстовое тело и несколько вспомогательных текстовых полей ограниченного размера. Размер тела будет от нескольких байтов до нескольких килобайт.
Каждый элемент будет иметь один уникальный идентификатор (вероятно, GUID), который его идентифицирует.
Хранилище будет записано только тогда, когда к нему добавлен объект. Это будет часто читаться. Удаление будет редким. Данные представляют собой почти весь читаемый человеком текст, поэтому они легко сжимаются.
Система, которая позволяет мне выполнять операции ввода-вывода и управлять памятью и кэшированием, была бы идеальной.
Я собираюсь хранить индексы в памяти, используя их для сопоставления индексов с единственным (и первичным) ключом для объектов. Как только у меня будет ключ, я загружу его с диска или из кеша.
Система управления данными должна быть частью моего приложения - я не хочу зависеть от служб ОС. Или отдельно установленные пакеты. Native (C ++) был бы лучшим, но управляемый (C #) был бы в порядке.
Я считаю, что база данных является очевидным выбором, но она должна быть супербыстрой для поиска и загрузки в память объекта. У меня нет опыта работы с технологиями баз данных, и я обеспокоен тем, что общие реляционные системы не будут эффективно обрабатывать все эти данные переменного размера.
(Обратите внимание, это не имеет ничего общего с моей работой - это личный проект.)
По вашему опыту, каковы жизнеспособные альтернативы традиционной реляционной БД? Или для этого хорошо подойдет БД?