bdd2

"Сделай сам" свою самую быструю перегрузку (видео). Использование технологии 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) 840 30.10.11 14:18 Сейчас в теме
4. Нина Плюшкина (php55) 30.10.11 21:07 Сейчас в теме
Интересный способ. Взял на заметку. Правда область применения не особо понятно, только если базы идентичны возможно....
5. Роман Романов (romansun) 168 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) 2665 31.10.11 08:55 Сейчас в теме
(5) romansun, Собственно всё за меня ответили.
Вот только Insert из таблицы в БД на другом сервере я не знаю как делать... в 2008 вроде "связанные серверы" появились, но может как-то по-другому можно.

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

дык, sp_addlinkedserver

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

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


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

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

Я просто видео это делал даже не для инфостарта изначально... понимаете... у людей было столько радости.
16. Владимир (hogik) 415 31.10.11 17:59 Сейчас в теме
Плюс на (14), и минус на (0).
Увы... :-(
18. Артур Аюханов (artbear) 840 31.10.11 18:11 Сейчас в теме
Не согласен с (14). Минусанул (14)
Давайте все запретим по причине "ах, он может зайти в Конфигуратор и что-нибудь удалить/напортачить" :(
21. Олег Филиппов (comol) 2665 31.10.11 20:51 Сейчас в теме
(18) artbear, Двояко можно понять... с одной стороны конечно опасный инструмент, с другой - может оказаться "спасительным" в некоторых случаях, поэтому ИХМО знать о нём я считаю людям нужно...
Если бояться и ничего не делать можно так ничего и не узнать.
О том что можно что-нить напортить я написал, о том что только после бэкапа - тоже... по большому счету "в массу" не пошло поэтому что тут сейчас дискутировать.
23. Роман Романов (romansun) 168 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) 2665 01.11.11 10:30 Сейчас в теме
(23) romansun, SSIS просто зачем описывать то что уже и так описано более чем достаточно, лучше Microsoft я этого не сделаю. Основной смысл я хотел вложить что такая технология есть и её можно использовать... просто показать что она открывает... чтобы если нужно - пользовались не боялись.
35. Трактор Трактор (Трактор) 1107 01.11.11 14:20 Сейчас в теме
comol, напиши, пожалуйста, большими красными буквами о рисках данного пути.
Не напишешь - минусую. >-0
36. Ийон Тихий (cool.vlad4) 41 01.11.11 14:34 Сейчас в теме
Пока, что я не понял что не нравится людям. Очевидно, статья из серии - а вот есть такая клевая штука, смотрите, - ну и эту цель она выполняет. Кому хочется больше читайте книжки (Станека или от Microsoft Press) или http://www.codeproject.com/search.aspx?q=ssis&x=0&y=0&sbo=kw
ОФФ. Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.
38. Трактор Трактор (Трактор) 1107 01.11.11 15:16 Сейчас в теме
cool.vlad4 пишет:
Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.

1С поступает верно. У нас нет MSSQL, на сервере линукс. И без того возможности под линуксом покоцали, а ты ещё сильнее хочешь привязаться к микрософту. Низ зя.
39. marat_n q (marat_n) 102 01.11.11 15:23 Сейчас в теме
минус: знание о том, что "такая технология есть" и "чтобы если нужно - пользовались не боялись", почерпнутое из этой статьи - крайне вредное. я бы сказал наоборот, если об этих механизмах вы узнали только что из этой статьи, то не лезьте туда. к таким вещам как минимум в дисклеймере упомянуть надо, что это противоречит лицензионному соглашению.
40. Олег Филиппов (comol) 2665 01.11.11 15:37 Сейчас в теме
(35) Трактор, да я не против. Писал естественно.
51. Роман Романов (romansun) 168 01.11.11 18:46 Сейчас в теме
я, в общем, согласен с cool.vlad4 (36) Хотя раздел "Прямой доступ к данным" я бы завел на ИС и туда определял такие статьи всё же.
52. Трактор Трактор (Трактор) 1107 02.11.11 14:34 Сейчас в теме
(40) Олег, напиши красными буквами предупреждение. Новички они плохо понимают что делают, плюс даже простые тексты редко кто читает.
53. Олег Филиппов (comol) 2665 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) 2665 12.12.12 09:32 Сейчас в теме
(65) cardinal197979, Если ты про создание узла РИБ, то там всё просто. Выгружаешь dt центра, потом ПланыОбмена.УстановитьГлавныйУзел(Узел) :). Если про сам обмен - вряд ли его целесообразно делать этими средствами. РИБ всё-таки подразумевает переливку только изменений, не должно их гигабайты... если по факту гигабайты инфы меняются ИХМО надо архитектуру пересматривать...