gifts2017

"Сделай сам" свою самую быструю перегрузку (видео). Использование технологии SQL Server IS для быстрых перегрузок данных.

Опубликовал Олег Филиппов (comol) в раздел Обмен - Обмен с другими системами

Видео, демонстрирующее использование SSIS для нужд 1С. Пример очень простой, но поможет сделать "первый шаг", а потом вы сами поймете, какие возможности перед вами открывает этот механизм, и будете им пользоваться. SSIS это службы, поставляемые MS SQL Server для различных перегрузок данными. Существует достаточно простой и удобный визуальный конструктор, взаимодействие с различными ODBC и даже не ODBC источниками данных, кроме того технология использует bulk insert что обеспечивает даже для SQL Server очень высокую скорость перегрузки

На видео приведена простейшая демонстрация перегрузки РС "Адресный классификатор" из одной базы в другую, на очень медленной машине. Казалось бы ничего необычного, вот только перегрузка происходит за 2-3 секунды. Далее для примера запустил всеми любимую обработку "Выгрузка загрузка данных XML". Собственно, 2 минуты видео она честно проработала - дальше выключил.  А на "правильном" оборудовании эта разница будет только увеличиваться. Далее подумайте сами  - восстановление из резервной копии всего партионного учета за месяц в считанные минуты становится возможным (пересчет итогов только потом нужно будет сделать)... быстрая инициализация нового узла РИБ прямо из рабочей базы всеми нужными справочниками - без проблем. Использую ещё для загрузки журнала регистрации в отдельную SQL базу... но тут нужна уже некоторая сноровка... хотя бы для создания новой базы и её использования. В общем, основной смысл видео - показать, что такая возможность есть, и  работает. Естественно, использование подхода - на свой страх и риск, материал приведён только с академической целью.

Сама технология "стара как мир". Была ещё в SQL Server 2000 - называлась DTS, в SQL Server 2005 стала называться SSIS. На сегодняшний день это самый быстрый механизм переноса данных между 2-мя системами (по крайней мере более быстрого мне не известно). Мне лично бывает очень полезным для восстановления частей базы их резервной копии.

Представьте себе ситуацию: кто-то немного поработал задним числом, дату запрета редактирования вы после всех согласований, скрипя сердцем, сдвинули, а человек что-то сделал не так (ну пятница была, конец рабочего дня). После чего запустил, или запустилась сама обработка... ну к примеру "Проведение по партиям" и пересчитала за ночь партии за полгода. Через пару дней к вам пришли с вопросами вида "а как так получилось что......!!!". Вы, естественно, быстренько найдёте виновного по ЖР. Вот только вопрос "что делать" не решен... Есть конечно backup до его действий. Но как потом смотреть людям, которые 2 дня в базе работали в глаза. Можно попытаться пересчитать партии ещё раз. Вот только есть ли у вас уверенность что они сойдутся?.... Конечно хорошо бы взять весь регистр ПартииТоваровНаСкладах и перенести за полгода. И это тоже можно. Выгрузка - загрузка данных XML. Вот только компания у вас не маленькая... и выгрузить регистр за полгода, а потом его загрузить.... это XML файл гигабайт на 10... дня 3-4 будет перегружаться.... если вообще перегрузится.


Собственно видео:

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Роза (DoctorRoza) 30.10.11 11:52
Видео, конечно, хорошо, но вот хоть мало мальское объяснение "чегоделания" было бы еще лучше! Ну хотя бы .. в академических целях! :)
2. Артур Аюханов (artbear) 30.10.11 14:18
4. Нина Плюшкина (php55) 30.10.11 21:07
Интересный способ. Взял на заметку. Правда область применения не особо понятно, только если базы идентичны возможно....
5. Роман Романов (romansun) 31.10.11 00:17
insert into Таблица
select *
from Таблица_РезервнаяКопия
where <по желанию>

тож быстро работает... :) конечно, любой прямой доступ к базе работает во сто крат быстрее любой 1С-ной обработки переноса

имхо, между 1С и 1С проще запрос написать, чем DTS пользоваться. Особенно, если базы идентичны - тогда запросы обычно несложные.

А вот "засасывать" в sql всякие эксели и пр. - да, очень удобно и очень быстро через DTS. Особенно учитывая возможность еще подписать запрос для заливки.

(1)(2)(3) Ну это просто визуальное типа конструирование запросов с возможностями маппинга, запросов на отдельные поля и вытаскивание инфы из внешних источников (баз, файлов и т.д.) и еще много чего. Типа конструктора запросов в 1С получается. А учитывая 8.2.14 (внешние источники данных) - наверное вообще сильно похоже (сам еще не видел, к сожалению).

Насчет ссылок - sql просто копирнёт таблицу, да и всё. Попадутся ссылки "без адреса" - будет битая ссылка, наоборот - всё будет отлично.

Удачное применение таких "технологий" - форсмажорное "пофигачивание" данных и моментальное восстановление из резервной копии. Пример: разработчик писал обработку/скрипт по зачистке каких-либо данных из справочника. Написал, запустил, зачистил. Всё гут. Но тут внезапно выясняется, что зачистил не то или не так. Тут же берется бэкап до момента очистки, поднимается и из него скриптом или подобным сервисом справочник моментально восстанавливается. Пользователи, бывает, даже не успевают заметить недоброе.
6. Олег Филиппов (comol) 31.10.11 08:55
(5) romansun, Собственно всё за меня ответили.
Вот только Insert из таблицы в БД на другом сервере я не знаю как делать... в 2008 вроде "связанные серверы" появились, но может как-то по-другому можно.

И в SSIS там вроде используется bulk insert (без проверки constraint), что намного быстрее обычного insert.
7. Артур Аюханов (artbear) 31.10.11 10:23
(6) Автор, поправь тему, добавь немного описания о технологии (например, из других источников или хотя бы из комментов), иначе сниму публикацию.
Пользователи сайта сразу должны видеть "правильную" инфу, а не получать/додумывать ее.
8. Роман Романов (romansun) 31.10.11 10:47
(6)

дык, sp_addlinkedserver

а потом как обычно с указанием полного "пути", например

update ОЗК 
set Наличие_Партий = ТМЦ.Наличие_Партий
from ОЗК
left join serversql.buh_2005.dbo.ТМЦ as ТМЦ 
    on ТМЦ.Код = ОЗК.Код
...Показать Скрыть


(7) да, описания нужно
9. Олег Филиппов (comol) 31.10.11 14:16
(7) artbear, Описание добавил. Не думал что вопросы возникнут.
10. Олег Филиппов (comol) 31.10.11 14:18
(8) romansun, Спасибо. Я так в принципе и думал. Но bulk insert быстрее в SSIS люди пишут, иногда наверное запросом удобнее, хотя мне как 1С-нику приятнее уже "картинки таскать" :)
11. Олег Филиппов (comol) 31.10.11 14:24
Видимо описание нужно было сразу добавить... так никто не понял что это такое, сейчас народ уже не прочитает...
12. Артур Аюханов (artbear) 31.10.11 15:16
(11) Конечно, сразу правильнее.
Не понял, почему (цитата) "сейчас народ уже не прочитает" ?
13. Олег Филиппов (comol) 31.10.11 15:57
(12) artbear, А как я понимаю если публикацию публикуешь... она попадает в "новые" на главной странце... потом если набирает определенное количество "плюсов" - в "в центре внимания", а потом если прошла экспертную проверку - "рекомендованные сообществом". Всё это время она висит на главной странице, собственно те кто заходят прочитывают оценивают.. а если сразу "порог плюсов" не прошел - уже в архиве...

А штука то вообще полезная...
14. Трактор Трактор (Трактор) 31.10.11 16:32
Офигеть! Публикация заслуживает минуса как провокация новичков к опасным действиям. Как противоречащая позиции самого автора. Comol, ты тут http://infostart.ru/public/95484/ называешь "идеальным" работника который имеет сертификаты и знает стандарты. И тут же сам учишь людей нарушать требования стандартов, лицензионное соглашение с 1С.
Ты сторонник формальной оценки. Так вот. Данный приём чрезвычайно рискован и не может быть использован специалистом ниже 6-го дана, не имеющим сертификатов от 1С и Микрософта. А специалисты 8-го дана имеющие сертификаты и без того знают этот путь. Вывод по формальным признакам: Публикация вредна!
15. Олег Филиппов (comol) 31.10.11 16:48
(14) Трактор, Нууу... не могу не согласиться... я же пишу "после резервной копии" и очень аккуратно. Как раз если знаешь все стандарты и принципы... и идёшь на нарушение осознанно... только когда вариант или потеря данных или такой... В случае с восстановлением из резервной копии человек в (5) достаточно правильно написал что восстановить часть таблицы иногда ооочень нужно.

