Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: C++ транзакция при сохранении в файл  (Прочитано 1244 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Шинш

  • Автор темы
  • Гость
C++ транзакция при сохранении в файл
« : 24 Февраля 2013, 11:24:25 »
подскажите пожалуйста, если ли средства кроме SQL как сделать транзацию при сохранении в файл ?
ведь параметр wb откроет с полной очисткой файла, а при сохранении может всякое произойти...
может костылем каким?
просто SQL запретили использовать ((((

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: C++ транзакция при сохранении в файл
« Ответ #1 : 24 Февраля 2013, 12:45:47 »
Цитировать
Транзакция — группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций.


Я так понял, вы пишите что-то вроде реляционной или архивной базы данных?
В таком случае, вам необходим обработчик, который получит запрос, проверит его правильность и выполнит его самостоятельно. Это может быть объект (как в случае с SQLite) или отдельное приложение - сервер.
В моем понимании, запрос должен быть выполнен тогда и только тогда, если он валиден, то есть:
  • не обращается к несуществующим данным
  • не выполняет операций, на которые нет прав
  • не содержит ошибок в синтаксисе
Вот как-то так... :)
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн quiet_readonly

  • Участник
  • *
  • Сообщений: 133
    • Просмотр профиля
Re: C++ транзакция при сохранении в файл
« Ответ #2 : 24 Февраля 2013, 16:34:02 »
Если надо транзакционно сохранить в файл "dump.txt", сохраняйте данные в ".temp.dump.txt", затем переименуйте старый "dump.txt" в ".copy.dump.txt", переименуйте ".temp.dump.txt" в "dump.txt" и, если всё прошло успешно, в конце удалите файл ".copy.dump.txt".

Упрощённая схема: запись в .temp.dump.txt, удаление dump.txt и переименование .temp.dump.txt.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: C++ транзакция при сохранении в файл
« Ответ #3 : 24 Февраля 2013, 19:06:03 »
Если надо транзакционно сохранить в файл "dump.txt", сохраняйте данные в ".temp.dump.txt", затем переименуйте старый "dump.txt" в ".copy.dump.txt", переименуйте ".temp.dump.txt" в "dump.txt" и, если всё прошло успешно, в конце удалите файл ".copy.dump.txt".

Упрощённая схема: запись в .temp.dump.txt, удаление dump.txt и переименование .temp.dump.txt.
+1 оригинально

Шинш,
обычно просто есть файл журнала открытый с флагами предписывающими не кэшировать данные (тут я может погорячился) и писать их прямо на диск (а вот это точно)
не факт что ты найдешь такие флаги, я выразился условно, если нет флагов значит есть другие механизмы получить желаемое.

а вообще почитай какую-нибудь толстую книжку по теории БД =)

Шинш

  • Автор темы
  • Гость
Re: C++ транзакция при сохранении в файл
« Ответ #4 : 25 Февраля 2013, 07:26:36 »
quiet_readonly,
спасибо ))
как то не мог додуматься, что надо и имя менять первоначального файла )
а так в случае чего можно и принять/отменить добавить )

Yurror,
почитаю, конечно))
но, сейчас буду читать системное программирование под UNIX )) дождался наконец-то этого предмета ))
а этим и хочется заниматься после института )))

если есть автор-название книги про теорию БД, как вообще это все устроенно, напишите пожалуйста )

Оффлайн WereBeast

  • Любитель
  • *
  • Сообщений: 85
    • Просмотр профиля
Re: C++ транзакция при сохранении в файл
« Ответ #5 : 26 Февраля 2013, 13:47:31 »
Программистов то собралось.....
А чего mapping  и частичный lock отменили чтоле? Или велосипеды нынче тренд?

Программирую пропаганду
Windows - в гландах

 

Страница сгенерирована за 0.042 секунд. Запросов: 25.