powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Самый быстрый XML > таблицы
25 сообщений из 29, страница 1 из 2
Самый быстрый XML > таблицы
    #39822551
pbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, есть задача ооочень быстро раскидать XML на базе оч сложной XML-схемы (около 400 типов) по реляционным таблицам. Каждый экземпляр документа весит примерно мегабайт. Подскажите, пожалуйста, на какой инструмент ориентироваться? Что будет быстрее при прочих равных - разобрать xml по таблицам прям внутри базы хранимками или возложить это на .NET/CLR?
Есть еще и третий вариант - Native XML Storage. Насколько эта штука зрелая, быстрая и пригодная для продакшна, при условии, что данные в документах рекурсивны и их надо будет довольно часто обновлять, и группировать данные из нескольких сотен и тысяч XML-документов?
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822561
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pbdaЧто будет быстрее при прочих равных - разобрать xml по таблицам прям внутри базы хранимками или возложить это на .NET/CLR?Быстрее всего - XML Bulk Load (SQLXML); то же самое можно сделать на .NET
"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822567
pbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

> Быстрее всего - XML Bulk Load (SQLXML); то же самое можно сделать на .NET
Спасибо, попробовал SQLXML с попыткой автоматического создания таблиц по XSD, не взлетело: "multiple base for a derived type is not supported". Придётся делать все таблицы руками.

>"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
Императивный разбор, DOM + XPath
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822599
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pbda>"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
Императивный разбор, DOM + XPathДа, это, конечено, будет медленнее, чем Bulk
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822645
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многолетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.
Поддерживать и развивать такое убьётесь!

Необходим графический ETL инструмент, SSIS например.
Я хоть сам и рьяный сторонник всего MICROSOFTовского, особенно .NET и MSSQL, но для такой задачи, для ETL процессов я бы взял (дело вкуса, но мне нравится он) бесплатный PDI (Pentaho Data Integration).
А как база - MSSQL.

Google Images: "pentaho data integration xml input"

P.S. просьба не бить ногами - я понимаю, что в моем постинге off-topic, но ответ в другом форуме бы, помог не сильно :-)
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822652
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abeleмноголетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.
Правда, у меня опыт с графическеими инструментами ETL ограничен только SSIS (DTS), возможно, другие инструменты дают больше возможности разработчикам.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822657
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg... Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.
Принципиально вот это: "Поддерживать и развивать такое убьётесь!"
Да, никто и не спорит, что скриптами можно написать гораздо более замороченную логику, но ... могу только еще раз себя любимого :-) процетировать: "Поддерживать и развивать такое убьётесь!"
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822716
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abelealexeyvg... Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.
Принципиально вот это: "Поддерживать и развивать такое убьётесь!"
Да, никто и не спорит, что скриптами можно написать гораздо более замороченную логику, но ... могу только еще раз себя любимого :-) процетировать: "Поддерживать и развивать такое убьётесь!"Да, я исключительно про "развивать и поддерживать", остальное не так критично.

- Микрософт не предоставляет разумного пути для работы над пакетом нескольких девелоперов.
- Не даёт возможности хранить пакет в сорс-контроле, с просмотром в человеческом виде сделанных изменений, и привязкой изменений к требованиям, проектам и т.д. (вот чтоб можно было сказать: "видим по истории, что 05.06.2019 Вася поменял тип выходной колонки ККК с decimal(13.2) на decimal(15.2), по запросу клиента №ННН")
- Не позволяет делать нормальные ветки, которые можно отдельно развивать и мерджить (например, Вася поменял импорт в таблицу А, через 2 дня Петя в таблицу Б, но задеплоить нужно будет изменения Пети, а потом через месяц смерджить изменения Васи с основным кодом)
- Не даёт возможности делать вменяемый поиск в пакете
- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?

Всё это критично даже не для замороченной логики, а просто для более менее объёмного ETL (то есть когда логика простая, но объектов много).

Мы когда то перешли в ETL с квадратиков, просто на такск типа Script, который при выполнении создаёт пакет и его выполняет :-) Хотя, согласитесь, это извращение. Но поддерживать стало более менее приемлемо.
Но потом окончательно отказались от SSIS, потому что его поддержка - это полный трэш.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822798
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pbda,

наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822801
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовразборщик-загрузчик на С++/С# с применением SMO.А как это, в чём идея?
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822806
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

я бы начал с простого: DMO + bulk операции, но веры в производительность DMO как-то нет. Возможно, пришлось бы писать разборщик файла контектстно к документу, а не универсальный. Тем более, что XML почти никогда не содержит суррогатные ключи.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822827
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abeleмноголетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.
Поддерживать и развивать такое убьётесь!

Необходим графический ETL инструмент, SSIS например.
Я хоть сам и рьяный сторонник всего MICROSOFTовского, особенно .NET и MSSQL, но для такой задачи, для ETL процессов я бы взял (дело вкуса, но мне нравится он) бесплатный PDI (Pentaho Data Integration).
А как база - MSSQL.

Google Images: "pentaho data integration xml input"