Я просто видео это делал даже не для инфостарта изначально... понимаете... у людей было столько радости.
16. Владимир (hogik) 31.10.11 17:59
Плюс на (14), и минус на (0).
Увы... :-(
18. Артур Аюханов (artbear) 31.10.11 18:11
Не согласен с (14). Минусанул (14)
Давайте все запретим по причине "ах, он может зайти в Конфигуратор и что-нибудь удалить/напортачить" :(
21. Олег Филиппов (comol) 31.10.11 20:51
(18) artbear, Двояко можно понять... с одной стороны конечно опасный инструмент, с другой - может оказаться "спасительным" в некоторых случаях, поэтому ИХМО знать о нём я считаю людям нужно...
Если бояться и ничего не делать можно так ничего и не узнать.
О том что можно что-нить напортить я написал, о том что только после бэкапа - тоже... по большому счету "в массу" не пошло поэтому что тут сейчас дискутировать.
23. Роман Романов (romansun) 31.10.11 21:59
Публикация из серии "Achtung. Прямой доступ к данным. Access denied ниже 6 дана". Там где-то надо про это красненькими буквами написать и убрать "заигрывающую" риторику про "сделай сам" свою самую быструю перегрузку". Это как реклама курева и пива, рассчитанная на подростков.. Просто "Использование технологии SQL Server IS для быстрых перегрузок данных" достаточно, имхо.

Конкретно по теме - после предыдущих публикаций автора я ожидал развернутое такое описание технологии SSIS (в девичестве DTS) на пару страниц. С примерами, скажем, загрузки экселей, dbf. Какой-то миграции 1С-1С. Отличия от DTS (поскольку, наверно, на sql2000 большинство еще) и т.д. А получил суровое молчаливое видео.. Что несколько обескуражило :)

Поэтому, да, для <6 дана - вредно, а для 8 - недостаточно
comol; Трактор; +2 Ответить 2
30. Олег Филиппов (comol) 01.11.11 10:30
(23) romansun, SSIS просто зачем описывать то что уже и так описано более чем достаточно, лучше Microsoft я этого не сделаю. Основной смысл я хотел вложить что такая технология есть и её можно использовать... просто показать что она открывает... чтобы если нужно - пользовались не боялись.
35. Трактор Трактор (Трактор) 01.11.11 14:20
comol, напиши, пожалуйста, большими красными буквами о рисках данного пути.
Не напишешь - минусую. >-0
36. Ийон Тихий (cool.vlad4) 01.11.11 14:34
Пока, что я не понял что не нравится людям. Очевидно, статья из серии - а вот есть такая клевая штука, смотрите, - ну и эту цель она выполняет. Кому хочется больше читайте книжки (Станека или от Microsoft Press) или http://www.codeproject.com/search.aspx?q=ssis&x=0&y=0&sbo=kw
ОФФ. Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.
38. Трактор Трактор (Трактор) 01.11.11 15:16
cool.vlad4 пишет:
Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.

1С поступает верно. У нас нет MSSQL, на сервере линукс. И без того возможности под линуксом покоцали, а ты ещё сильнее хочешь привязаться к микрософту. Низ зя.
39. marat_n q (marat_n) 01.11.11 15:23
минус: знание о том, что "такая технология есть" и "чтобы если нужно - пользовались не боялись", почерпнутое из этой статьи - крайне вредное. я бы сказал наоборот, если об этих механизмах вы узнали только что из этой статьи, то не лезьте туда. к таким вещам как минимум в дисклеймере упомянуть надо, что это противоречит лицензионному соглашению.
40. Олег Филиппов (comol) 01.11.11 15:37
(35) Трактор, да я не против. Писал естественно.
51. Роман Романов (romansun) 01.11.11 18:46
я, в общем, согласен с cool.vlad4 (36) Хотя раздел "Прямой доступ к данным" я бы завел на ИС и туда определял такие статьи всё же.
52. Трактор Трактор (Трактор) 02.11.11 14:34
(40) Олег, напиши красными буквами предупреждение. Новички они плохо понимают что делают, плюс даже простые тексты редко кто читает.
53. Олег Филиппов (comol) 02.11.11 15:34
(52) Трактор, Ну я же в самом начале написал об этом... и ещё в середине. Только что не красными, но как-то я не люблю в принципе цветной текст.
64. Дандронтий Крузенштерн (dandrontiy) 07.11.11 13:17
cool.vlad4 пишет:
ОФФ. Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.


Мало того что не использует.
Штатное закрытие периода в 1С Бухгалтерия при использовании базы данных на postgresql, дистрибутив постгреса пропатченный 1С используется - вылетает с ошибкой. При создании временных таблиц postgresql ругается что такая таблица уже есть. Не пропатчено до сих пор. Зато в файловом режиме - всё срабатывает ;-)
65. максим юркевич (cardinal197979) 12.12.12 08:17
Здравствуй
меня очень заинтересовала данная статья.
но я не очень силен в ssis.
можешь сделать статью или инструкцию, как по такой технологии можно сделать РИБ для 1С 8.1
а то по обычной методике 2 суток с небольшим создает РИБ.
или подскажите каким еще способом можно сделать РИБ.
66. Олег Филиппов (comol) 12.12.12 09:32
(65) cardinal197979, Если ты про создание узла РИБ, то там всё просто. Выгружаешь dt центра, потом ПланыОбмена.УстановитьГлавныйУзел(Узел) :). Если про сам обмен - вряд ли его целесообразно делать этими средствами. РИБ всё-таки подразумевает переливку только изменений, не должно их гигабайты... если по факту гигабайты инфы меняются ИХМО надо архитектуру пересматривать...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа