Гость
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Pentaho -> Sql Server 2016 / 21 сообщений из 21, страница 1 из 1
06.01.2021, 15:17
    #40033833
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Добрый день!
Решил попробовать 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 между приложениями в рамках предприятия бесплатно или все же лицензию надо покупать?
Спасибо!
...
Рейтинг: 0 / 0
06.01.2021, 15:21
    #40033835
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed,
...
Рейтинг: 0 / 0
06.01.2021, 17:16
    #40033887
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
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) бесплатный и рабочий тул
...
Рейтинг: 0 / 0
06.01.2021, 17:57
    #40033900
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Гулин Федор
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.
Но я думаю дальше - в сторону шины или аналогов и обмена данными хранилища и другими системами.
Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка.
Вы для этого что использовали, если не секрет?
...
Рейтинг: 0 / 0
06.01.2021, 18:18
    #40033903
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed
...Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка...
Есть Pull и есть Push архитектуры,
подписчики могут либо сами периодически запрашивать есть-ли изменения,
либо получать уведомление от master что пора запросить обновлённые данные
в случае Push в том-же SSIS есть CDC и Multicast.
если на микро-сервисах для параллельности: то просто вектор (массив) получателей отправить - а там уже под каждого автоматом выделить свой контейнер.
так что в такой формулировке пока всё это скорее пере-изобретение велосипеда через восхождение на кактус.
...
Рейтинг: 0 / 0
06.01.2021, 18:50
    #40033910
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
vikkiv
medoed
...Ну типа обновили кладр адресов в хранилище и надо инфу как то другим системам раздать, причем только изменения бы передать и желательно всем системам сразу, а не через точка-точка...
Есть Pull и есть Push архитектуры,
подписчики могут либо сами периодически запрашивать есть-ли изменения,
либо получать уведомление от master что пора запросить обновлённые данные
в случае Push в том-же SSIS есть CDC и Multicast.
если на микро-сервисах для параллельности: то просто вектор (массив) получателей отправить - а там уже под каждого автоматом выделить свой контейнер.
так что в такой формулировке пока всё это скорее пере-изобретение велосипеда через восхождение на кактус.

Хмм
1) Мне видится, что в шину запихнул отправитель данные в виде того же xml и крутится этот пакет по ней, а сколько получателей ему все равно, это вообще может быть web services, при появлении нового подписчика - можно ничего не делать, тот сам распарсит xml и заберёт данные. А в случае с SSIS - нового подписчика надо прописывать в схему, как получателя и разворачивать пакет заново, разве нет?
2) SSIS пакет не очень умеет отлавливать изменения данных. Вот, к примеру используя Linked Server я могу написать что то типа:
Код: sql
1.
   insert into Recieve.table (id) select id from LinkedServer.Source.table as s where not exists (select 1 from Recieve.table as r where r.id = s.id). 

А вот с приемником и источником в SSIS пакетах - я такой штуки не нашёл!
...
Рейтинг: 0 / 0
07.01.2021, 10:21
    #40033991
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed,

https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/

Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются
...
Рейтинг: 0 / 0
07.01.2021, 13:58
    #40034028
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Критик
medoed,

https://www.mssqltips.com/sqlservertip/5082/synchronize-table-data-using-a-merge-join-in-ssis/

Ну лучше применять ELT-архитектуру, так издержки на разработку меньше получаются

Спасибо, Вам! Век живи, век учись :-) То что я выше писал под пунктом 2) - вы описали вполне. SSIS умеет это делать, пусть и не так просто, как хотелось бы, но тем не менее да, это возможно...
...
Рейтинг: 0 / 0
07.01.2021, 16:35
    #40034058
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Критик
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.
...
Рейтинг: 0 / 0
07.01.2021, 17:11
    #40034061
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Посмотрел второй раз на статью по ссылке. Мать моя женщина, это сплошной порнхаб!
  • Вставка тоже построчная, а не пакетная.
  • Нахождение изменившихся записей (шаг 5) надо делать посредством хеша и единственного сравнения, а не по каждому столбцу, где в результирующем выражении сделать опечатку - раз плюнуть. Кстати, на значениях Null проверка автора тупо свалится.
  • От алиасов типа название_столбца (1) мне захотелось взять молоток и пойти убивать.
  • Включение в сортировку всех столбцов (а не только тех, по которым происходит Join) - уже вполне ожидаемое свидетельство глубины познаний автора. В сортировщике SSIS есть такая штука PassThrough... Интересно, известно ли автору, как сделать запрос к источнику сортированным?
  • Отсутствие проверок на дублирование бизнес-ключа - это явно было слишком сложно для автора. Подумаешь, два покупателя с одинаковым идентификатором или, наоборот, пропажа обновления - какие мелочи.
...
Рейтинг: 0 / 0
07.01.2021, 17:57
    #40034066
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
.Евгений
Критик
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 вполне подойдёт, разве нет?
...
Рейтинг: 0 / 0
07.01.2021, 18:29
    #40034067
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed,

не очень понял, к чему относятся ваши возражения. Я, собственно, критиковал статью по ссылке: нормальная идея воплощена очень плохо.

По вашей теме: есть этап выгрузки данных из систем-источников (шина хороша гибкостью, прямой коннект - теоретической скоростью), и есть этап трансформации данных, на котором я давно использую SSIS с нестандартно расширенным функционалом.
...
Рейтинг: 0 / 0
07.01.2021, 19:26
    #40034075
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
.Евгений,
Ну мне например в вашем варианте решения слиянием таблиц из 2-х источников не понравилось приплетание 3-ей таблицы. Это избыточное хранение, а значит и место на диске! И второе, что "кролик" например передаст по своей шине быстро например массив из 100 тысяч строк!
...
Рейтинг: 0 / 0
07.01.2021, 20:09
    #40034080
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed,

