|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... В MSSQL размер лога транзакций БД тоже можно ограничить. :-)И? :)Может сломаться не хуже чем в Оракле. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:13 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... И? :)Может сломаться не хуже чем в Оракле. :-)Ну да. У меня просто после Оракла, где самому надо делать коммиты (а если их не делать, то по шапке надают за повисшие анонимные транзакции), выработался рефлекс. И, как следствие, с MS SQL проблем пока не было. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:19 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУО больших объемах веду речь, выше я писал более конкретно - прочти еще раз. Реальные массивы данных - да. Что тебя пугает? Я (и не только я) уже несколько раз указали, где ты не просто облажался, а обосрался с ног до головы. Вот тут 17305632 Ок, давай посмотрим, на сколько большие объёмы данных ты имел в виду: МСУЧем тебе не "штатная ситуация" для обновления сотрудников из 1С / аксапты / сапа? Обновляет отдельная песочница в виде вин сервиса. МСУВот тебе тот же элементарный кейс, синхронизация информации (фион, табельный номер, подразделение) о сотрудниках из аксапты. 30К сотрудников , представь себе ситуацию, когда ночной джоб перелопатил 29.9К сотрудников и по каким-то причинам упал. Какой смысл отката всей транзакции? Да и зачем мне захватывать объекты в БД с определенным уровнем изоляции? Что за бред? Т.е. ты хочешь сказать, что 30К сотрудников это проблема для транзакции? Или ты сказал о 30К сотрудников, но на самом деле имел в виду абстрактные миллионы и миллиарды записей в абстрактных базах данных абстрактных организаций в вакууме? Я зачем кейс просил? Чтобы обсуждать предметно, вести дискуссию по сути, основываясь на каких-то данных, приближенных к реальности. Ты же растёкся говном по кафелю. И это ты обосрался. Если ты так не считаешь, то задам вопрос ещё раз. 30К — проблема для транзакции? Докажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:22 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КСогласование должно быть в пределах сущности. В обсуждаемом случае эта сущность "сотрудник". Ну хорошо. Идёт импорт. И почему-то решено делать его во время рабочего дня. Половина сотрудников успешно импортнулось, половина ещё в процессе. И тут кто-то решил сделать некий сводный отчёт, допустим по КТУ. А как раз вместе с сотрудниками импортятся их обновлённые КТУ. Что получится в отчёте не подскажешь? Просто интересно, кто-то такую ситуацию считает нормально? Если да, то я умываю руки. Видимо мы живём в разных реальностях. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:30 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Может сломаться не хуже чем в Оракле. :-)Ну да. У меня просто после Оракла, где самому надо делать коммиты (а если их не делать, то по шапке надают за повисшие анонимные транзакции), выработался рефлекс. И, как следствие, с MS SQL проблем пока не было. :) SET IMPLICIT_TRANSACTIONS ON поможет вернуть оракловую романтику. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:31 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КСогласование должно быть в пределах сущности. В обсуждаемом случае эта сущность "сотрудник". Ну хорошо. Идёт импорт. И почему-то решено делать его во время рабочего дня. Половина сотрудников успешно импортнулось, половина ещё в процессе. И тут кто-то решил сделать некий сводный отчёт, допустим по КТУ. А как раз вместе с сотрудниками импортятся их обновлённые КТУ. Что получится в отчёте не подскажешь? Просто интересно, кто-то такую ситуацию считает нормально? Если да, то я умываю руки. Видимо мы живём в разных реальностях.Но если это так важно, запретить взятие некоторых отчётов во время синхронизации особого труда не составит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:38 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КСогласование должно быть в пределах сущности. В обсуждаемом случае эта сущность "сотрудник". Ну хорошо. Идёт импорт. И почему-то решено делать его во время рабочего дня.Вот ведь странное желание импортировать горячие предложения от отелей как можно быстрее :) hVostt, ну как обычно всё от задачи ведь зависит :) При отгрузке нефти тоже никто ночи не ждёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAВот ведь странное желание импортировать горячие предложения от отелей как можно быстрее :) hVostt, ну как обычно всё от задачи ведь зависит :) При отгрузке нефти тоже никто ночи не ждёт. Я всё понимаю, задачи разные, решения тоже разные. Горячие тур. предложения и, скажем, месячный отчёт о зарплате сотрудникам, вещи таки разные, не находишь? Придёт злющий бухгалтер к МСУ и пусть он ему объясняет, что транзакции априори плохие и тычет в лицо ему рекомендациями от майкрософта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:58 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНо если это так важно, запретить взятие некоторых отчётов во время синхронизации особого труда не составит. Ну может где-то вообще не важно. Если не важно, то и фиг с ним ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 11:01 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНо если это так важно, запретить взятие некоторых отчётов во время синхронизации особого труда не составит. Решение сделать _ночной_ импорт каких-то данных / реализовать _запрет_ каких-то отчетов во время импорта - ведет к стремительной деградации ИС в целом. Обеспечивайте ACID вне зависимости от времени суток. Если же какие-то данные надо грузить исключительно ночью, иначе система умрёт - налицо серьезный косяк в архитектуре/проектировании. И чо вы тут усираетесь - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 11:08 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAМСУskyANA, опять ты со своими NoSQL инкарнациями :)Да при чём тут NoSQL. Я просто намекнул, что не плохо бы уточнять о каком уровне операции идёт речь. :) NoSQL рассматриваем как eventual consistenc, почему нет. Что ты имеешь ввиду под "уровнем" операции? ) skyANAМСУТут речь немного не о том. Речь о массовых операциях, интеграциях, синхронизациях. Обеспечить ACID на уровне операции (пакет в виде классов) - да, обеспечить ACID на уровне всего импорта - нет. Вот о чем речь.Реализовать импорт милииона чего-то там как атомарную операцию - это конечно глупо :) Теперь объясни это утырку хвосту :) hVosttМСУО больших объемах веду речь, выше я писал более конкретно - прочти еще раз. Реальные массивы данных - да. Что тебя пугает? Я (и не только я) уже несколько раз указали, где ты не просто облажался, а обосрался с ног до головы. Вот тут 17305632 Ок, давай посмотрим, на сколько большие объёмы данных ты имел в виду: Ты читаешь жопой? 17310432 МСУЧем тебе не "штатная ситуация" для обновления сотрудников из 1С / аксапты / сапа? Обновляет отдельная песочница в виде вин сервиса. hVosttТ.е. ты хочешь сказать, что 30К сотрудников это проблема для транзакции? А почему это не может быть проблемой? "Сотрудник" - может быть не линейной записью, а составной (подклассы Должность, Штатное расписание, Организация и так далее). Процессинг "сотрудника" может длиться не быстро. К примеру, если "сотрудник" процессится секунду, то вся синхронизация из 30К сотрудников займет уже 8 часов. Суть улавливаешь? hVosttЯ зачем кейс просил? Чтобы обсуждать предметно, вести дискуссию по сути, основываясь на каких-то данных, приближенных к реальности. Ты же растёкся говном по кафелю. И это ты обосрался. Если ты так не считаешь, то задам вопрос ещё раз. 30К — проблема для транзакции? Докажешь? Я тебе кейс и привёл. Да какой тут кейс, возьми любую жизненную ситуацию по организации импорта и синхронизации из внешних систем. Куда не плюнь, всё тоже самое. Просто ты днище и ничерта не понимаешь суть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 11:23 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУА почему это не может быть проблемой? "Сотрудник" - может быть не линейной записью, а составной (подклассы Должность, Штатное расписание, Организация и так далее). Процессинг "сотрудника" может длиться не быстро. К примеру, если "сотрудник" процессится секунду, то вся синхронизация из 30К сотрудников займет уже 8 часов. Суть улавливаешь? Пусть. Только при чём тут транзакция? В чём здесь проблема конкретно транзакции? Ты так и не ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 12:49 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЯ тебе кейс и привёл. Да какой тут кейс, возьми любую жизненную ситуацию по организации импорта и синхронизации из внешних систем. Куда не плюнь, всё тоже самое. Просто ты днище и ничерта не понимаешь суть :) Ни о чём. Какая ещё любая ситуация, ты больной? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 12:49 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVostt, тут все просто Скайана в принципе сказал что надо тут многие работают с "необязательной информацией" (ну с трех сайтов скачал инфу, а с четвертой неполностью - за это с работы не выгонят, пофиг что там твой клиент не обеспечен полной инфой с 4ех сайтов, убытков не будет скорее всего, в следующий раз все будет ок, мало кокой клиент из такого инцидента уйдет из сайта и т.д.) с синхронизацией "сотрудников" в принципе то же самое, если на основе этой инфы принимаются какие то решения, которые могут привести к убыткам, то это плохо, а если это инфа нужна для выписки праздничных конвертов по случаю 12 июня, то и пофиг ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 14:22 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttПусть. Только при чём тут транзакция? Ну вроде взрослый мальчик, пора уже знать, что батчи выполняются в транзакции. hVosttВ чём здесь проблема конкретно транзакции? Ты так и не ответил. Я уже 100 раз ответил (и не только я), в чем проблема "конкретно" транзакции. Повышая уровень изоляции и заключая импорт в транзакцию, ты понижаешь вероятность непоследовательности данных, но при этом появляется такой недостаток, как сокращение параллелизма. Вероятность блокировок возрастает и весь этот процесс кардинально влияет на многопользовательский доступ. О этом тоже тебе всё разжевали. Для решения возможных проблем параллелизма в виде зависимости от незафиксированных данных, непоследовательного анализа и чтения фантомов нужно оборачивать ACID объект или группу объектов - у меня в примере EF это группа объектов, которая определяется как пакет из сотни экземпляров классов (с подклассами), определяемые по формуле i % 100 == 0. Это сделано для оптимизации скорости импорта. Если есть желание еще более уменьшить фантомную зависимость, оборачивай в ACID один экземпляр, а не группу. Но тогда приготовься просесть по времени отработки всего импорта. Что не понятно? hVosttМСУЯ тебе кейс и привёл. Да какой тут кейс, возьми любую жизненную ситуацию по организации импорта и синхронизации из внешних систем. Куда не плюнь, всё тоже самое. Просто ты днище и ничерта не понимаешь суть :) Ни о чём. Какая ещё любая ситуация, ты больной? Обычная любая ситуация с импортом данных, что непонятно говорю? Купи себе уже голову, клоун ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 14:23 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRoshVostt, тут все просто Скайана в принципе сказал что надо тут многие работают с "необязательной информацией" (ну с трех сайтов скачал инфу, а с четвертой неполностью - за это с работы не выгонят, пофиг что там твой клиент не обеспечен полной инфой с 4ех сайтов, убытков не будет скорее всего, в следующий раз все будет ок, мало кокой клиент из такого инцидента уйдет из сайта и т.д.) с синхронизацией "сотрудников" в принципе то же самое, если на основе этой инфы принимаются какие то решения, которые могут привести к убыткам, то это плохо, а если это инфа нужна для выписки праздничных конвертов по случаю 12 июня, то и пофигЕсли в случае ошибки отменятся все результаты сеанса репликации - да, это намного улучшит качество принятия решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 14:43 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КЕсли в случае ошибки отменятся все результаты сеанса репликации - да, это намного улучшит качество принятия решения. Всё или ничего ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 14:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRosтут многие работают с "необязательной информацией" Ещё один сцуко теоретик нарисовался Информация у нас всех более чем "обязательная". И эта обязательность, в том числе и информация по сотрудникам, обеспечивается определенной степенью изоляции. Один объект (накладная, банковская операция, сотрудник) не может быть разорван, он либо отпроцессится либо нет. И то и другое - нормальные штатные ситуации. Изолировать нужно объект или группу объектов, но никак не сам процессинг. Когда вы с хвостом убъете уже себя об стену? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 14:54 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, не ляля отчет о численности требует всех ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:12 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
как же я буду распределять работы по сотрудникам, если их нет? кто блин ПЛАН будет выполнять? на кого наряды выписывать? делайте свои сайты и не вымахивайтесь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:14 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
давай расстрельный список полностью, а не то дядя берия идет к тебе! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:15 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRosотчет о численности требует всех Отчет с нулевой численностью укротит твою потенцию? ) ViPRosкак же я буду распределять работы по сотрудникам, если их нет? кто блин ПЛАН будет выполнять? на кого наряды выписывать? Так о том же и речь. Зачем рубить весь процессинг из-за одной пакетной ошибки? Так хоть 95% сотрудников распределишь. ViPRosдавай расстрельный список полностью, а не то дядя берия идет к тебе! А нету его, процессинг же упал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:19 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, ну жди киллера, тогда ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:21 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЯ уже 100 раз ответил (и не только я), в чем проблема "конкретно" транзакции. Повышая уровень изоляции и заключая импорт в транзакцию, ты понижаешь вероятность непоследовательности данных, но при этом появляется такой недостаток, как сокращение параллелизма. Вероятность блокировок возрастает и весь этот процесс кардинально влияет на многопользовательский доступ. О этом тоже тебе всё разжевали. Для решения возможных проблем параллелизма в виде зависимости от незафиксированных данных, непоследовательного анализа и чтения фантомов нужно оборачивать ACID объект или группу объектов - у меня в примере EF это группа объектов, которая определяется как пакет из сотни экземпляров классов (с подклассами), определяемые по формуле i % 100 == 0. Это сделано для оптимизации скорости импорта. Если есть желание еще более уменьшить фантомную зависимость, оборачивай в ACID один экземпляр, а не группу. Но тогда приготовься просесть по времени отработки всего импорта. Что не понятно? Давай так, вот ты привёл пример на EF с группами объектов. Импорт таким способом сколько выполняется по времени? Примерно, ну хотя бы приблизительно? И второй вопрос, работает ли кто-то ещё с БД в то время, когда запускается этот джоб? Скажешь? Я тогда отвечу, почему такое решение плохое. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:38 |
|
|
start [/forum/topic.php?fid=17&msg=38889530&tid=1349618]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 247ms |
total: | 509ms |
0 / 0 |