[СИ] База данных
Язык СИ
ОС UNIX
Хотелось бы написать простую специализированную
базу данных.
Под специализированной понимается:
не универсальная, для конкретного приложения.
Отсюда и ожидаемая простота.
Много чего не понимаю. Вот первая тестовая задача:
Задача 1.
Имеется файл-счетчик count.txt малой длины (100 байт).
и некая программа, время от времени наращивающая
этот счетчик.
Требуется: переделать так, чтобы при мягком сбое (отключение питания)
не потерять счетчик.
Думал - думал и ничего лучше не придумал,
кроме следующего.
Создаю два равнозначных файла-счетчика,
дублирующих друг друга.
count_1.txt
count_2.txt
Формат файла такой
count=4; st_tr=36; ks=123345
где
count=4; -основной счетчик;
st_tr=36; -вспомогательный кольцевой счетчик наращиваний,
например, после 99 следующее число 0;
ks=123345 -контрольная сумма.
Наращивание делать так:
-читаем каждый из этих файлов, проверяем контрольные суммы
и совпадение данных в обоих файлах;
Далее по одной из четырех ветвей
-если все в порядке, то изменяем данные и перезаписываем
эти два файла. Дождать, когда они окажутся на диске. Вот и всё.
-если файлы отличаются, и в одном из них правильная ks,
то восстановить, т. е. скопировать правильный в не правильный,
дождать, когда он
окажется на диске (как проверить - не ведомо), затем
нарастить счетчики в обоих файлах.
-если файлы отличаются, и в каждом правильная ks, лучшим из них
считать тот, у которого больше (по кольцу) вспомогательный
счетчик, сделать восстановление, затем нарастить оба.
-другие варианты считать не подлежащими восстановлению.
В чем я заблуждаюсь?
Кто знает прошу ответить.