|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Добрый день! Решил попробовать Pentaho Data Integration , скачал последнюю версию pdi 9.1.0. Делаю тестовый проект у себя на домашнем компе (Sql 2016, Windows 10). Сразу проблема - не проходит тестовый коннект к СУБД MSSQL 2016. Доп. драйвера скачал и подложил в папку lib : mssql-jdbc-8.4.1.jre8.jar,mssql-jdbc-8.4.1.jre11.jar,mssql-jdbc-8.4.1.jre14.jar,jtds-1.3.1.jar. Картинку прикладываю... Соответственно два вопроса: 1) Как приконнектить MSSQL 2) Можно ли использовать Pentaho Data Integration 9.1.0 - для интеграции в dwh между приложениями в рамках предприятия бесплатно или все же лицензию надо покупать? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 15:17 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 15:21 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, точно помню что коннектился на домашнем компе к скл-2014 на локлахост не понмю версию пентахо - год назад была последней и да качал jar и помню были заморочки но подробностей не помню - все решил с помощью гугла м.б это https://stackoverflow.com/questions/48581898/pentaho-kettle-cannot-connect-to-ms-sql-server-express вот вроде неплохая ссылка https://scribesroom.wordpress.com/2018/08/28/creating-a-pentaho-database-connection-to-a-microsoft-sql-server/ зы для чисто мс-скл я бы SSIS юзал если есть и другие БД - то да возможны варианты в принципе пентахо (kettle) бесплатный и рабочий тул ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 17:16 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Гулин Федор medoed, точно помню что коннектился на домашнем компе к скл-2014 на локлахост не понмю версию пентахо - год назад была последней и да качал jar и помню были заморочки но подробностей не помню - все решил с помощью гугла м.б это https://stackoverflow.com/questions/48581898/pentaho-kettle-cannot-connect-to-ms-sql-server-express вот вроде неплохая ссылка https://scribesroom.wordpress.com/2018/08/28/creating-a-pentaho-database-connection-to-a-microsoft-sql-server/ зы для чисто мс-скл я бы SSIS юзал если есть и другие БД - то да возможны варианты в принципе пентахо (kettle) бесплатный и рабочий тул Спасибо, с tcp/ip поигрался, перестартовал сервис SQL и вроде заработало. Да, SSIS вроде должно быть достаточно, как ETL. Но я думаю дальше - в сторону шины или аналогов и обмена данными хранилища и другими системами. Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка. Вы для этого что использовали, если не секрет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 17:57 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed ...Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка... подписчики могут либо сами периодически запрашивать есть-ли изменения, либо получать уведомление от master что пора запросить обновлённые данные в случае Push в том-же SSIS есть CDC и Multicast. если на микро-сервисах для параллельности: то просто вектор (массив) получателей отправить - а там уже под каждого автоматом выделить свой контейнер. так что в такой формулировке пока всё это скорее пере-изобретение велосипеда через восхождение на кактус. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 18:18 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
vikkiv medoed ...Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка... подписчики могут либо сами периодически запрашивать есть-ли изменения, либо получать уведомление от master что пора запросить обновлённые данные в случае Push в том-же SSIS есть CDC и Multicast. если на микро-сервисах для параллельности: то просто вектор (массив) получателей отправить - а там уже под каждого автоматом выделить свой контейнер. так что в такой формулировке пока всё это скорее пере-изобретение велосипеда через восхождение на кактус. Хмм 1) Мне видится, что в шину запихнул отправитель данные в виде того же xml и крутится этот пакет по ней, а сколько получателей ему все равно, это вообще может быть web services, при появлении нового подписчика - можно ничего не делать, тот сам распарсит xml и заберёт данные. А в случае с SSIS - нового подписчика надо прописывать в схему, как получателя и разворачивать пакет заново, разве нет? 2) SSIS пакет не очень умеет отлавливать изменения данных. Вот, к примеру используя Linked Server я могу написать что то типа: Код: sql 1.
А вот с приемником и источником в SSIS пакетах - я такой штуки не нашёл! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 18:50 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/ Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 10:21 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Критик medoed, https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/ Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются Спасибо, Вам! Век живи, век учись :-) То что я выше писал под пунктом 2) - вы описали вполне. SSIS умеет это делать, пусть и не так просто, как хотелось бы, но тем не менее да, это возможно... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 13:58 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Критик medoed, https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/ Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются Господи, что за порнография по ссылке! За такие решения я бы настаивал на депортации "SQL Server database professional with 10+ years of experience" на историческую родину... Во-первых, сортировка на стороне SSIS сколь-либо значимых объемов данных - весьма рискованное мероприятие. У SSIS есть очень неприятная особенность: он может до бесконечности пытаться забрать память, которой ему типа не хватает. Не возникает ни ошибок, ни алертов, ни тем более попыток как-то адаптировать свою работу к текущим условиям существования (только запись в логе - спустя какое-то время и ради которой надо парсить лог). Оптимальный вариант - сортировка на стороне БД или иными средствами. Во-вторых, построчная обработка обновляемых и удаляемых записей. Вот из-за таких "профессионалов" многие программисты не пытаются делать средствами ETL чего-то сверх простейшей перекладки данных. Оптимальный вариант - вставка данных в 3 промежуточных таблицы (или одну с полем Update Strategy), затем Insert + Update + Delete основной where exists промежуточная, обернутые в транзакцию. Вместо tran(I+U+D) можно использовать SQL Merge, но надо смотреть план и блокировки, поэтому предпочитаю первый вариант. По основной теме: использую связку шины RabbitMQ (интеграция) <-> SSIS (трансформация) <-> СУБД (хранение). Слияние через Merge (правильное) использовал ранее, сейчас - практически отказался в пользу более эффективных нестандартных возможностей SSIS. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 16:35 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Посмотрел второй раз на статью по ссылке. Мать моя женщина, это сплошной порнхаб!
... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 17:11 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
.Евгений Критик medoed, https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/ Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются Господи, что за порнография по ссылке! За такие решения я бы настаивал на депортации "SQL Server database professional with 10+ years of experience" на историческую родину... Во-первых, сортировка на стороне SSIS сколь-либо значимых объемов данных - весьма рискованное мероприятие. У SSIS есть очень неприятная особенность: он может до бесконечности пытаться забрать память, которой ему типа не хватает. Не возникает ни ошибок, ни алертов, ни тем более попыток как-то адаптировать свою работу к текущим условиям существования (только запись в логе - спустя какое-то время и ради которой надо парсить лог). Оптимальный вариант - сортировка на стороне БД или иными средствами. Во-вторых, построчная обработка обновляемых и удаляемых записей. Вот из-за таких "профессионалов" многие программисты не пытаются делать средствами ETL чего-то сверх простейшей перекладки данных. Оптимальный вариант - вставка данных в 3 промежуточных таблицы (или одну с полем Update Strategy), затем Insert + Update + Delete основной where exists промежуточная, обернутые в транзакцию. Вместо tran(I+U+D) можно использовать SQL Merge, но надо смотреть план и блокировки, поэтому предпочитаю первый вариант. По основной теме: использую связку шины RabbitMQ (интеграция) <-> SSIS (трансформация) <-> СУБД (хранение). Слияние через Merge (правильное) использовал ранее, сейчас - практически отказался в пользу более эффективных нестандартных возможностей SSIS. Вы очень категоричны Евгений в своих высказываниях! Думаю при интеграции редко бывает в одном пакете больше 1000 строк, а их можно обработать и построчно. Те же справочники или новые клиенты за день. Зато всё визуально, если мы говорим про Visual Studio и SSIS. Я посмотрел ваш RabbitMq- это опять же командная строка и если в его объектную модель загрузить более 1000 строк - тоже тормозить начнёт, имхо. Единственное, если крос-платформенность и хитрые какие нить базы Типа MongoDb, то может ваш "кролик" лучше! А если у людей какой нить Oracle на фронте и Sql dwh с синхронизацией раз в 10 минут, то SSIS вполне подойдёт, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 17:57 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, не очень понял, к чему относятся ваши возражения. Я, собственно, критиковал статью по ссылке: нормальная идея воплощена очень плохо. По вашей теме: есть этап выгрузки данных из систем-источников (шина хороша гибкостью, прямой коннект - теоретической скоростью), и есть этап трансформации данных, на котором я давно использую SSIS с нестандартно расширенным функционалом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 18:29 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
.Евгений, Ну мне например в вашем варианте решения слиянием таблиц из 2-х источников не понравилось приплетание 3-ей таблицы. Это избыточное хранение, а значит и место на диске! И второе, что "кролик" например передаст по своей шине быстро например массив из 100 тысяч строк! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 19:26 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, Да, обновляемая порция во время работы пакета будет храниться в БД. Однако медленную работу построчного слияния той же порции вы заметите намного раньше. Безусловно, прямой коннект потенциально быстрее обмена через шину. Однако у шины есть свои преимущества. Во-первых, с ее помощью гораздо проще маршрутизировать потоки данных, без каких-либо доработок и деплоев m пакетов на n серверов, все делается централизованно и с буферизацией. Во-вторых, сообщения могут содержать внутри себя обработанные данные (например, форматированные параметры сделки), а не голые таблицы источника, которые могут черти-как документироваться, соединяться, индексироваться, блокироваться, меняться со временем... Эти преимущества для меня часто более значимы, но не всегда. Например, у меня есть реализованные на прямом доступе сверки данных между системами. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 20:09 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
.Евгений medoed, Да, обновляемая порция во время работы пакета будет храниться в БД. Однако медленную работу построчного слияния той же порции вы заметите намного раньше. Безусловно, прямой коннект потенциально быстрее обмена через шину. Однако у шины есть свои преимущества. Во-первых, с ее помощью гораздо проще маршрутизировать потоки данных, без каких-либо доработок и деплоев m пакетов на n серверов, все делается централизованно и с буферизацией. Во-вторых, сообщения могут содержать внутри себя обработанные данные (например, форматированные параметры сделки), а не голые таблицы источника, которые могут черти-как документироваться, соединяться, индексироваться, блокироваться, меняться со временем... Эти преимущества для меня часто более значимы, но не всегда. Например, у меня есть реализованные на прямом доступе сверки данных между системами. Да, согласен с Вами, есть плюсы в шине. А вы шину просто используете для общения или передачи данных/изменений между своими системами или на ней можно и web сервис тоже развернуть (WSDL -ку), чтоб внешние системы - могли использовать её сервисы(по типу курсы валют от ЦБ) . Или у вас шина по большей части с хранилищем и обратно( другими Вашими системами) используется, тоесть только для внутренних систем (в домене)? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 20:38 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed ...или на ней можно и web сервис тоже развернуть (WSDL -ку), чтоб внешние системы - могли использовать её сервисы(по типу курсы валют от ЦБ). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 21:18 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
.Евгений Господи, что за порнография по ссылке! За такие решения я бы настаивал на депортации "SQL Server database professional with 10+ years of experience" на историческую родину... Не спорю, данный конкретный пример не очень, ту же сортировку можно сделать на стороне СУБД, а в SSIS просто поставить галочку, что набор отсортирован. Но он показывает все необходимые шаги для реализации, поэтому вполне можно от него отталкиваться. Ps встречал случаи, когда хэш набора данных с инвертированием значения не изменялся (было 1, стало -1, а хэш остался прежним), поэтому лучше сравнивать по полям ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:56 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Критик Ps встречал случаи, когда хэш набора данных с инвертированием значения не изменялся (было 1, стало -1, а хэш остался прежним), поэтому лучше сравнивать по полям Когда хэш строится по CRC-32, вероятность коллизии достаточно велика. Поэтому нужно брать хотя бы MD5 (и вплоть до SHA512 в особо тяжелых случаях) . Стоимость построения хеша внутри SSIS невелика . А еще вычисленные на этапе загрузке хеши можно хранить в БД и загружать из приемника изменений только бизнес-ключ и хеш, с сопутствующими плюсами к производительности слияния и минусами к нагрузке на БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 20:02 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
.Евгений, Можно конечно и хранить хэш, а потом у вас в таблице с несколькими миллиардами строк появляется новое поле из источника. И гемморой с обновлением ) Вы сравнивали производительность вариантов со сравнением хэшей и всех полей? Если да, то какова прибавка? (просто интересно, я обычно сравниваю по полям, но встречал и решения с хэшами) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 18:58 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
Критик, нет никакого геморроя, можно даже обновить новое поле вручную. В худшем случае потом основной поток ETL выполнит одно "лишнее" обновление, когда изменится только значение хеша. Вариант сравнения по всем полям для текущей загрузки я не рассматриваю в принципе, потому что критичен объем целевых данных: они размещаются в оперативной памяти (ключ источника + суррогатный ключ + версия + хеш) и разрешаются локально на сервере ETL без обращения к целевой БД. Сами понимаете, насколько различается производительность поиска в памяти локального процесса и в удаленной БД. Сравнительная производительность непосредственно условий (за исключений особых случаев с большой совокупной длиной аргументов) мне не кажется заслуживающей внимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 19:47 |
|
Pentaho -> Sql Server 2016
|
|||
---|---|---|---|
#18+
medoed, Добрый день. 1) При конеткет к MS SQL server используйте соединение MS SQL Server (Native). Поддерживаются виндовая и керберос авторизация. Все нормально. Мы работаем из линукса и из винды. По драйверам то смотрите на версию java. В вашем случае mssql-jdbc-8.4.1.jre11.jar,mssql-jdbc-8.4.1.jre14.jar,jtds-1.3.1.jar скорее это лишние драйвера. 2) Можно использовать для интеграции между приложениями. С этим все нормально. По минусам. Вставка в MS SQL SERVER из коробки идет без bulk. В результате могут начинать опухать логи. Дополнения: Если не рассматривать переливку данных между MS SQL Server <-> MS SQL Server то PDI для меня предпочтительней чем SSIS. Плюсы: - Можно запихать в Docker. (Далее в kubernetes ARGO или AIRFLOW для оркестрации). Мы используем ARGO на проде. - Нормальная интеграция с git. Можно делать CI/CD проекты с автоматическим разворотом в прод и тест среды. - Возможность сделать кластер. Далее его можно развернуть kubernetes. - Интеграция "Брокер сообщений" <-> "Кластер PDI" <-> .. <-> DWH или Kafka. Использовали в проектах kafka -> кластер PDI (1 мастер 5 вокеров) для переливки данных между MS SQL Server -> Grenplum. Вполне реализуемо. - Это возможно из коробки. Минусы: - Маленькое сообщество - Слабая документация С уважением, biwed.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 02:33 |
|
|
start [/forum/topic.php?fid=49&msg=40033991&tid=1857206]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 162ms |
0 / 0 |