P.S. просьба не бить ногами - я понимаю, что в моем постинге off-topic, но ответ в другом форуме бы, помог не сильно :-)

ссылку можно, где его (свободный) скачать?
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822868
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgМикрософт не предоставляет разумного пути для работы над пакетом нескольких девелоперов. alexeyvgВсё это критично даже не для замороченной логики, а просто для более менее объёмного ETL (то есть когда логика простая, но объектов много)
Все так. Сами делали XSLT преобразования, чтобы DTSX пакеты работали, но их можно было сравнивать через diff, мержить и т.п. Но все равно это через ж.

alexeyvgЕсли я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками?
В общем, перешли на генерацию стандартных пакетов через С#, теперь BIML, а нестандартные - делаются руками на основании стандартной заготовки и потом инжектятся в проект. Это ETL на примерно 1200 пакетов (пакет - таблица).
Такой псевдо-code-driven ETL.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822893
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовpbda,

наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.
Если уж ручной разбор/загрузка на С++/С#, то SMO там зачем нужны?
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39822911
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовpbda,
наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.
Бред.

.XSD схема + sqlXmlBulkLoad + T-SQL

- вот истинный дао.

Это - .XSD схема + sqlXmlBulkLoad - зашвырнет данные в таблицы tempdb за секунды.
Ну, если только XML не генерировали альтернативно одаренные, что, увы, случается.
Все остальное - T-SQL.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823010
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

если не ошибаюсь, SMO умеет выполнить балк-загрузку.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823038
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PDI - Pentaho Data Integration
Ролг Хупинссылку можно, где его (свободный) скачать?
тут: Pentaho Download - Last version
или
тут: Pentaho Download - All versions


Поддерживать и развивать такое убьётесь!

alexeyvg- ... работа над пакетом нескольких девелоперов.
- ... хранить пакет в сорс-контроле ...
- Не даёт возможности делать вменяемый поиск в пакете

XML-Schema для SSIS пакетов плохо мержится, хотя в последних версиях Microsoft тут сильно улучшили так, что умные XML-merge инструменты могут привязываться к ID узлов и справляются сравнивать и сливать.

XML-Schema от PDI как-то проще и логичнее, ее проще MERGEить.

alexeyvg- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?
А тут лучше в сторону BIML смотреть (это если для генерить код для SSIS или PDI)
У PDI есть еще Meta Data Injection - позволяет динамику мета данных (столбцы, к примеру) на лету
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823042
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... а BIML - это тот же T4 из Visual Studio, только с надстройками типа SMO, но при этом (в сравнении с T4) без отладки.
На счет надстройки над T4 движком не моя фантазия - общался тесно разработчиками BIML
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823043
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abele PDI - Pentaho Data Integration
Ролг Хупинссылку можно, где его (свободный) скачать?
тут: Pentaho Download - Last version
или
тут: Pentaho Download - All versions


Поддерживать и развивать такое убьётесь!

alexeyvg- ... работа над пакетом нескольких девелоперов.
- ... хранить пакет в сорс-контроле ...
- Не даёт возможности делать вменяемый поиск в пакете

XML-Schema для SSIS пакетов плохо мержится, хотя в последних версиях Microsoft тут сильно улучшили так, что умные XML-merge инструменты могут привязываться к ID узлов и справляются сравнивать и сливать.

XML-Schema от PDI как-то проще и логичнее, ее проще MERGEить.

alexeyvg- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?
А тут лучше в сторону BIML смотреть (это если для генерить код для SSIS или PDI)
У PDI есть еще Meta Data Injection - позволяет динамику мета данных (столбцы, к примеру) на лету

Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823048
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.
Чую, что обхамили, но чё сказать-то хотел - не понятно.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823050
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823053
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abelealeks222Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.
Чую, что обхамили, но чё сказать-то хотел - не понятно.
Объясняю популярно, для невежд.

Использование "интеллектуальных средств разработки" рассчитано на низкоквалифицированных программистов.
Основная цель - снизить расходы на рабочую силу.
Это печальная неизбежность. Да.

Но, на практике, такие средства ускоряют разработку только весьма шаблонных и простых вещей.
Ценой неоправданных затрат ресурсов.
Любой "шаг в сторону" приводит к усложнению кода и абсолютной его неподдерживаемости.
Плюс проблемы с производительностью и т.д. и т.п.

Основная задача MS SQL - перемалывание данных.
Так нафига костыли?
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823203
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовSISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.А для изменений, например, маппинга полей источник-приёмник?
В DTS это всё было легко делать, но посре замены его на SSIS ситуация стала катастрофической, программируемость потеряна практически полностью.

Ну и сравнение версий с сорс-контроле не облегчается, при использовании "подстановочных переменных" :-)
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823240
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовСон Веры Павловны,

если не ошибаюсь, SMO умеет выполнить балк-загрузку.
C# это тоже умеет , без SMO.
...
Рейтинг: 0 / 0
Самый быстрый XML > таблицы
    #39823425
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Самый быстрый XML > таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]