Pull to refresh

Comments 5

Желательно избегать использования DATEDIFF в WHERE-клаусе, так как это приведет к необходимости просчитывать скаляр datediff(hh, end_time, getdate()) для каждой проверяемой записи, и соответственно, приведет к clustered index scan вместо index seek для определения подмножества выбираемых записей. Лучше написать where… end_time > (select top 1 dateadd(hh, -1, getdate())) — чтобы планировщик запроса гарантированно единственный раз вычислил subquery, возвращающую граничную дату, с которой уже будут сравниваться все записи в вашей таблице JobSessions. Здесь уже можно построить индекс по убыванию end_date и добавить туда included-колонки state и result — тогда записи вернутся мгновенно и без блокировки таблицы
Больше спасибо за корректировку, действительно, это так:

Мой вариант:


Предложенный вариант:

(Индекс, кстати, не кластеризирован)

Дмитрий, вы молодец, но, имхо:
700 метров под пуш в вебхук? ну, такое. ;)

зачем столько слоёв?
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get -y install locales
потом еще раз RUN apt-get -y install apt-transport-https freetds-dev unixodbc-dev git
ну и т.д.

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

и еще helpcenter.veeam.com/docs/backup/rest/em_web_api_reference.html?ver=95
у вас же целый Veeam Backup Enterprise Manager RESTful API есть, зачем в базу то лазить?

Дмитрий, вы молодец, но, имхо:

Вот за это спасибо, хоть и все, что перед «но», обычно не считается :)
700 метров под пуш в вебхук

Ну, 690 из них весит сам контейнер python, из которого мы билдимся.

Разумеется, можно использовать python:slim и доставить пакеты вручную, если стоит задача экономить место.

зачем столько слоёв?

Хотел сделать чуть нагляднее — чтобы красивенько писался номер степа, да и не думал об оптимизации, т.к. это скетч.
Можно, конечно, и сэкономить:
# Version: 2.0
# docker build -t veeam_to_msteams:2.0 -f /home/drozhd/veeam_to_teams/Dockerfile /home/drozhd/veeam_to_teams
FROM python:3.6.2
MAINTAINER Dmitry Rozhdestvenskiy <dremsama@gmail.com>
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils apt-transport-https freetds-dev unixodbc-dev git \
    && apt-get -y install locales \
    && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
    && locale-gen \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get -y update && ACCEPT_EULA=Y apt-get install msodbcsql \
    && mkdir /veeam_to_msteams/ \
    && git clone https://github.com/daymer/Veeam-to-MS-Teams-notification-sender-app /veeam_to_msteams \
    && pip install --upgrade pip \
    && pip install -r /veeam_to_msteams/requirements.txt \
    && mkdir /var/log/veeam_to_msteams/ \
    && chmod +x /veeam_to_msteams/launch_veeam_to_msteams.sh \
ADD configuration.py /veeam_to_msteams/
CMD ["/bin/bash", "/veeam_to_msteams/launch_veeam_to_msteams.sh"]


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

Чтобы наши коллеги понимали, куда надо будет подставить либу\etc для связи с тем мессенджером, который они захотят использовать. По сути, вопрос, который вы подняли, является очень провокационным — использовать ли готовые либы или собрать еще один json… и еще один. И валидатор для него.
Думаю, здесь мы только сломаем копья, так что оставим его будующим поколениям :)
у вас же целый Veeam Backup Enterprise Manager RESTful API есть

Если коротко — Veeam Enterprise Manager дополнительный продукт + RESTful API поддерживается только в Enterprise Plus версии продукта.
А еще можно было бы брать эти эвенты:
— из Windows Event Manager
— запрашивая наш собственный WMI спейс
— парсить логи
— используя PowerShell
— да что уж там, прикинувшись Veeam Shell (GUI нашей программы) запрашивать его просто по сети у основного сервиса VBR
Все варианты хороши :)
о, ответили, я уж думал забыли. ж) ну, ладно, ладно.
вы молодец, спасибо за пост. ) без всяких но. )))
Sign up to leave a comment.