powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Алгоритм транзакции при записи на диск и в БД
25 сообщений из 47, страница 1 из 2
Алгоритм транзакции при записи на диск и в БД
    #38188323
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача сделать общую транзакцию. В программе идет запись в БД и файлов на диск.
К примеру, есть 10 файлов, которые надо записать на диск и сделать запись информации о файлах в БД.
Могут возникнуть исключения при записи файла на диск, при не соответствие файла шаблону, со стороны БД.
Как это правильно организовать и как в случае необходимости сделать откат такой транзакции?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188345
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
алгоритм обычный - записал, проверил, откатил (удалил файлы).
И перекрываешь любой доступ вне этой БЛ. Например из ОСи.
А дальше ньансы) - спринг? Декларативные? Хибер?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188353
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если база локальная, хранить в блобах. Многие базы имеют специальные оптимизации для блобов, чтобы по эффективности не особо отличалось от файловой системы, с учетом расходов на транзакционность.
Если база удаленная и блобы вообще не вариант, то нужен простейший JCA адаптер, чтобы участвовать в XA транзакции. Причем для файловой системы двухфазный комит не особо нужен. Обычного commit\rollback достаточно. А для JDBC почти все драйвера имеются в реализации XA.
http://xadisk.java.net/
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188362
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rdm,
алгоритм обычный - записал, проверил, откатил (удалил файлы).
И перекрываешь любой доступ вне этой БЛ. Например из ОСи.
А дальше ньансы) - спринг? Декларативные? Хибер?
Spring, Hiber @Transactional для БД.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188371
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕсли база локальная, хранить в блобах. Многие базы имеют специальные оптимизации для блобов, чтобы по эффективности не особо отличалось от файловой системы, с учетом расходов на транзакционность.
Если база удаленная и блобы вообще не вариант, то нужен простейший JCA адаптер, чтобы участвовать в XA транзакции. Причем для файловой системы двухфазный комит не особо нужен. Обычного commit\rollback достаточно. А для JDBC почти все драйвера имеются в реализации XA.
http://xadisk.java.net/
Если БД на том же ПК, это локальная или удаленная?Говоря о локальной БД, вы говорите в смысле на том же ПК, или что она embeded? Блобы не хочу использовать, просто запись в ФС на диск.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188374
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmSpring, Hiber @Transactional для БД.
Если сервер не полноценный JEE контейнер, то нужно ещё подключить XA Transaction Manager. Можно взять atomicos. Если полноценный, то попробовать подъюзать такой из сервера.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188379
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmЕсли БД на том же ПК, это локальная или удаленная?Говоря о локальной БД, вы говорите в смысле на том же ПК, или что она embeded?

На том же ПК. Если база на другом, то можно отхватить в будущем проблемы с перегрузкой сети блобами.

rdmБлобы не хочу использовать, просто запись в ФС на диск.
Обдуманный обоснованый выбор. Добавить нечего.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188389
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне хотелось бы инструмент(надеюсь он уже есть), чтобы сделать запись нескольких файлов на диск ФС в стиле транзакции в БД.
Т.е. либо все файлы успешно записываются, либо ни одного.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188391
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmPetro123rdm,
алгоритм обычный - записал, проверил, откатил (удалил файлы).
И перекрываешь любой доступ вне этой БЛ. Например из ОСи.
А дальше ньансы) - спринг? Декларативные? Хибер?
Spring, Hiber @Transactional для БД.
тогда
- делаем класс УправляторФайлами, который если что возбуждает исключение
имеет зеркальную процедуруОтката

