|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Добрый день. Нарисовалась тут задачка. Никак не соображу в какую сторону копать ... Код: plaintext 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.
PS. Под "монстром" понимайте то, что я пытаюсь изобрести. Ну или себя, любимого, если сможете решить ж-( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 11:46 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
mike909 PS. Под "монстром" понимайте то, что я пытаюсь изобрести. Оригинальная постановка задачи. Эта что то вроде шарады ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 11:48 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glory, Нет, просто для "повышения" интереса ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 11:49 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
mike909Glory, Нет, просто для "повышения" интереса ... А постановку задачи каждый должен сам себе сделать ? И версию сервера тоже выбрать сам ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 11:50 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glory, Код: plaintext 1. 2. 3.
Постановка задачи в конце SRC. Код: plaintext 1. 2.
А в IF'е - три варианта результатов, которые нужно получить. Мне действительно реально нужно найти пути решения. Т.е. это не шарады и не понты. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:03 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
У тебя сервет 2005 - приведи тестовые данные в виде WITH ... AS ... И желаемый результат на этих данных в зависимости от значения свитча. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:09 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
А UNION не помогает вам объединить несколько наборов в один ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:09 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glory, Добрый Э - Эх Для получения примера необходимого мне результата нужно закоментраить Код: plaintext 1. 2.
Так для @switch = 0 должно получится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Для @switch = 1 должно получится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Для @switch = 2 должно получится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Вторая выборка (sum, cnt) приведена лиш для понимания критерия отбора наборов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:23 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
select'ы в IF'е совершенно левые, они показывают только лишь то, что должно получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:25 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
mike909Glory, Добрый Э - Эх Для получения примера необходимого мне результата нужно закоментраить Ну так вы и получаете результат. В чем проблема то ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:30 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glory, mike909select'ы в IF'е совершенно левые, они показывают только лишь то, что должно получится. Нужно заменить их на то что будет получать тоже самое, но основываясь на значениях @switch и второй выборки (sum, cnt). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:35 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
mike909Glory, mike909select'ы в IF'е совершенно левые, они показывают только лишь то, что должно получится. Нужно заменить их на то что будет получать тоже самое, но основываясь на значениях @switch и второй выборки (sum, cnt). Вы можете нормально показать, какой результат вам нужен из ваших данных ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:36 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Интересные нынче задачи пошли: при одних значениях переменных получались такие значения, при других значениях. Что с чем как связано - догадайся сам по пытке афтора нарисовать решение... Аффтар научись формулировать задачу на русском языке. Мне вот чего-то кажется, что там "монстр" не больше кролика. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 13:13 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glory, Перевожу: Существуют элементы (таблица @df), объединенные наборами (заменим на слово группа) - таблица @ds. Каждый елемент может находится в разных группах в одном экземпляре и в любом сочетании с другими элементами. Нужно получить такой список групп, который содержит все элементы по условию ([is_ro] = 1) и 1) (@switch = 1) Сумма всех [size] в выборке минимальна 2) (@switch = 2) Количество групп в выборке минимально 3) (@switch = 3) Количество групп в выборке минимально и сумма всех [size] в выборке минимальна ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 13:22 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
mike909Glory, Перевожу: Покажите, какой результат вы хотите получить из ваших данных ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 13:26 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Glorymike909Glory, Перевожу: Покажите, какой результат вы хотите получить из ваших данных См. выше. mike909Glory, Добрый Э - Эх Для получения примера необходимого мне результата нужно закоментраить Код: plaintext 1. 2.
Так для @switch = 0 должно получится: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 13:42 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
UP. А так понятней ? Код: plaintext 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.
Все было ниичаго, пока добрый админ системы резервного копирования не залимонил полный Backup. В результате чего стало понятно, что ф-я работает не верно Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Как видно 15_я заись от "Data Protector" о полном Backup_е совершенно не нужна. Но вопрос не в том - как ее отфильтровать, а в том как правильно решить задачу для @swith = "1" - минимальный по сумарному размеру набор актуальных Backup_ов. Имеется ввиду острая нехватка дисков для восстановления. Уменя есть около 500 GB на все про все, а таких баз у меня несколько. "2" - минимальный по количеству набор актуальных Backup_ов. Имеется ввиду, что места на дисках много, нужно минимизировать кол-во команд "Restore" "3" - минимальный по количеству и размеру набор актуальных. Ну тут я и сам пока не очень понял чего хочу (предчувствую - сейчас объявятся учителя правильного "формулирования задач на русском языке") PS. Да, функцию dbo.DbFilesOnDate() можно заменить на sys.master_files ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 16:12 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
что-то смысл задачи всё дальше и дальше... разве минимальным набором актуальных бекапов не будет последний полный бекап + все дифференц. бекапы бекапы после него? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 17:33 |
|
Задачка для "монстра"
|
|||
---|---|---|---|
#18+
Итак о смысле задачи. Имеем 6_ти нодовый кластер под SQL_и. На каждой ноде по одному инстансу с VLDB_шками весом от 1.5 TB до 4 TB. Все VLDB_шки построены по одному принцыпу - одна (или несколько) секционированных таблиц с данными, и небольшая кучка справочников. Таблица данных содержит как оперативные данные ReadWrite (3 файловых группы), так и исторические ReadOnly (11 штук) Весь софт написан с таким расчетом, чтобы не привязываться к структурам таблиц и функциям секционирования, но при этом обеспечивал полностью автоматическое движение окна для любых функций секционирования. Отсюда все VLDB_шки имеют один и тот-же системный софт. Конечно, для каждой бизнес задачи есть свой, дополнительный софт, но речь не об этом. Соответственно имеем работающие (уже более 1.5 лет) базы, у которых меняется состав файловых групп: откусывание совсем старых данных; добавление новых; изменение состояний (RW to RO); миграция на дешевые носители; и т.д. и т.п. И все это, то, что я вкладываю в определение "движение окна". Имеем систему "резервного копирования" - Data Protector (ранее был ArcServe), который, со слов админа этого чуда, может делать Backup_ы только всей базы. Более того, еще и удалять забэкапленное не могет, только через PosScript_ы, да и то не в состоянии передать в оные что было успешно забэкаплено. В общем, чУдесная систем. Имеем стандартную задачу - создать механизм резервного копирования на случай попадания ядреной бомбы в SAN (т.е. в диски кластера). При этом, добится максимальной скорости запуска баз в эксплуатацию после такого сбоя. Имеем могучую кучку других автоматизированных систем, которым, как ни странно, тоже хочется backup_иться, да еще и почаще. А тут я, со своими террабайтами. Короче, после изучения BOL'а, принимаю решение отказаться от стандартных схем основанных на полных backup_ах и прейти к такой схеме: 1) При смене статуса фаловой группы с RW на RO созадю RO_backup и забываю о нем. 2) При откусывании устаревшех данных (одна файловая группа) backup_лю ее c PRIMARY (чтоб можно было восстановить как отдельную базу) и забываю навеки о нем. 3) Периодически (раз в неделю или произойдут события из п.п. 1,2) создаю backup всех ReadWrite фаловых групп. Последний такой backup является базой для DIFF'ов и ресторится первым. И весит не много (см. отношение кол-ва RO к RW файловых групп) 4) В промежутках DIFF backup_ы. Log'ов у меня нет - модель SIMPLE... Данные можно перезагрузить... 5) Все полученные Backup'ы скармливаю Data Protector_у - нихай этот долгоносик подавится (С) анегдот. 6) Подчищаю за ним (убиваю забэкапленное им) т.к. диск у меня масенький - 500 GB на все про все. Хитроглазый_оОчто-то смысл задачи всё дальше и дальше... разве минимальным набором актуальных бекапов не будет последний полный бекап + все дифференц. бекапы бекапы после него? mike909 Ответ, как видно из описанного выше - НЕТ. Есть еще отдельные backup_ы ReadOnly файловых групп. Для скорейшего запуска системы необходимо и достаточно восстановить все что Вы сказали. Пустить пользователей и др. системы. А затем,не спеша и в произвольном порядке, восстанавливать отдельные Backup_ы ReadOnly файловых групп. Я пытаюсь описать задачу поиска этих самых ReadOnly Backup'ов с учетом защиты от "добрых" админов "Data Protector", которые, не знаю с какого будуна, решили забэкапить одну из моих VLDB_шек. А еще учесть острую, или не совсем, нехватку дикового пространства. P.S. Если кто знает более оптимальный способ решить задачу, то готов очень внимательно изучить Ваши предложения. P.S.S. Кстати, данная схеме не чито мое изобретение. Схема родилась после долгих консультаций с премъер поддержкой Микрософта. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 11:54 |
|
|
start [/forum/topic.php?fid=46&msg=35649658&tid=1740680]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 22ms |
total: | 159ms |
0 / 0 |