|
|
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Помогите, как реализовать правильный алгоритм Исходные переделываем систему на двухфазную фиксацию java se, 2 oracle db (локальная и удаленная). Нужно реализовать циклическую выгрузку из одной базы в другую. В качестве прототипа работы транзакциями - вот этот пример Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. Логика приложения 1. читаем в цикле курсором READONLY данные из таблицы источника в удаленной базе 2. проверяем (select READONLY) что в локальной базе разрешен процесс вставки 3. блокируем (select for update) обрабатываемую запись в таблице источнике в удаленной базе 4. в локальной базе создаем savepoint. 5. раскладываем данные по нескольким таблицам с локальной базе (INSERT, UPDATE, MERGE) 6. если в процессе записи в локальной базе есть логические ошибки, откатываемся до savepoint, и пишем данный в промежуточные таблицы для дальнейшего разбора. 7. пишем логи в удаленной базе и меняем статусы 8. commit 9. крутим цикл Вопросы 1. будет ли работать rollback to savepoint в XA реализации 2. так как точка фиксации транзакции внутри курсора, достаточно ли будет 2-х коннектов к базам данных, или 2 к одной и 1 к другой ? 3. правильно ли я понимаю, что начало транзакции - это // Start the Resources oxar1.start (xid1, XAResource.TMNOFLAGS); 4. что является окончанием транзакции ? Завершением работы с ресурсом или commit/rollback? oxar1.end(xid1, XAResource.TMSUCCESS); или if (prp1 == XAResource.XA_OK) if (do_commit) oxar1.commit (xid1, false); else oxar1.rollback (xid1); «Никогда не поздно стать тем, кем ты мог бы быть». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 14:27 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
А зачем руками всё делать? https://www.atomikos.com/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 15:15 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
А есть примеры внедрения этого решения в существующую систему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 15:27 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Раздел samples на этом ресурсе не открывается. Не могу оценить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 15:32 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmac, Savepoint тут не нужен. Достаточно begin tran. Ну и репликацию зачем забыли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:20 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
как без savepoint откатиться до предыдущего состояния данных ? репликацию ? При чем здесь репликация ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:28 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmac, Откат транзакции вернет на начало. Точки для много точек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:35 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Petro123, возможно я не полностью описал логику, до rollback to savepoint выполняется dml, который не нужно откатывать. откатываем только часть транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:44 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Распределенные это две пишущие. У тебя одна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:45 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmac, Ну да. Описал ты Решение. А нужно задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:46 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Petro123, У меня 2 пишущих. Задача - модифицировать наше приложение, с учетом поддержки XA транзакций. Упрощенный алгоритм работы компоненты приложения привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:50 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmac2. проверяем (select READONLY) что в локальной базе разрешен процесс вставки а почему он может быть запрещён, если оракл не блокировочник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:01 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Бизнес выставляет запрет вноса изменения в базу. Вообще это к делу не относится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:03 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacрепликацию ? При чем здесь репликация ? вдруг вы не в курсе что это: blackmacНужно реализовать циклическую выгрузку из одной базы в другую. оракл умеет сам. Только IP другой БД укажи. И старше XE должен быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:03 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacБизнес выставляет запрет вноса изменения в базу. так и говори. Относится. Пусть будет так - они ставят палки в колёса))). Будем обрабатывать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:04 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacБизнес выставляет запрет вноса изменения в базу. Вообще это к делу не относится. подумал. Всё равно не выходит. Надо их послать подальше). Вот это: автор2. проверяем (select READONLY) что в локальной базе разрешен процесс вставки не будет означать что бизнес разрешил т.к. ты раскидываешь потом вставку. Т.е. ты блокировкой проверил таблицуА и ЗАПИСЬ1234. А работать будешь с MERGE\INSERT. Т.е. с совершенно другими объектами. Пусть придумают другой флаг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:14 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacдо rollback to savepoint выполняется dml, который не нужно откатывать. откатываем только часть транзакции. нифига себе. Ты страшные слова не пиши. DML это обычные insert\update. Только что тут не надо откатывать? Автономные транзакции логирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:25 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmac2. проверяем (select READONLY) что в локальной базе разрешен процесс вставки 3. блокируем (select for update) обрабатываемую запись в таблице источнике в удаленной базе т.е. представляешь, ты в цикле на лимон записей будешь ставить блокировку в обе базы внутри цикла FOR{ ....... Ну и не вижу пока распределённой ВТОРОЙ транзакции WRITE на ВТОРОЙ сервер. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:32 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Petro123, 5 и 6 - write в одной базе данных 7 - write в другой базе данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:45 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacPetro123, 5 и 6 - write в одной базе данных 7 - write в другой базе данных а если так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:51 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
Petro123, Подразумевается что это транзакция в одной из баз данных ? А где управление транзакцией в другой базе ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:55 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
blackmacА где управление транзакцией в другой базе ? так? Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 18:05 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
в моём примере тоги лог-флаг в пишущей второй. Это можно и без распределённой. Вот если бы ты удалял (перенос) объектов - тогда Да! Распределённая в чистом виде. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 18:17 |
|
||
|
алгоритм работы с распределенными транзакциями
|
|||
|---|---|---|---|
|
#18+
окапечатка Petro123в моём примере тоги лог-флаг в пишущей второй. во второй пишущей только ставим логи-флаг-галку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39431065&tid=2123013]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 431ms |

| 0 / 0 |
