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

Видео, демонстрирующее использование 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 будет перегружаться…. если вообще перегрузится.

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

30 Comments

  1. DoctorRoza

    Видео, конечно, хорошо, но вот хоть мало мальское объяснение «чегоделания» было бы еще лучше! Ну хотя бы .. в академических целях! 🙂

    Reply
  2. artbear

    Да, что это и куда это?

    Reply
  3. php55

    Интересный способ. Взял на заметку. Правда область применения не особо понятно, только если базы идентичны возможно….

    Reply
  4. romansun

    insert into Таблица

    select *

    from Таблица_РезервнаяКопия

    where <по желанию>

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

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

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

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

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

    Удачное применение таких «технологий» — форсмажорное «пофигачивание» данных и моментальное восстановление из резервной копии. Пример: разработчик писал обработку/скрипт по зачистке каких-либо данных из справочника. Написал, запустил, зачистил. Всё гут. Но тут внезапно выясняется, что зачистил не то или не так. Тут же берется бэкап до момента очистки, поднимается и из него скриптом или подобным сервисом справочник моментально восстанавливается. Пользователи, бывает, даже не успевают заметить недоброе.

    Reply
  5. comol

    (5) romansun, Собственно всё за меня ответили.

    Вот только Insert из таблицы в БД на другом сервере я не знаю как делать… в 2008 вроде «связанные серверы» появились, но может как-то по-другому можно.

    И в SSIS там вроде используется bulk insert (без проверки constraint), что намного быстрее обычного insert.

    Reply
  6. artbear

    (6) Автор, поправь тему, добавь немного описания о технологии (например, из других источников или хотя бы из комментов), иначе сниму публикацию.

    Пользователи сайта сразу должны видеть «правильную» инфу, а не получать/додумывать ее.

    Reply
  7. romansun

    (6)

    дык, sp_addlinkedserver

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

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

    (7) да, описания нужно

    Reply
  8. comol

    (7) artbear, Описание добавил. Не думал что вопросы возникнут.

    Reply
  9. comol

    (8) romansun, Спасибо. Я так в принципе и думал. Но bulk insert быстрее в SSIS люди пишут, иногда наверное запросом удобнее, хотя мне как 1С-нику приятнее уже «картинки таскать» 🙂

    Reply
  10. comol

    Видимо описание нужно было сразу добавить… так никто не понял что это такое, сейчас народ уже не прочитает…

    Reply
  11. artbear

    (11) Конечно, сразу правильнее.

    Не понял, почему (цитата) «сейчас народ уже не прочитает» ?

    Reply
  12. comol

    (12) artbear, А как я понимаю если публикацию публикуешь… она попадает в «новые» на главной странце… потом если набирает определенное количество «плюсов» — в «в центре внимания», а потом если прошла экспертную проверку — «рекомендованные сообществом». Всё это время она висит на главной странице, собственно те кто заходят прочитывают оценивают.. а если сразу «порог плюсов» не прошел — уже в архиве…

    А штука то вообще полезная…

    Reply
  13. Трактор

    Офигеть! Публикация заслуживает минуса как провокация новичков к опасным действиям. Как противоречащая позиции самого автора. Comol, ты тут http://infostart.ru/public/95484/ называешь «идеальным» работника который имеет сертификаты и знает стандарты. И тут же сам учишь людей нарушать требования стандартов, лицензионное соглашение с 1С.

    Ты сторонник формальной оценки. Так вот. Данный приём чрезвычайно рискован и не может быть использован специалистом ниже 6-го дана, не имеющим сертификатов от 1С и Микрософта. А специалисты 8-го дана имеющие сертификаты и без того знают этот путь. Вывод по формальным признакам: Публикация вредна!

    Reply
  14. comol

    (14) Трактор, Нууу… не могу не согласиться… я же пишу «после резервной копии» и очень аккуратно. Как раз если знаешь все стандарты и принципы… и идёшь на нарушение осознанно… только когда вариант или потеря данных или такой… В случае с восстановлением из резервной копии человек в (5) достаточно правильно написал что восстановить часть таблицы иногда ооочень нужно.

    Я просто видео это делал даже не для инфостарта изначально… понимаете… у людей было столько радости.

    Reply
  15. hogik

    Плюс на (14), и минус на (0).

    Увы… 🙁

    Reply
  16. artbear

    Не согласен с (14). Минусанул (14)

    Давайте все запретим по причине «ах, он может зайти в Конфигуратор и что-нибудь удалить/напортачить» 🙁

    Reply
  17. comol

    (18) artbear, Двояко можно понять… с одной стороны конечно опасный инструмент, с другой — может оказаться «спасительным» в некоторых случаях, поэтому ИХМО знать о нём я считаю людям нужно…

    Если бояться и ничего не делать можно так ничего и не узнать.

    О том что можно что-нить напортить я написал, о том что только после бэкапа — тоже… по большому счету «в массу» не пошло поэтому что тут сейчас дискутировать.

    Reply
  18. romansun

    Публикация из серии «Achtung. Прямой доступ к данным. Access denied ниже 6 дана». Там где-то надо про это красненькими буквами написать и убрать «заигрывающую» риторику про «сделай сам» свою самую быструю перегрузку«. Это как реклама курева и пива, рассчитанная на подростков.. Просто «Использование технологии SQL Server IS для быстрых перегрузок данных» достаточно, имхо.

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

    Поэтому, да, для <6 дана — вредно, а для 8 — недостаточно

    Reply
  19. comol

    (23) romansun, SSIS просто зачем описывать то что уже и так описано более чем достаточно, лучше Microsoft я этого не сделаю. Основной смысл я хотел вложить что такая технология есть и её можно использовать… просто показать что она открывает… чтобы если нужно — пользовались не боялись.

    Reply
  20. Трактор

    comol, напиши, пожалуйста, большими красными буквами о рисках данного пути.

    Не напишешь — минусую. >-0

    Reply
  21. cool.vlad4

    Пока, что я не понял что не нравится людям. Очевидно, статья из серии — а вот есть такая клевая штука, смотрите, — ну и эту цель она выполняет. Кому хочется больше читайте книжки (Станека или от Microsoft Press) или http://www.codeproject.com/search.aspx?q=ssis&x=0&y=0&sbo=kw

    ОФФ. Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.

    Reply
  22. Трактор
    cool.vlad4 пишет:

    Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.

    1С поступает верно. У нас нет MSSQL, на сервере линукс. И без того возможности под линуксом покоцали, а ты ещё сильнее хочешь привязаться к микрософту. Низ зя.

    Reply
  23. marat_n

    минус: знание о том, что «такая технология есть» и «чтобы если нужно — пользовались не боялись», почерпнутое из этой статьи — крайне вредное. я бы сказал наоборот, если об этих механизмах вы узнали только что из этой статьи, то не лезьте туда. к таким вещам как минимум в дисклеймере упомянуть надо, что это противоречит лицензионному соглашению.

    Reply
  24. comol

    (35) Трактор, да я не против. Писал естественно.

    Reply
  25. romansun

    я, в общем, согласен с cool.vlad4 (36) Хотя раздел «Прямой доступ к данным» я бы завел на ИС и туда определял такие статьи всё же.

    Reply
  26. Трактор

    (40) Олег, напиши красными буквами предупреждение. Новички они плохо понимают что делают, плюс даже простые тексты редко кто читает.

    Reply
  27. comol

    (52) Трактор, Ну я же в самом начале написал об этом… и ещё в середине. Только что не красными, но как-то я не люблю в принципе цветной текст.

    Reply
  28. dandrontiy
    cool.vlad4 пишет:

    ОФФ. Грустно, что 1С даже десятой части не использует того, что может SQL. Видимо не хочется привязываться к одному продукту.

    Мало того что не использует.

    Штатное закрытие периода в 1С Бухгалтерия при использовании базы данных на postgresql, дистрибутив постгреса пропатченный 1С используется — вылетает с ошибкой. При создании временных таблиц postgresql ругается что такая таблица уже есть. Не пропатчено до сих пор. Зато в файловом режиме — всё срабатывает 😉

    Reply
  29. cardinal197979

    Здравствуй

    меня очень заинтересовала данная статья.

    но я не очень силен в ssis.

    можешь сделать статью или инструкцию, как по такой технологии можно сделать РИБ для 1С 8.1

    а то по обычной методике 2 суток с небольшим создает РИБ.

    или подскажите каким еще способом можно сделать РИБ.

    Reply
  30. comol

    (65) cardinal197979, Если ты про создание узла РИБ, то там всё просто. Выгружаешь dt центра, потом ПланыОбмена.УстановитьГлавныйУзел(Узел) :). Если про сам обмен — вряд ли его целесообразно делать этими средствами. РИБ всё-таки подразумевает переливку только изменений, не должно их гигабайты… если по факту гигабайты инфы меняются ИХМО надо архитектуру пересматривать…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *