Я хочу реализовать быструю альтернативу базам данных, которая должна обрабатывать только двоичные данные.
Чтобы указать, я хочу что-то рядом с базой данных, которая будет надежно храниться даже в случае принудительного завершения (диспетчер задач) во время выполнения, а также доступ непосредственно из памяти в C ++. Как вектор структур, который отражается на жестком диске. Он должен иметь возможность обрабатывать сотни тысяч обращений к чтению и не менее 1000 обращений к записи в секунду. В случае принудительного завершения, самое большее последняя команда может быть потеряна. Он не должен поддерживать многопоточность, и файл базы данных будет доступен только одному экземпляру программы. Нужно только запустить на Windows. Вот решения, о которых я думал до сих пор:
Базы данных SQL
Файлы, отображенные в память
* По сути, класс-оболочка, который предоставляет только для каждой строки функции чтения / записи вектора ИЛИ, позволяет прямую запись в память, но полагается на вызывающую функцию для уведомления об изменениях, все чтения выполняются из копии в памяти, все записи выполняются в копия в памяти и сам файл для каждой команды
Кроме того, возможно ли записать в разные части файла без очистки, а затем сбросить все изменения сразу с гарантией того, что файл будет записан полностью или не записан вообще, даже в случае принудительного завершения во время записи? Все, что я могу думать, это следующий рабочий процесс:
Дублируйте целевой файл при запуске, затем для каждого набора данных:
Запишите все изменения в дубликат -> Очистить, заменив оригинал дубликатом
Тем не менее, я чувствую, что это было бы ужасной тратой дискового пространства для больших файлов.
Спасибо заранее за любые данные!
Задача ещё не решена.
Других решений пока нет …