@меткаТранзакции
БизнесТранзакция
{
ЗаписатьВ_БД
ЗаписатьФайлы
}
- обрботка исключения (БД сама откатит)
Если не руками, то выше написали.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188397
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmБлобы не хочу использовать, просто запись в ФС на диск.
Обдуманный обоснованый выбор. Добавить нечего.
Ну да) Мне проще структуру каталогов и файлы смотреть через проводник)
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188398
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmМне хотелось бы инструмент(надеюсь он уже есть), чтобы сделать запись нескольких файлов на диск ФС в стиле транзакции в БД.
Т.е. либо все файлы успешно записываются, либо ни одного.
оверхед или конфигуразм))). Там писать нечего.
imho
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188404
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, как я понял вы про http://xadisk.java.net/ ?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188410
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmМне хотелось бы инструмент(надеюсь он уже есть), чтобы сделать запись нескольких файлов на диск ФС в стиле транзакции в БД.
Т.е. либо все файлы успешно записываются, либо ни одного.
Самописные транзакции это полумеры. Вот пример от Petro123 выше
- создали файлы - ОК -
- записали в базу - OK -
- коммит в файловую систему - Exception - что мы делать будем с базой, куда мы уже закомитили?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188415
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmТ.е. либо все файлы успешно записываются, либо ни одного.Ссылка на XADisk вам уже привели - чем не устроило?
Есть ещё TrueZIP - тоже с версионностью.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188417
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсть ещё TrueZIP - тоже с версионностью атомарностью.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188420
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmМне хотелось бы инструмент(надеюсь он уже есть), чтобы сделать запись нескольких файлов на диск ФС в стиле транзакции в БД.
Т.е. либо все файлы успешно записываются, либо ни одного.
Самописные транзакции это полумеры. Вот пример от Petro123 выше
- создали файлы - ОК -
- записали в базу - OK -
- коммит в файловую систему - Exception - что мы делать будем с базой, куда мы уже закомитили?
Видимо коммит должен быть внутри метода, чтобы при исключении rollback=MyWriteException откатил изменения в базе) Нет?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188424
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
ты прав, но БД всегда надёжнее, поэтому в неё просто ПОСЛЕ опасных транзакций.
Это как снимать флаг отправки письма только полсе отправки.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188426
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmВидимо коммит должен быть внутри метода
ну, у нас же автоматом спринг). Так и дОлжно быть.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188428
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rdmМне хотелось бы инструмент(надеюсь он уже есть), чтобы сделать запись нескольких файлов на диск ФС в стиле транзакции в БД.
Т.е. либо все файлы успешно записываются, либо ни одного.
оверхед или конфигуразм))). Там писать нечего.
imho
Все равно что нужно будет, а так уже готовое решение)
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188429
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ты прав, но БД всегда надёжнее, поэтому в неё просто ПОСЛЕ опасных транзакций.
Это как снимать флаг отправки письма только полсе отправки.
Нет термина "опасные транзакции". Есть XA транзакция и двухфазный комит в базу, в которую можно вклинится. Но для этого в любом случае нужен и транзакционный враппер для файловой системы.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188431
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmВидимо коммит должен быть внутри метода, чтобы при исключении rollback=MyWriteException откатил изменения в базе) Нет?Файлы могут записываться секундами-минутами - накойхер (фамилие такой) держать транзакцию дольше, чем это абсолютно необходимо?
Поэтому - сначала записали файлы, потом (максимально быстро) отразили (конечное) состояние в базе.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188436
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovrdmВидимо коммит должен быть внутри метода, чтобы при исключении rollback=MyWriteException откатил изменения в базе) Нет?Файлы могут записываться секундами-минутами - накойхер (фамилие такой) держать транзакцию дольше, чем это абсолютно необходимо?
Поэтому - сначала записали файлы, потом (максимально быстро) отразили (конечное) состояние в базе.
Тоже правда.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188452
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovrdmВидимо коммит должен быть внутри метода, чтобы при исключении rollback=MyWriteException откатил изменения в базе) Нет?Файлы могут записываться секундами-минутами - накойхер (фамилие такой) держать транзакцию дольше, чем это абсолютно необходимо?
Поэтому - сначала записали файлы, потом (максимально быстро) отразили (конечное) состояние в базе.
Только как тогда откатить запись файлов, если исключение со стороны БД.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188457
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmТолько как тогда откатить запись файлов, если исключение со стороны БД.
так же как записывал, только в обратную сторону:
Setter\Getter Write \ Delete
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188470
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rdmТолько как тогда откатить запись файлов, если исключение со стороны БД.
так же как записывал, только в обратную сторону:
Setter\Getter Write \ Delete
Я чуть о другом. При использовании транзакции XADisk и декларативного подхода в Spring, нужно чтобы обе транзакции(БД и ФС) были в одном методе(ACID все дела). Таким образом транзакция в БД будет открытой долгое время при записи файлов на диск.
...
Рейтинг: 0 / 0
25 сообщений из 47, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Алгоритм транзакции при записи на диск и в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]