powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Алгоритм транзакции при записи на диск и в БД
47 сообщений из 47, показаны все 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
Алгоритм транзакции при записи на диск и в БД
    #38188491
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmЯ чуть о другом. При использовании транзакции XADisk и декларативного подхода в Spring, нужно чтобы обе транзакции(БД и ФС) были в одном методе(ACID все дела). Таким образом транзакция в БД будет открытой долгое время при записи файлов на диск.
Непосредственно создать файл можно попробовать не транзакционно. А потом перенести в рамках транзакции.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188493
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
1. У тебя видео файлы, что ты БД жалеешь?. Всегда надо чем-то жертвовать во имя простоты (с)
2. Там наверняка есть эмуляция транзакции чтобы обойти эту проблему.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188498
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
+1
ну, ручная транзакция в пределах класса СВОЕГО.
Всё равно try писать и райзе могут быть.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188505
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую XADisk и свой велосипед)
Спасибо за советы)
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188506
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ты бэкапить будешь свои файлики? Клади в базу.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188512
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪКак ты бэкапить будешь свои файлики? Клади в базу.
Так я 19 числа каталог 2013/3/18/ в архив и куда нить отправлю типа AWS S3 )
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188513
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪКак ты бэкапить будешь свои файлики? Клади в базу.
клиент ещё не созрел))
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188533
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Йуный джавистЪКак ты бэкапить будешь свои файлики? Клади в базу.
клиент ещё не созрел))
люди делятся на тех, кто не делает бэкап и тех, кто его уже делает)
Чуть позже, чуть позже)
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188534
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я 19 числа каталог 2013/3/18/ в архив и куда нить отправлю типа AWS S3 )

Почитай например http://www.postgresql.org/docs/current/static/continuous-archiving.html
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188557
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪТак я 19 числа каталог 2013/3/18/ в архив и куда нить отправлю типа AWS S3 )

Почитай например http://www.postgresql.org/docs/current/static/continuous-archiving.html
Я все пытаюсь найти обзор(компетентных людей) о плюсах и минусах сохранения файлов в БД или ФС, с красивыми графиками).
Может быть у вас есть подобный материал?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188590
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
просто поверь - вопрос не актуален. Устарел). Не парься.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188593
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rdm,
просто поверь - вопрос не актуален. Устарел). Не парься.
Т.е. всё сохраняют в базе?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188595
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты не создаешь новый инстаграм то клади в базу - никакой дополнительной возни с бэкапом.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188604
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЕсли ты не создаешь новый инстаграм то клади в базу - никакой дополнительной возни с бэкапом.
Это понятно. Вопрос в том с какими проблема сталкивается сферический "инстаграм" (я не знаю как он там что хранит). В сетевые задержки? Т.е. в каких случаях хранить в базе однозначно плохо. От противного станет понятно в каких хорошо.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188691
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmПри использовании транзакции XADisk и декларативного подхода в Spring, нужно чтобы обе транзакции(БД и ФС) были в одном методе(ACID все дела). Таким образом транзакция в БД будет открытой долгое время при записи файлов на диск.Нифига подобного.
XADisk-у скармливается группа операций и он делает или всё или ничего. Если ничего - запротоколировали ошибку, кинули исключение или что там положено по бизнес-логике.
Если XADisk сделал всё - отражаем эту группу операций в базе. Если откат или исключение - протоколируем ошибку, кидаем исключение или что там положено по бизнес-логике, потом скармливаем XADisk-у (немного) другую группу операций и он "откатит" то, что "накатил". Если ошибка - протоколируем, кидем исключение или что там по бизнес-логике.
Таким образом, транзакции файловой системы никак не связаны с транзакциями базы данных.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188696
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЕсли ты не создаешь новый инстаграм то клади в базу - никакой дополнительной возни с бэкапом.Это если разработчик озаботился вопросами экономии места.
А то всяко, знаете ли, бывает, а бэкапить половинку терабайта не так вдохновительно, как вы думаете.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38188733
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovrdmПри использовании транзакции XADisk и декларативного подхода в Spring, нужно чтобы обе транзакции(БД и ФС) были в одном методе(ACID все дела). Таким образом транзакция в БД будет открытой долгое время при записи файлов на диск.Нифига подобного.
XADisk-у скармливается группа операций и он делает или всё или ничего. Если ничего - запротоколировали ошибку, кинули исключение или что там положено по бизнес-логике.
Если XADisk сделал всё - отражаем эту группу операций в базе. Если откат или исключение - протоколируем ошибку, кидаем исключение или что там положено по бизнес-логике, потом скармливаем XADisk-у (немного) другую группу операций и он "откатит" то, что "накатил". Если ошибка - протоколируем, кидем исключение или что там по бизнес-логике.
Таким образом, транзакции файловой системы никак не связаны с транзакциями базы данных.
Между тем как XADisk сделал коммит, а потом ему придется откатывать(в случае исключения со стороны БД) кто-то или что-то может изменить файлы. Нет? Или я что-то не понимаю) Т.е. это перестанет быть единой транзакцией, так как происходить они будут отдельно. Опять же я дилетант и могу ошибаться.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38190009
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmМежду тем как XADisk сделал коммит, а потом ему придется откатывать(в случае исключения со стороны БД) кто-то или что-то может изменить файлы.И что?
В самом пиковом раскладе получите мусор в хранилище - файлы есть, но никем не используются.
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38190577
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovrdmМежду тем как XADisk сделал коммит, а потом ему придется откатывать(в случае исключения со стороны БД) кто-то или что-то может изменить файлы.И что?
В самом пиковом раскладе получите мусор в хранилище - файлы есть, но никем не используются.


мусор надо чистить, только наоборот, сначала добавлять в БД, затем сохранять на диск, ну и при доступе к записи, у которой нет файла, делать варнинг и временно блокировать запись до разрешения коллизии, можно через флаг типа disabled = 1
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38191835
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой днямусор надо чистить, только наоборот, сначала добавлять в БД, затем сохранять на диск, ну и при доступе к записи, у которой нет файла, делать варнинг и временно блокировать запись до разрешения коллизии, можно через флаг типа disabled = 1Сразу вспоминается одна из "последних страниц" журнала "Техника - молодёжи" - "Зачем просто, когда можно сложно".
До наиболее экстравагантных конструкций ещё не дотягиваете, но вы работайте, работайте ...
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38197206
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
А что такое "максимально быстро" ?
...
Рейтинг: 0 / 0
Алгоритм транзакции при записи на диск и в БД
    #38197778
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае "максимально быстро" означает: "получил результат из базы - заверши транзакцию и уже потом сбрасывай полученное на диск".
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Алгоритм транзакции при записи на диск и в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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