|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Добрый день! Наконец я добрался до автоапдейта программы. С апдейтом самой программы особых вопросов не возникает а вот как лучше вносить изменения в БД хотел спросить опытных людей. До сих пор обновлялся вручную: 1. Менял exe 2. Сравнивал старую и новую базы в IBExpert. Теперь количество торговых точек выросло и делать так стало долго и затруднительно. Тут я лично вижу 2 пути: 1. Держаться версий программы, т.е. хранить версии баз (пустых, только метаданные) и посылать в обновлении ехе+скрипт. 2. Посылать пустую эталонную базу сравнивать и вносить изменения на месте. Прошу совета. Заранее спасибо. ПыСы. Версия Firebird к моменту запуска будет 2.5.5 (без вариантов). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:40 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Второй - не вариант. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:45 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Hello, Mironico! You wrote on 11 февраля 2016 г. 17:46:48: Mironico> 2. Посылать пустую эталонную базу сравнивать и вносить изменения на месте. не взлетит Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:46 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Mironico, иногда путей больше двух. чистая БД + средство перекачки с предыдущей версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:52 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
pastorMironico, иногда путей больше двух. чистая БД + средство перекачки с предыдущей версии. Геморно имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:54 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Hello, Mironico! You wrote on 11 февраля 2016 г. 17:59:19: Mironico> Геморно имхо скажи лучше "не умею" Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 17:59 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Мимопроходящий, "Средство перекачки" уже есть или самому выдумывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:05 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Mironico, Можно отсылать не эталонную БД, а набор скриптов, которые обеспечивают апдейт метаданных до нужной версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:06 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Hello, Mironico! You wrote on 11 февраля 2016 г. 18:11:36: Mironico> "Средство перекачки" уже есть или самому выдумывать? на этом можно ставить точку. задача решения не имеет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:12 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
+1 насчет набора обновляющих скриптов. В которых кроме изменения метаданных также удобно обновлять данные (эталонные справочники, новые дефолтные значения полей и прочее). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:15 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Вот, кстати, давнее обсуждение темы. Не знаю, что к нему можно добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:24 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Mironico, В данных базы храни номер версии структуры. В коде приложения - тоже. Если первый номер больше второго - обновляешь приложение. Если наоборот - обновляешь структуру базы. Для обновления структуры коннектишься в монопольном режиме и последовательно, от версии к версии накатываешь скрипты обновления. Которые ты заранее оттестировал. В начале каждой итерации обповления в базу пишешь: "начато обновление структуры 12->13". По успешному завершению этапа итерации эту пометку удаляешь. "Смыть, повторить." ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:37 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
ZeroMQВ начале каждой итерации обповления в базу пишешь: "начато обновление структуры 12->13". И главное - не забыть сделать бекап перед началом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 18:58 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovZeroMQВ начале каждой итерации обповления в базу пишешь: "начато обновление структуры 12->13". И главное - не забыть сделать бекап перед началом. Естественно... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 19:03 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ,...и восстановить его :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 19:07 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
AriochDimitry Sibiryakov, ,...и восстановить его :-) ... если что-то пошло не так. В противном случае - отложить в сторонку. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 19:15 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
DarkMaster, проверочно восстанавливать fbk надо всегда, иначе зачем он нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 20:09 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Arioch, Ну это как бы по умолчанию - те, кто этого не делает- те еще камикадзе. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 20:18 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
мне кажется, основная проблема обновлений - это пропуск части обновлений. Взять, к примеру, 1с. Обновления конфигурации там выходят по разу в неделю, и это реально задалбывает. Однако если на версии 4 пропускаешь обновления 5, 6, 7, то есть варианты 1. обновлятор должен определить, с какой версии делается обновление, и по очереди применить пропущенные 2. обновлятор должен уметь обновлять базу с любыми пропусками. т.е. с 4 на 8 - выполнить одноразовое обновление. Вроде бы обновлятор 1с работает как раз по второй схеме. Но для 1с 7.7 были случаи, когда после наката обновлений с пропусками получался какой-то звездец, который непонятно было как расколупать даже с "табличным" хранением данных в этой версии. Впрочем, 1с - это ведь "платформа". То есть, это скорее обновление данных, чем метаданных. Поэтому должно быть проще, чем с конкретной прикладной системой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 20:42 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovZeroMQВ начале каждой итерации обповления в базу пишешь: "начато обновление структуры 12->13". И главное - не забыть сделать бекап перед началом. Не универсально. Есть большие базы. Универсально - накатывать изменения в одной транзакции, включая структуру и данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 20:55 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
fb user, расскажи это Оракулу, у которого любой DDL неявно в транзакцию оборачивается ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 20:58 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Симонов Денисfb user, расскажи это Оракулу, у которого любой DDL неявно в транзакцию оборачивается Сравнивать нужно не с Oracle, а с тем как оно наиболее юзабельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:10 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
fb userЕсть большие базы. Их вообще никогда не обновляют. Тем более - автоматически. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:13 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovfb userЕсть большие базы. Их вообще никогда не обновляют. Тем более - автоматически. База в гиг - уже большая, если стоит на ноутбуке и синхронизируется с сервером как по структуре, так и по данным, особенно если это происходит раз в несколько минут. У вас репликатор реплицирует метаданные? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:18 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
fb user, Обновление метаданных раз в несколько минут? Это особый путь джедая. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:26 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
DarkMasterОбновление метаданных раз в несколько минут? Нет. Только при изменении структуры в главной базе. А она там может измениться например накатом обновления, включающим как изменения структуры, так и изменения данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:36 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
fb userБаза в гиг - уже большая, если стоит на ноутбуке и синхронизируется с сервером как по структуре, так и по данным, особенно если это происходит раз в несколько минут. Даже на ноутбуке гигабайтная база - игрушечный размер. С репликацией метаданных это к Red Database, они такое делают. Я - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:50 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
fb user, это, давайте вопрос репликации (метаданных) отдельно. Это уже следующий вопрос, после реализации обновлений метаданных БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 21:56 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Буду как и планировал скриптами от версии до версии. Еще что хотел спросить.. Юзаю FIB, есть там pFIBBackupService, не могу понять как проконтролировать удачно ли прошел бэкап. В доках не совсем понятно, получается только через лог? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 09:48 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
kdvВроде бы обновлятор 1с работает как раз по второй схеме.Нет, скорее по первой. Обновления должны устанавливаться по очереди, хотя некоторые "немножко кумулятивные", и включают в себя возможность перепрыгнуть пару-тройку обновлений. Теоретически, могут быть полные кумулятивные обновления, но на практике такого не бывает. И кстати, обновлятор не умеет "по очереди применить пропущенные". Пользователь нажимает "попробовать обновиться", и обновлятор показывает, до какой версии он может обновиться с текущей. После обновления пользователь опять нажимает "попробовать обновиться", и обновлятор опять выдаёт следующую доступную версию, либо "обновлений не обнаружено". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:01 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
MironicoБуду как и планировал скриптами от версии до версии. Еще что хотел спросить.. Юзаю FIB, есть там pFIBBackupService, не могу понять как проконтролировать удачно ли прошел бэкап. В доках не совсем понятно, получается только через лог? При ошибке компонент выбрасывает исключение. Код: pascal 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 23:14 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
ZeroMQПри ошибке компонент выбрасывает исключение. госсподи! какое исключение и на какой строке кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 00:31 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
kdvZeroMQПри ошибке компонент выбрасывает исключение. госсподи! какое исключение и на какой строке кода? Нискажу. Зачем ты "госсподи!" написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 00:53 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
У меня так: версия БД в проге, версия БД в БД. Для простоты сравнения версии нумеруются #..#.## (ровно две цифры в "дробной" части, она же minor version). Если App_DBVer < DB_DBVer - отлуп, надо обновить прогу. App_DBVer > DB_DBVer - запуск обновлятора, который пошагово наращивает версию до текущей. Для простоты (база небольшая и доступ локальный-эксклюзивный) сделал копирование файла БД и применение обновлений к нему, после чего файл подменяется. Надо бы транзакциями, но тогда возникает проблема использования измененных метаданных в рамках той же транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 14:45 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Го-стхитогда возникает проблема использования измененных метаданных в рамках той же транзакции. а базу в single-user mode переводишь? IMHO корректно такая задача расшивается только *отдельным процессом* обновлятеля, который к тому же просьбами и пинками выгонит из БД всех пользователей перед обновлением. а после обновления, заново соединяясь уже и метаданные перечитаются на клиентах ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 17:15 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
...ну и добавление где надо действия "re-connect" в скрипты самого обновлятеля, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 17:17 |
|
Внесение изменений в БД при апдейте приложения.
|
|||
---|---|---|---|
#18+
Ariochа базу в single-user mode переводишь? Пока не было такой нужды, просто отсоединял коннект в самой программе, дальше копирование и обновление копии. Разумеется, сие только для локального эксклюзивного применения. Для муьтиюзера придется придумывать более мудрую схему. а после обновления, заново соединяясь уже и метаданные перечитаются на клиентах Не в том дело, просто иногда без реконнекта не идут некоторые апдейты. А если сделать реконнект - уже будет больше одной транзакции, что делает затруднительным консистентный откат к предыдущей версии в случае непредвиденностей. Разве что разносить несовместимые изменения по двум разным апдейтам... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 10:50 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562329]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 409ms |
0 / 0 |