Да, обновляемая порция во время работы пакета будет храниться в БД. Однако медленную работу построчного слияния той же порции вы заметите намного раньше.

Безусловно, прямой коннект потенциально быстрее обмена через шину. Однако у шины есть свои преимущества. Во-первых, с ее помощью гораздо проще маршрутизировать потоки данных, без каких-либо доработок и деплоев m пакетов на n серверов, все делается централизованно и с буферизацией. Во-вторых, сообщения могут содержать внутри себя обработанные данные (например, форматированные параметры сделки), а не голые таблицы источника, которые могут черти-как документироваться, соединяться, индексироваться, блокироваться, меняться со временем...

Эти преимущества для меня часто более значимы, но не всегда. Например, у меня есть реализованные на прямом доступе сверки данных между системами.
...
Рейтинг: 0 / 0
07.01.2021, 20:38
    #40034083
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
.Евгений
medoed,

Да, обновляемая порция во время работы пакета будет храниться в БД. Однако медленную работу построчного слияния той же порции вы заметите намного раньше.

Безусловно, прямой коннект потенциально быстрее обмена через шину. Однако у шины есть свои преимущества. Во-первых, с ее помощью гораздо проще маршрутизировать потоки данных, без каких-либо доработок и деплоев m пакетов на n серверов, все делается централизованно и с буферизацией. Во-вторых, сообщения могут содержать внутри себя обработанные данные (например, форматированные параметры сделки), а не голые таблицы источника, которые могут черти-как документироваться, соединяться, индексироваться, блокироваться, меняться со временем...

Эти преимущества для меня часто более значимы, но не всегда. Например, у меня есть реализованные на прямом доступе сверки данных между системами.

Да, согласен с Вами, есть плюсы в шине. А вы шину просто используете для общения или передачи данных/изменений между своими системами или на ней можно и web сервис тоже развернуть (WSDL -ку), чтоб внешние системы - могли использовать её сервисы(по типу курсы валют от ЦБ) . Или у вас шина по большей части с хранилищем и обратно( другими Вашими системами) используется, тоесть только для внутренних систем (в домене)?
...
Рейтинг: 0 / 0
07.01.2021, 21:18
    #40034091
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
medoed
...или на ней можно и web сервис тоже развернуть (WSDL -ку), чтоб внешние системы - могли использовать её сервисы(по типу курсы валют от ЦБ).
Насколько я знаю, RabbitMQ не предоставляет такой возможности. У нас шина отвечает только за внутренний обмен между системами.
...
Рейтинг: 0 / 0
09.01.2021, 18:56
    #40034445
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
.Евгений

Господи, что за порнография по ссылке! За такие решения я бы настаивал на депортации "SQL Server database professional with 10+ years of experience" на историческую родину...


Не спорю, данный конкретный пример не очень, ту же сортировку можно сделать на стороне СУБД, а в SSIS просто поставить галочку, что набор отсортирован. Но он показывает все необходимые шаги для реализации, поэтому вполне можно от него отталкиваться.

Ps встречал случаи, когда хэш набора данных с инвертированием значения не изменялся (было 1, стало -1, а хэш остался прежним), поэтому лучше сравнивать по полям
...
Рейтинг: 0 / 0
09.01.2021, 20:02
    #40034460
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Критик
Ps встречал случаи, когда хэш набора данных с инвертированием значения не изменялся (было 1, стало -1, а хэш остался прежним), поэтому лучше сравнивать по полям

Когда хэш строится по CRC-32, вероятность коллизии достаточно велика. Поэтому нужно брать хотя бы MD5 (и вплоть до SHA512 в особо тяжелых случаях) .
Стоимость построения хеша внутри SSIS невелика .
А еще вычисленные на этапе загрузке хеши можно хранить в БД и загружать из приемника изменений только бизнес-ключ и хеш, с сопутствующими плюсами к производительности слияния и минусами к нагрузке на БД.
...
Рейтинг: 0 / 0
10.01.2021, 18:58
    #40034705
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
.Евгений,

Можно конечно и хранить хэш, а потом у вас в таблице с несколькими миллиардами строк появляется новое поле из источника. И гемморой с обновлением )

Вы сравнивали производительность вариантов со сравнением хэшей и всех полей? Если да, то какова прибавка? (просто интересно, я обычно сравниваю по полям, но встречал и решения с хэшами)
...
Рейтинг: 0 / 0
10.01.2021, 19:47
    #40034716
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
Критик,

нет никакого геморроя, можно даже обновить новое поле вручную. В худшем случае потом основной поток ETL выполнит одно "лишнее" обновление, когда изменится только значение хеша.

Вариант сравнения по всем полям для текущей загрузки я не рассматриваю в принципе, потому что критичен объем целевых данных: они размещаются в оперативной памяти (ключ источника + суррогатный ключ + версия + хеш) и разрешаются локально на сервере ETL без обращения к целевой БД. Сами понимаете, насколько различается производительность поиска в памяти локального процесса и в удаленной БД.

Сравнительная производительность непосредственно условий (за исключений особых случаев с большой совокупной длиной аргументов) мне не кажется заслуживающей внимания.
...
Рейтинг: 0 / 0
13.01.2021, 02:33
    #40035220
biwed.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pentaho -> Sql Server 2016
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
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Pentaho -> Sql Server 2016 / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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