|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Скажем, нужно сделать обновление поля у кучи записей в таблице. Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended http://habrahabr.ru/post/203214/ https://github.com/loresoft/EntityFramework.Extended Кто как вообще поступает в подобных случаях? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2015, 20:31 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице. Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended http://habrahabr.ru/post/203214/ https://github.com/loresoft/EntityFramework.Extended Кто как вообще поступает в подобных случаях? В штатной ситуации пакетные обновления не требуются. А если вдруг потребовались, то это огромный косяк в бизнес-логике и в архитектуре данных. Если подобное когда-либо случается, засучиваем рукава и рефакторим. Это расширение работает в обход контекста, т.е. по сути тоже самое, что втыкать SQL. Другого не дано. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2015, 23:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Если данных обновлять надо не очень много, то можно отключить отслеживание изменений контекста. А если очень-очень много, то SQL + UPDATE, но повторюсь, это может просто сломать всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2015, 23:44 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttShocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице. Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended http://habrahabr.ru/post/203214/ https://github.com/loresoft/EntityFramework.Extended Кто как вообще поступает в подобных случаях? В штатной ситуации пакетные обновления не требуются. А если вдруг потребовались, то это огромный косяк в бизнес-логике и в архитектуре данных. Если подобное когда-либо случается, засучиваем рукава и рефакторим. Это расширение работает в обход контекста, т.е. по сути тоже самое, что втыкать SQL. Другого не дано. ну теперь представь, что с сайтами закончил и написал прогу которая ведет например проекты из 100000 работ и вот кто то сдвинул некоторые работы в начале проекта ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 01:41 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице. Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended http://habrahabr.ru/post/203214/ https://github.com/loresoft/EntityFramework.Extended Кто как вообще поступает в подобных случаях? Так EF же работает с хранимками. То что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 02:05 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
MonochromatiqueТак EF же работает с хранимками. То что надо.ну, хранимка в данном случае, также как и это расширение, будет выполнена вне контекста, да еще и создаст привязку к конкретной СУБД. Я готов принять версию Хвоста, как рабочую, но мне непонятно, как делать рефакторинг таких вещей: 1) В прайс-листе в одной категории лежит 200 позиций, администратор подумал, что это слишком много, создал еще одну категорию, выбрал галочками по умозрительным критериям 100 позиций и перенес их в другую категорию. 2) Типовая функция для [около]почтовых программ: "пометить все|выделенные письма как [не]прочитанные" 3) Чистка устаревших записей лога ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 11:30 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.Pro Я готов принять версию Хвоста, как рабочую, но мне непонятно, как делать рефакторинг таких вещей: }{ вост просто не работал с большими объемами данных, вот ему и кажется, что без прямых инъекций можно обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 12:17 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице. Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended http://habrahabr.ru/post/203214/ https://github.com/loresoft/EntityFramework.Extended Кто как вообще поступает в подобных случаях?Отдельной Command (CQRS). Или через репозиторий, внутри которого одна из реализаций: ExcuteUpdate (NHibernate), ExcuteNonQuery (ADO.NET), Execute (Dapper), Update (MongoDB). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 12:40 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttВ штатной ситуации пакетные обновления не требуются. А если вдруг потребовались, то это огромный косяк в бизнес-логике и в архитектуре данных. Ты укурен? И причем тут "бизнес логика"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 13:47 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Monochromatique}{ вост просто не работал с большими объемами данных, вот ему и кажется, что без прямых инъекций можно обойтись. Давай-ка реши мне следующие задачи при изменении, «прямыми инъекциями»: 1. Валидация изменений для каждого объекта. 2. Проверка допустимости изменения для пользователя по каждому объекту. 3. Дополнительные задачи инфраструктуры, такие как установка времени изменения, логгирование, и особенно, если ПО предполагает возможность отката последнего изменения. 4. Дополнительные бизнес-процессы, связанные с изменениями. Это всё определяется в бизнес-логике. Поэтому архитектура разделяется на слои, где каждый слой отвечает за свой уровень компетенции. Если требуется часто делать пакетные изменения, возможно данные плохо нормализованы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 14:58 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.Pro1) В прайс-листе в одной категории лежит 200 позиций, администратор подумал, что это слишком много, создал еще одну категорию, выбрал галочками по умозрительным критериям 100 позиций и перенес их в другую категорию. 2) Типовая функция для [около]почтовых программ: "пометить все|выделенные письма как [не]прочитанные" 3) Чистка устаревших записей лога Кроме логов, которые совершенно точно надо чистить с помощью операции DELETE, остальные действия можно делать обычно, без «низкоуровневых» bulk операций. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:02 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать. Не частое явление конечно, но вполне себе бизнес-логика :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:02 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУТы укурен? И причем тут "бизнес логика"? Шта? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:02 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAhVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать. Не частое явление конечно, но вполне себе бизнес-логика :)Ну, по идее, "активность" такого объекта должна определяться одним полем - "активность" юзера. Тогда для деактивирования нужно поменять только поле активности юзера. Тут я с Хвостом согласен ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:07 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAhVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать. Не частое явление конечно, но вполне себе бизнес-логика :) Об этом и речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:08 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttостальные действия можно делать обычно, без «низкоуровневых» bulk операций.Хорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях): Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии). Есть прайс-листы поставщиков, совокупно несколько миллионов позиций. Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:13 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProХорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях): Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии). Есть прайс-листы поставщиков, совокупно несколько миллионов позиций. Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий. Такую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:17 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttТакую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.как раз мой первоначальный вопрос был примерно об этой ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:22 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttShocker.ProХорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях): Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии). Есть прайс-листы поставщиков, совокупно несколько миллионов позиций. Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий. Такую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.+1 Зачем это делать через EF? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:25 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttТакую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.как раз мой первоначальный вопрос был примерно об этой ситуации. Ну технически, запросами. Уж как конкретно, прямыми SQL, или вызовом хранимки, или с помощью некоего экстеншена, это уже by design. Объёмы табличных данных большие, операция периодическая, значит это будет делать некий сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:26 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:27 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANA Выбор ORM-стратегии (.NET) В Абрикосе в импорте данных используется Dapper. Даппер кажется и рожден для того, чтобы колбасить данные, импорт/экспорт/массовая обработка... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:31 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANA, спасибо, хорошая статья ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:38 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANA Выбор ORM-стратегии (.NET) В Абрикосе в импорте данных используется Dapper. Даппер кажется и рожден для того, чтобы колбасить данные, импорт/экспорт/массовая обработка... :)Мой посыл в том, что если грамотно изолировать слой доступа к данным, то где надо внутри импользуешь EF, где надо Dapper, а где-то и голый ADO.NET. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 15:39 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAМой посыл в том, что если грамотно изолировать слой доступа к данным, то где надо внутри импользуешь EF, где надо Dapper, а где-то и голый ADO.NET. Согласен, тоже хотел об этом сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2015, 19:44 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУТы укурен? И причем тут "бизнес логика"? Шта? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Чем тебе не "штатная ситуация" для обновления сотрудников из 1С / аксапты / сапа? Обновляет отдельная песочница в виде вин сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 14:58 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЧем тебе не "штатная ситуация" для обновления сотрудников из 1С / аксапты / сапа? Обновляет отдельная песочница в виде вин сервиса. Это всё в рамках транзакции? Если нет, то оч. плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 15:11 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttЭто всё в рамках транзакции? Зачем? Откуда такие требования? P.S. Если произошел сбой, следующая синхронизация добъёт отвалившийся кусок. Плюс, на реальных массивах данных транзакционность априори вредна и опасна. Это ж тебе не пару тыщ строк обновить. Но там уже более серьезные инструменты вступают в бой типа SSIS, BizTalk и иже с ними. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 16:36 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУhVosttЭто всё в рамках транзакции? Зачем? Откуда такие требования? P.S. Если произошел сбой, следующая синхронизация добъёт отвалившийся кусок. Плюс, на реальных массивах данных транзакционность априори вредна и опасна. Это ж тебе не пару тыщ строк обновить. Но там уже более серьезные инструменты вступают в бой типа SSIS, BizTalk и иже с ними. Ни разу не сталкивался с ситуацией, когда транзакционность опасна и вредна. Первый раз вообще такое слышу. И к твоему изначальному вопросу, ProcessEmployee(db, u, employees); — что это, если не бизнес-логика? Только не говори, что это просто строка кода, или «какой-та метад». ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 16:51 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttНи разу не сталкивался с ситуацией, когда транзакционность опасна и вредна.при интенсивной многопользовательской работе в разы увеличивает вероятность дедлоков. На TSQL всегда старался избежать транзакции там, где сбой не является критичным ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 16:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttНи разу не сталкивался с ситуацией, когда транзакционность опасна и вредна.при интенсивной многопользовательской работе в разы увеличивает вероятность дедлоков. На TSQL всегда старался избежать транзакции там, где сбой не является критичным Не вижу причин решать эту проблему средствами БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 17:03 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttНи разу не сталкивался с ситуацией, когда транзакционность опасна и вредна. Первый раз вообще такое слышу. Вот тебе тот же элементарный кейс, синхронизация информации (фион, табельный номер, подразделение) о сотрудниках из аксапты. 30К сотрудников, представь себе ситуацию, когда ночной джоб перелопатил 29.9К сотрудников и по каким-то причинам упал. Какой смысл отката всей транзакции? Да и зачем мне захватывать объекты в БД с определенным уровнем изоляции? Что за бред? hVosttИ к твоему изначальному вопросу, ProcessEmployee(db, u, employees); — что это, если не бизнес-логика? Только не говори, что это просто строка кода, или «какой-та метад». Ну какая-то минимальная бизнес-логика, не спорю. Но не в этом суть, суть описана выше. Процессинг данных на EF - реальная задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 17:35 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУпропущено... Зачем? Откуда такие требования? P.S. Если произошел сбой, следующая синхронизация добъёт отвалившийся кусок. Плюс, на реальных массивах данных транзакционность априори вредна и опасна. Это ж тебе не пару тыщ строк обновить. Но там уже более серьезные инструменты вступают в бой типа SSIS, BizTalk и иже с ними. Ни разу не сталкивался с ситуацией, когда транзакционность опасна и вредна. Первый раз вообще такое слышу.Я сталкивался. Стараюсь делать транзакции как можно меньше. От греха подальше, нуегонах... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 17:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Мда, hVostt опять вляпался в то, в чём не разбирается... :) Интересно, как на этот раз собирается выкручиваться. Больше всего радуют такие мемберы, которые в теме ноль, но сцуко совет расчехлить - гавно вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 18:08 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУВот тебе тот же элементарный кейс, синхронизация информации (фион, табельный номер, подразделение) о сотрудниках из аксапты. 30К сотрудников, представь себе ситуацию, когда ночной джоб перелопатил 29.9К сотрудников и по каким-то причинам упал. Какой смысл отката всей транзакции? Да и зачем мне захватывать объекты в БД с определенным уровнем изоляции? Что за бред? Ты видать совсем плохой стал, на старость лет. Тебя надо отстранить от разработки ПО и отправить срочняком на пенсию, маразм сыграл с тобой плохую шутку, такую ахинею нести. А чо, нормально. Подумаешь, кому-то из 30К сотрудников не повезёт, и будет бедняга к админам бегать, чтоб его инфу актуализировали. Писец. Тупее в жизни ничего не слышал. МСУНу какая-то минимальная бизнес-логика, не спорю. Но не в этом суть, суть описана выше. Процессинг данных на EF - реальная задача. Какая ещё суть? От гениальности твоего «изобретения» я аж прослезился. Может замутишь по этой теме докторскую? МСУМда, hVostt опять вляпался в то, в чём не разбирается... :) Интересно, как на этот раз собирается выкручиваться. Больше всего радуют такие мемберы, которые в теме ноль, но сцуко совет расчехлить - гавно вопрос А ты медаль себе в переходе купи.. Нет, лучше орден, или даже два. На свою большую, распирающуюся от гордости грудь, как раз будет, заслужено ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 18:39 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КЯ сталкивался. Стараюсь делать транзакции как можно меньше. От греха подальше, нуегонах... Поделись плз кейсами, когда она вредна? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 18:40 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КЯ сталкивался. Стараюсь делать транзакции как можно меньше. От греха подальше, нуегонах... Поделись плз кейсами, когда она вредна? счас будут гуглить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 19:00 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttТы видать совсем плохой стал, на старость лет. Тебя надо отстранить от разработки ПО и отправить срочняком на пенсию, маразм сыграл с тобой плохую шутку, такую ахинею нести. А чо, нормально. Подумаешь, кому-то из 30К сотрудников не повезёт, и будет бедняга к админам бегать, чтоб его инфу актуализировали. А ты предлагаешь всем 30К сотрудникам к админу бегать, чтобы их актуализировали? Тебя уволят hVosttМСУНу какая-то минимальная бизнес-логика, не спорю. Но не в этом суть, суть описана выше. Процессинг данных на EF - реальная задача . Какая ещё суть? От гениальности твоего «изобретения» я аж прослезился. Может замутишь по этой теме докторскую? Суть выделена болдом. hVosttА ты медаль себе в переходе купи.. Нет, лучше орден, или даже два. На свою большую, распирающуюся от гордости грудь, как раз будет, заслужено Зачем мне медаль и ордена. Лишний раз неофита попинать просто задорно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 20:49 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУА ты предлагаешь всем 30К сотрудникам к админу бегать, чтобы их актуализировали? Тебя уволят Угу, тебя с такими подходами ещё в банковской системе не хватало. Ну подумаешь, часть бабла прошло, часть не прошло. Пох... Дурик, у тебя унылый, пахабный и тупой пример. Придумай что-нибудь ещё. И поясни вот этот говновысер, плз. Желательно хоть как-то аргументировать, а не жалкие пуки в воду: МСУна реальных массивах данных транзакционность априори вредна и опасна П.С. даже на собеседовании джуниора тебе за такое ушлёпство рассмеются в лицо и отправят мести улицы. умник хренов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 22:09 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЛишний раз неофита попинать просто задорно :) С такой пиналкой тебе только голубей дрессировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 22:10 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУА ты предлагаешь всем 30К сотрудникам к админу бегать, чтобы их актуализировали? Тебя уволят Угу, тебя с такими подходами ещё в банковской системе не хватало. Ну подумаешь, часть бабла прошло, часть не прошло. Пох... В кучу смешалось всё, люди, кони, остатки мозгов хвоста... hVosttДурик, у тебя унылый, пахабный и тупой пример. Придумай что-нибудь ещё. Почему унылый? Возьми любую ерп систему, любой классификатор - и хоть обинтегрируйся. Мало? hVosttИ поясни вот этот говновысер, плз. Желательно хоть как-то аргументировать, а не жалкие пуки в воду: МСУна реальных массивах данных транзакционность априори вредна и опасна П.С. даже на собеседовании джуниора тебе за такое ушлёпство рассмеются в лицо и отправят мести улицы. умник хренов. Ты просто еще не дорос до этого высера. Клепай лучше формочки и тестируй код :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 23:01 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУТы просто еще не дорос до этого высера. Клепай лучше формочки и тестируй код :) Ты напоминаешь героя одной из книжек Носова: -- Моей музыки не понимают, -- говорил он. -- Еще не доросли до моей музыки. Вот когда дорастут -- сами попросят, да поздно будет. Не стану больше играть. Вместо пояснений, унылые пуки в лужу. Я в прочем этого от тебя и ожидал. Мой вопрос на счёт пояснения твоих громких заявлений можно считать риторическим, так как ты просто тупо слил. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 00:02 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttВместо пояснений, унылые пуки в лужу. А зачем что-то "пояснять" идиоту, причем 10 раз подряд? Ведь, согласись, сколько не говори дураку, что он дурак, всё-равно без толку. Еще и обругает. Хорошая басня про тебя с национального литературного портала :) Басня про дуракаНе помню где, но было так, Что жил среди людей Непримечательный дурак Не гад, и не злодей. Носил пиджак он или фрак И выглядел, как все, И лишь внутри он был дурак Во всей своей красе. Он был хорош, пока молчал, Ну, а болтал когда, Никто его не замечал - Подумаешь беда! Но как-то раз один простак (Он был издалека), Сказал негромко: «Вот, дурак!», Послушав дурака. Герой наш белый стал как мел И, стукнув кулаком, Вдруг завопил: «Меня посмел Назвать он дураком! Эй, люди! Как же это так, Я спрашиваю вас? Он говорит, что я дурак! Он так сказал сейчас!» Пока бедняга не охрип, Хватало сил пока Кричал, что этот гадкий тип Нашел в нем дурака! Никто их слушать не хотел Всем было не до них. У всех и так хватает дел, Проблем полно своих. Спасибо крикам дурака! Он всех достал! И всяк Теперь уж знал наверняка, Что перед ним дурак. Мораль сама придет на ум: Коль не совсем дурак, Не поднимай напрасно шум - Молчи себе в кулак! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 08:55 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КЯ сталкивался. Стараюсь делать транзакции как можно меньше. От греха подальше, нуегонах... Поделись плз кейсами, когда она вредна?Про лишние блокировки, в том числе повышающие вероятность мёртвой блокировки, выше уже написали. Наблюдал случай, один админ самовольно решил почистить таблицу с логами. Откуда ему было знать, что MSSQL выполняет команду delete from Log where EntryDate < @d в одной транзакции. Он сначала пару часов ждал, пока оно удалится. Потом ему надоело ждать, он отменил запрос. Потом все столько же ждали, пока отменится транзакция. На всё ушло часов ~6. Из-за невозможности отключения транзакций например чистка БД от старых записей превращается в мучение, хотя казалось бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 09:37 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей, зачем ты разжевываешь очевидное неофиту, он учиться не хочет, живёт в своём космосе измерении на цепи и гавкает, когда надоедает писать юнит тесты. Пусть тухнет, забей :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 09:55 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КОткуда ему было знатьну как бэ админ должен было это знать Пока шишку не набьешь... Я тоже запускал, правда update. Хорошо, что ночью. В два часа запустил, на четыре поставил будильник на всякий случай, что было правильным решением, в четыре отменил транзакцию, до шести она откатывалась, успел до начала рабочего дня ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 10:22 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Во всех букварях черным по-белому писано, что транзакции должны быть как можно короче, в этом их эффективность. Но Хвост продолжает жечь напалмом https://technet.microsoft.com/ru-ru/library/ms187484(v=sql.105).aspx В целях сокращения конкуренции за ресурсы при одновременной работе пользователей, особенно в многопользовательских системах, транзакции должны быть как можно более короткими. https://technet.microsoft.com/ru-ru/library/ms187484(v=sql.105).aspx Длительные неэффективные транзакции могут без проблем работать при небольшом количестве пользователей, но могут создавать совершенно недопустимую нагрузку в системах, где одновременно работают тысячи пользователей. Рекомендации по кодированиюТранзакция должна быть как можно более короткой. P.S. Хвост, купи себе уже голову ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 10:48 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУАлексей, зачем ты разжевываешь очевидное неофиту, он учиться не хочет, живёт в своём космосе измерении на цепи и гавкает, когда надоедает писать юнит тесты. Пусть тухнет, забей :) Пока что вижу, что это ты из космоса так и не вылазишь никогда. Я спросил у человека — он ответил. Спросил же у тебя, ты максимум изображаешь из себя шута, хотя может и не изображаешь вовсе... Просто шут. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:20 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVostt, что ты там бурлишь себе под нос, транзактщионщик? Иди паси коз, и не забудь их оттестировать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:24 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУP.S. Хвост, купи себе уже голову Мне — зачем? Я же не туплю как ты. Расскажи-ка, как ты обходишься без транзакций людям. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:32 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУhVostt, что ты там бурлишь себе под нос, транзактщионщик? Иди паси коз, и не забудь их оттестировать МСУ ты в своём репертуаре: пук-пук-пук в лужу. И сел в лужу. Ведь ты единственный в мире знаешь, как работать с БД без транзакций ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:33 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУP.S. Хвост, купи себе уже голову Мне — зачем? Ну как бы без головы трудно нынче. Хотя ты прав, и так сойдёт hVosttРасскажи-ка, как ты обходишься без транзакций людям. А я разве без них обхожусь? hVosttМСУ ты в своём репертуаре: пук-пук-пук в лужу. И сел в лужу. Ведь ты единственный в мире знаешь, как работать с БД без транзакций В данном случае лужа - это твоё лицо. Да, так и есть. Пук в лужу? Ну хорошо, пускай будет так ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:39 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КПро лишние блокировки, в том числе повышающие вероятность мёртвой блокировки, выше уже написали. Наблюдал случай, один админ самовольно решил почистить таблицу с логами. Откуда ему было знать, что MSSQL выполняет команду delete from Log where EntryDate < @d в одной транзакции. Он сначала пару часов ждал, пока оно удалится. Потом ему надоело ждать, он отменил запрос. Потом все столько же ждали, пока отменится транзакция. На всё ушло часов ~6. Из-за невозможности отключения транзакций например чистка БД от старых записей превращается в мучение, хотя казалось бы... А как выкрутились из ситуации? Забили на чистку логов? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:40 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУА я разве без них обхожусь? Ты только недавно говорил «АПРИОРИ ОПАСНА И ВРЕДНА», скажи, ты не осёл случайно? Упёртое тупое животное. Сам сказал «опасна и вредна» и тут же даёшь заднюю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:41 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttА как выкрутились из ситуации? Забили на чистку логов?очевидно, операции, затрагивающие такие большие объемы просто делаются в цикле частями. Тут целостность транзакции не нужна. Мало того, суммарно на это уйдет в разы меньше времени, так как СУБД не потребуется делать не*$*ически огромную запись в лог транзакций, а потом ее коммитить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:44 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, И ещё скажи мне, как вот это твоё высказывание: МСУпредставь себе ситуацию, когда ночной джоб перелопатил 29.9К сотрудников и по каким-то причинам упал Согласуется с твоими ссылками про проблемы в многопользовательской среде, ведь как бы «ночной джоб» работает обычно с БД в одно рыло, монопольно? Я всё жду не дождусь от тебя реальный проблемный кейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttА как выкрутились из ситуации? Забили на чистку логов?очевидно, операции, затрагивающие такие большие объемы просто делаются в цикле частями. Тут целостность транзакции не нужна. Мало того, суммарно на это уйдет в разы меньше времени, так как СУБД не потребуется делать не*$*ически огромную запись в лог транзакций, а потом ее коммитить. Про чистки логов понятно, их надо делать серией TOP-ов, тем более логи вообще не несут никакой полезной нагрузки, оказывающей влияние на целостность бизнес-данных. Интересны примеры с бизнес-данными. Когда же это действительно вредно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 11:51 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУА я разве без них обхожусь? Ты только недавно говорил «АПРИОРИ ОПАСНА И ВРЕДНА», скажи, ты не осёл случайно? Упёртое тупое животное. Сам сказал «опасна и вредна» и тут же даёшь заднюю. Ты реально дурак? Выдрал фразу из контекста и прикинулся идиотом? МСУПлюс, на реальных массивах данных транзакционность априори вредна и опасна. Это ж тебе не пару тыщ строк обновить. Разницу видишь между "транзакционность вредна" и "транзакционность вредна больших выборках"? Убей уже себя, глупый ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 12:23 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУ, И ещё скажи мне, как вот это твоё высказывание: МСУпредставь себе ситуацию, когда ночной джоб перелопатил 29.9К сотрудников и по каким-то причинам упал Согласуется с твоими ссылками про проблемы в многопользовательской среде, ведь как бы «ночной джоб» работает обычно с БД в одно рыло, монопольно? Ну ты чайник, я плачу... БД - это многопользователськая среда. Однорылый джоб - это такой же клиент из 100500 других клиентов этой БД. Если тупой джоб заюзает повышенный уровень изоляции транзакции, он может заблокировать ресурсы (дедлоки), из-за чего другие пользователи (и сервисы), работающие с залоченными таблицами будут отсасывать. Учи матчасть уже, клоун. hVosttЯ всё жду не дождусь от тебя реальный проблемный кейс. Ты дурак? :) Нет, честно ответь, ты идиот? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 12:28 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУТы реально дурак? Выдрал фразу из контекста и прикинулся идиотом? МСУПлюс, на реальных массивах данных транзакционность априори вредна и опасна. Это ж тебе не пару тыщ строк обновить. Разницу видишь между "транзакционность вредна" и "транзакционность вредна больших выборках"? Убей уже себя, глупый Реальные массивы данные === большие выборки? Ты случаем, не таджик? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 12:45 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУНу ты чайник, я плачу... БД - это многопользователськая среда. Однорылый джоб - это такой же клиент из 100500 других клиентов этой БД. Если тупой джоб заюзает повышенный уровень изоляции транзакции, он может заблокировать ресурсы (дедлоки), из-за чего другие пользователи (и сервисы), работающие с залоченными таблицами будут отсасывать. Учи матчасть уже, клоун. Ты же говорил про ночной джоб. Ладно, ты по ходу упорот, забываешь то, что сам сказал 5 минут назад. Тебе в психиатрию надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 12:45 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУhVosttЯ всё жду не дождусь от тебя реальный проблемный кейс. Ты дурак? :) Нет, честно ответь, ты идиот? Я не виноват, что ты не в состоянии до сих пор привести проблемный кейс. Алексей и то с ходу привёл, хотя не совсем то, что я просил, ведь изначально обсуждалась бизнес-логика и бизнес-данные, а не чистка логов. Но тоже сойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 12:49 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КПро лишние блокировки, в том числе повышающие вероятность мёртвой блокировки, выше уже написали. Наблюдал случай, один админ самовольно решил почистить таблицу с логами. Откуда ему было знать, что MSSQL выполняет команду delete from Log where EntryDate < @d в одной транзакции. Он сначала пару часов ждал, пока оно удалится. Потом ему надоело ждать, он отменил запрос. Потом все столько же ждали, пока отменится транзакция. На всё ушло часов ~6. Из-за невозможности отключения транзакций например чистка БД от старых записей превращается в мучение, хотя казалось бы... А как выкрутились из ситуации? Забили на чистку логов?Так и делаем:hVosttПро чистки логов понятно, их надо делать серией TOP-ов hVostt, тем более логи вообще не несут никакой полезной нагрузки, оказывающей влияние на целостность бизнес-данных. Интересны примеры с бизнес-данными. Когда же это действительно вредно.Не нужно баловаться с избыточностями, тогда бороться за целостность транзакциями не придётся. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 13:14 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНе нужно баловаться с избыточностями, тогда бороться за целостность транзакциями не придётся. :-)необходимость транзакций порождается далеко не всегда избыточностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 13:18 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНе нужно баловаться с избыточностями, тогда бороться за целостность транзакциями не придётся. :-) Т.е. всё зависит от требований, задач и ситуации. «Транзакции = плохо» такое же нелепое утверждение, как и «Транзакция = хорошо». Какие-то абстрактные «реальные массивы данных» о которых с упорством глупого прыщавого юнца вещает МСУ, для которых злые транзакции «априори опасна и вредна», это ровным счётом ни о чём. В транзакциях важна согласованность. Если при обработке даже сотни тысяч записей некий пакет, состоящий из сотни или тысячи записей упал с ошибкой, то во-первых, мы получим несогласованное состояние всей системы, во-вторых, падение с ошибкой может означать косяк в логике, неправильную обработку, или неправильное изначальное состояние данных, а это в свою очередь значит, что «успешно» обработанные данные уже нельзя с полной уверенностью называть «успешными». Есть реальный пример, где такая ситуация недопустима в принципе — банковская система. Но почему только там ошибки не допускаются, а где-то ещё могут допускаться, особенно в рамках крупной организации. Что это за глупость такая, типа часть сотрудников «не загрузилась»? Это что вообще? Это не нормально. Либо всё, либо ничего, если сама задача не подразумевает иное (когда на первом месте стоит задача хоть что-то обработать, не обращая внимания на ошибки). В общем, глобальные утверждения что дескать что-то там есть беспощадное зло, без контекста реальных задач , простительны лишь прыщавым студентам, у которых просто ещё нет опыта. Взрослым опытным серьёзным людям нести такую ахинею непростительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 13:50 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProАлексей КНе нужно баловаться с избыточностями, тогда бороться за целостность транзакциями не придётся. :-)необходимость транзакций порождается далеко не всегда избыточностью.Но избыточность всегда порождает необходимость транзакций. :-) Второй случай: сущность хранится в нескольких таблицах. Больше случаев не припомню. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 13:50 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КВторой случай: сущность хранится в нескольких таблицах. Больше случаев не припомню. Так это не избыточность, это нормализация. Обычно так и получается. Если сущность хранится полностью в одной таблице, это скорее всего справочник. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 13:55 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КНе нужно баловаться с избыточностями, тогда бороться за целостность транзакциями не придётся. :-) Т.е. всё зависит от требований, задач и ситуации. «Транзакции = плохо» такое же нелепое утверждение, как и «Транзакция = хорошо».Этого никто не говорил. Говорили, что транзакции нужно делать как можно короче. МСУ даже МСДН цитировал. :-) hVosttВ транзакциях важна согласованность. Если при обработке даже сотни тысяч записей некий пакет, состоящий из сотни или тысячи записей упал с ошибкойНе абстрактный "пакет", а "сущность, состоящая из тысячи записей". Действительно, это третья необходимость транзакций. Итого: 1. Избыточность. 2. Сущность хранится в нескольких таблицах. 3. Сущность хранится в нескольких записях. hVosttЕсть реальный пример, где такая ситуация недопустима в принципе — банковская система. Но почему только там ошибки не допускаются, а где-то ещё могут допускаться, особенно в рамках крупной организации. Что это за глупость такая, типа часть сотрудников «не загрузилась»? Это что вообще? Это не нормально. Либо всё, либо ничего, если сама задача не подразумевает иное (когда на первом месте стоит задача хоть что-то обработать, не обращая внимания на ошибки).Банковская система - типичный пример избыточности на почве распределённости хранения данных. Конечно там нужны транзакции, распределённые. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:04 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КВторой случай: сущность хранится в нескольких таблицах. Больше случаев не припомню. Так это не избыточность, это нормализация. Обычно так и получается. Если сущность хранится полностью в одной таблице, это скорее всего справочник.А я и не называю это избыточностью. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:04 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КЭтого никто не говорил. Говорили, что транзакции нужно делать как можно короче. МСУ даже МСДН цитировал. :-) А я в свою очередь не утверждал обратного, и с этим не спорил. Нет смысла лепить транзакции там, где они не нужны, или искать другие пути решения, если на первом место стоит производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:13 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КЭтого никто не говорил. Говорили, что транзакции нужно делать как можно короче. МСУ даже МСДН цитировал. :-) А я в свою очередь не утверждал обратного, и с этим не спорил. Нет смысла лепить транзакции там, где они не нужны, или искать другие пути решения, если на первом место стоит производительность.Однако тут ты предлагал сеанс репликации данных выполнять в одной транзакции, что не есть хорошо. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:32 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
полный пипец ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:32 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КЭтого никто не говорил. Говорили, что транзакции нужно делать как можно короче. МСУ даже МСДН цитировал. :-) А я в свою очередь не утверждал обратного, и с этим не спорил. Нет смысла лепить транзакции там, где они не нужны, или искать другие пути решения, если на первом место стоит производительность. не сдавайся производительность не отменяет транзакционность ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:33 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
это надо ж - можно значит без транзакций убить элемент справочника с сотней другой ссылок ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:34 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttРеальные массивы данные === большие выборки? Ты случаем, не таджик? Реальные массивы данных - это большие хранилища, террабайты, десятки террабайт. Это тебе не 10Gb база твоего ларька по продаже сигарет. hVosttТы же говорил про ночной джоб. Ладно, ты по ходу упорот, забываешь то, что сам сказал 5 минут назад. Тебе в психиатрию надо. Какая разница, ночной он или дневной? Ты не допускаешь, что пользователи могут работать в разных часовых поясах? hVosttЯ не виноват, что ты не в состоянии до сих пор привести проблемный кейс. Алексей и то с ходу привёл, хотя не совсем то, что я просил, ведь изначально обсуждалась бизнес-логика и бизнес-данные, а не чистка логов. Но тоже сойдёт. Тебе уже 3 человека рассказали про проблемные кейсы. Я же не виноват, что ты идиот и понималка сломана. Объяснить очевидное разжевать, макнуть тебя с головой - а тебе всё мало. Крепкий орешек ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:35 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, да пох скоко там террабайт, дело не в объеме а в АСИД ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:36 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КhVosttпропущено... А я в свою очередь не утверждал обратного, и с этим не спорил.Однако тут ты предлагал сеанс репликации данных выполнять в одной транзакции, что не есть хорошо. :-) Ппц, клиника ViPRosполный пипец +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:37 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУРеальные массивы данных - это большие хранилища, террабайты, десятки террабайт. Это тебе не 10Gb база твоего ларька по продаже сигарет. Шта? Ну давай, расскажи нам, что у тебя там ещё по твоей «фене» как называется МСУКакая разница, ночной он или дневной? Ты не допускаешь, что пользователи могут работать в разных часовых поясах? Так крутишься на сковородке, аж брызги во все стороны летят Зачем надо было говорить про « ночной джоб»? Чтоб добавить романтики? Хватит уже смешить народ МСУТебе уже 3 человека рассказали про проблемные кейсы. Я же не виноват, что ты идиот и понималка сломана. Объяснить очевидное разжевать, макнуть тебя с головой - а тебе всё мало. Крепкий орешек 2 сказали, ты лишь подкинул каких-то ссылок, которые наспех нагуглил, а кейсов так и не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 15:56 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КОднако тут ты предлагал сеанс репликации данных выполнять в одной транзакции, что не есть хорошо. :-) Почему не хорошо? Может ты пояснишь, раз МСУ тупо не в состоянии говорить разумно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 15:59 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУРеальные массивы данных - это большие хранилища, террабайты, десятки террабайт. Это тебе не 10Gb база твоего ларька по продаже сигарет. Шта? Ну давай, расскажи нам, что у тебя там ещё по твоей «фене» как называется Что непонятно в слове "реальные"? Реальные - это не детские, типа твоих, из 1 тыс строк на всю базу. Какая феня, ты о чем? hVosttМСУКакая разница, ночной он или дневной? Ты не допускаешь, что пользователи могут работать в разных часовых поясах? Так крутишься на сковородке, аж брызги во все стороны летят Зачем надо было говорить про « ночной джоб»? Чтоб добавить романтики? Хватит уже смешить народ Типичная выходка неудачника, который обосрался по самые уши. И чтобы как-то поскорее вылезти из вонючей кучу он развешивает ярлыки, что все вокруг выкручиваются и позорятся. Ты стихи читал выше? Какие выводы сделал? :) А по поводу ночного джоба не понял, чем он тебя испугал? Я тебе привел кейс, привел свои доводы, привел рекомендации от MS. Этим я доказал, что твой высер нелегитимен. Какие еще вопросы? hVosttМСУТебе уже 3 человека рассказали про проблемные кейсы. Я же не виноват, что ты идиот и понималка сломана. Объяснить очевидное разжевать, макнуть тебя с головой - а тебе всё мало. Крепкий орешек 2 сказали, ты лишь подкинул каких-то ссылок, которые наспех нагуглил, а кейсов так и не увидел. Ну побейся еще головой об стену, вдруг кейсы сами сгенерятся hVosttАлексей КОднако тут ты предлагал сеанс репликации данных выполнять в одной транзакции, что не есть хорошо. :-) Почему не хорошо? Может ты пояснишь, раз МСУ тупо не в состоянии говорить разумно? Что именно тебе кажется неразумным в моих доводах? Ты плаваешь в данной теме, причем очень сильно, причем как студент двоешник. Когда студент двоешник наезжает на учителей, орёт, разбрасывая сопли, это выглядит крайне смешно. Радуй нас ещё, хвост, пиши ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 16:13 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЧто непонятно в слове "реальные"? Реальные - это не детские, типа твоих, из 1 тыс строк на всю базу. Какая феня, ты о чем? Извини, но свою лапшу «реальную» своим лопоухим боссам в уши пихай, раз они на свою голову держат у себя такого онолитега. Цифры давай, факты, аргументы, а не свою непонятную «феню». МСУЯ тебе привел кейс, привел свои доводы, привел рекомендации от MS. Этим я доказал, что твой высер нелегитимен. Напомни мне плз, с какого года РЕКОМЕНДАЦИИ являются доказательствами? Ты мне унылого протоукра из себя не строй. Либо давай доказательства с нормальными аргументами, либо очевидно, что ты в очередной раз слился, твоё разбрасывания какашками делу не поможет. МСУНу побейся еще головой об стену, вдруг кейсы сами сгенерятся Зачем? Я спросил, умные люди ответили. Но ты видать упорно не хочешь быть в кругу разумных людей, обезьянкой быть интереснее, да? МСУЧто именно тебе кажется неразумным в моих доводах? Ты плаваешь в данной теме, причем очень сильно, причем как студент двоешник. Когда студент двоешник наезжает на учителей, орёт, разбрасывая сопли, это выглядит крайне смешно. Радуй нас ещё, хвост, пиши Плаваешь, не плаваешь, я не могу всего знать, это факт. Поэтому и уточняю, задаю вопросы. Твои дурно пахнущие какульки, не приносят пользы никому, при чём ты от этого умнее не выглядишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 16:25 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRosда пох скоко там террабайт, дело не в объеме а в АСИД ACID для МСУ аще не аргумент, вертел он его на одном месте ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 16:29 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttИзвини, но свою лапшу «реальную» своим лопоухим боссам в уши пихай, раз они на свою голову держат у себя такого онолитега. Цифры давай, факты, аргументы, а не свою непонятную «феню». Маленький, еще раз вопрос, ты понимаешь разницу между "реальными" данными и какими-нибудь "тестовыми" данными? Ты ж тестер, должно же быть понимание. Или тут тоже прокол? Какие аналитики, какие фени, какие боссы? Ты упорот? hVosttМСУЯ тебе привел кейс, привел свои доводы, привел рекомендации от MS. Этим я доказал, что твой высер нелегитимен. Напомни мне плз, с какого года РЕКОМЕНДАЦИИ являются доказательствами? Занавес. Позорнейший слив засчитан. Без комментариев hVosttМСУНу побейся еще головой об стену, вдруг кейсы сами сгенерятся Зачем? Я спросил, умные люди ответили. Но ты видать упорно не хочешь быть в кругу разумных людей, обезьянкой быть интереснее, да? Ты не спросил, спрашивают не так. Ты ляпнул глупость, тебя в очередной раз отпинали, вылили ушат помоев на голову и разъяснили концепцию. Давай называть вещи своими именами hVosttПлаваешь, не плаваешь, я не могу всего знать, это факт. Ну если не можешь знать факт, то зачем лезешь с тупыми советами? 17297928 hVosttПоэтому и уточняю, задаю вопросы. Твои дурно пахнущие какульки, не приносят пользы никому, при чём ты от этого умнее не выглядишь. Я тебя не виню в том, что ты не знаешь, как решаются такие задачи. Меня забавит факт, что ты реальное дно, но при этом упёрто лезешь что-то советовать людям на форуме. Лучше промолчи и послушай, что знающие мемберы ответят и прими более менее близкую точку зрения. Так хоть не стыдно будет потом отмываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 16:35 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КОднако тут ты предлагал сеанс репликации данных выполнять в одной транзакции, что не есть хорошо. :-) Почему не хорошо?Ну все будут ждать, пока не закончится синхронизация данных. Что в этом хорошего? А главное, ради чего? Ну пусть при сбое синхронизируются данные по половине персонала, ну и что? При следующем сеансе синхронизируется остальное. Тут максимум, в транзакции обновлять информацию об одном сотруднике. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 17:41 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУТы не спросил, спрашивают не так. А как надо? МСУНу если не можешь знать факт, то зачем лезешь с тупыми советами? 17297928 1. Ты ВСЁ знаешь? 2. Обоснуй пожалуйста свою точку зрения, почему мой совет тупой. МСУЛучше промолчи и послушай, что знающие мемберы ответят и прими более менее близкую точку зрения. Ты себя тоже к «знающим мемберам» относишь? Покажи, где ета доска почёта, где красуется твоё умное лицо? П.С. У тебя ЧСВ не просто зашкаливает, а трещит по швам. По делу, как обычно, 0, а понтов, как у мелкого хулигана со двора, считающего себя пупом земли. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 17:45 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНу все будут ждать, пока не закончится синхронизация данных. Что в этом хорошего? А главное, ради чего? Ну пусть при сбое синхронизируются данные по половине персонала, ну и что? При следующем сеансе синхронизируется остальное. Тут максимум, в транзакции обновлять информацию об одном сотруднике. Что за бред? Возьмём, например сайт Хабрахабр. Иногда он проводит профилактические работы, пересчитывает карму там, рейтинги, ещё что-то... На это время сайт недоступен, такое периодически бывает. Надо быть полоумным идиотом, чтобы выполнять синхронизацию во время активной работы пользователей. Это чистой воды ИДИОТИЗМ, и пусть хоть кто-то мне скажет, что это не так. Я такого в жизни не видел, чтобы кто-то додумался до этого. Или я не прав? И зачем вообще систему подвергать в неоткатное несогласованное состояние? Это нонсенс. Или просто понадеемся на то, что есть свежий бекап? Принципы ACID ещё никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 17:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУТы не спросил, спрашивают не так. А как надо? Уважительно, без пафоса и без слюнометания. Общаться с глупой гавкающей собакой не интересно, её сразу начинают бить ногами. hVosttМСУНу если не можешь знать факт, то зачем лезешь с тупыми советами? 17297928 1. Ты ВСЁ знаешь? 2. Обоснуй пожалуйста свою точку зрения, почему мой совет тупой. 1. Нет. 2. Я уже обосновал, и не только я. Зачем включаешь дурака? hVosttМСУЛучше промолчи и послушай, что знающие мемберы ответят и прими более менее близкую точку зрения. Ты себя тоже к «знающим мемберам» относишь? В данной теме - да. У тебя какие-то сомнения? Так выкладывай. Пока я вижу брызги слюны неотесаного неофита. hVosttПокажи, где ета доска почёта, где красуется твоё умное лицо? Мне пиар не нужен. Я пишу текст на основе своего опыта и рекомендаций вендоров. Ты пишешь на основе упёртой безтолковости и отсутствия реального опыта. Вот и вся разница. hVosttП.С. У тебя ЧСВ не просто зашкаливает, а трещит по швам. По делу, как обычно, 0, а понтов, как у мелкого хулигана со двора, считающего себя пупом земли. ЧСВ, понты и прочие твои умные словечки должны на чём-то базироваться, например на знаниях. Я готов общаться с человеком с ЧСВ, с понтами, да хоть с жопой вместо головы - но если он говорит грамотные вещи и так же грамотно приводит аргументы. На всё остальное пох. Главное у него есть моск. Общение же с тобой сводится к канализационщине по причине твоей тупизны с отсутствием элементарной логики. Дальше думай сам. Если есть чем думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 18:28 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttНадо быть полоумным идиотом, чтобы выполнять синхронизацию во время активной работы пользователей. Это чистой воды ИДИОТИЗМ, и пусть хоть кто-то мне скажет, что это не так. Я такого в жизни не видел, чтобы кто-то додумался до этого. Или я не прав? Млять, убейте уже этого идиота ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 18:29 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, Ты свои два последних высера сообщения перечитай, — где ты по делу хоть что-то сказал? Я (и не только я) уже несколько раз сказал про ACID, ты тупо (именно так, тупо) проигнорил. И кому ты там лечишь про нефитов? Ты сам в этой теме просто далдон Всё, что я пока видел от тебя, это нагугленных ссылок с MSDN с рекомендациями. Иди ещё погугли, ребёнок. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 02:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttА как выкрутились из ситуации? Забили на чистку логов?очевидно, операции, затрагивающие такие большие объемы просто делаются в цикле частями. Тут целостность транзакции не нужна. Мало того, суммарно на это уйдет в разы меньше времени, так как СУБД не потребуется делать не*$*ически огромную запись в лог транзакций, а потом ее коммитить.+1 Ораклу помнится сегмента отката может не хватить, если не делать промежуточные коммиты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 07:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRosполный пипецточно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 07:49 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУ, Ты свои два последних высера сообщения перечитай, — где ты по делу хоть что-то сказал? Мои высеры по теме - все по деле. Другое дело, что ты идиотом прикидываешься. Или им и являешься? Ну тут уже не мне судить. Облажался - обеткай. А чтобы в следующий раз не обтекать, лучше лишний раз помолчи, чем ересь всякую пороть. hVosttЯ (и не только я) уже несколько раз сказал про ACID, ты тупо (именно так, тупо) проигнорил. Транзакция - это последовательность операций, выполняемых как одна логическая единица работы. Логическая единица работы, должна обладать четырьмя свойствами, называется ACID. Что ты хотел мне рассказать про ACID? hVosttИ кому ты там лечишь про нефитов? Ты сам в этой теме просто далдон Всё, что я пока видел от тебя, это нагугленных ссылок с MSDN с рекомендациями. Иди ещё погугли, ребёнок. Жалкие конвульсии истерички, которая по голову села в бочку с навозом. Продолжай истерить, а мы посмеемся ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 09:28 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЛогическая единица работы, должна обладать четырьмя свойствами, называется ACID.Раньше да, но... С приходом огромных массивов информации и распределенных систем мы пришли к eventual consistency :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 09:44 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУМои высеры по теме - все по деле. Другое дело, что ты идиотом прикидываешься. Или им и являешься? Ну тут уже не мне судить. Облажался - обеткай. А чтобы в следующий раз не обтекать, лучше лишний раз помолчи, чем ересь всякую пороть. Ты больной маразматик. Вот о каких объёмах ты ведёшь речь? О каких задачах? «Реальные массивы данных»? Ты тупица что ли? — слыш пацанчик, ваще дохуа данных, реаааально дохуа! И где же я облажался? Ты пальцем покажи, если не балабол. Конекретную цитату, не веди себя как пустопорожняя базарная бабка. Если ты и есть такая бабка, то пофиг, неси что хочешь, я просто перестану обращать внимания на твои выпуки. МСУТранзакция - это последовательность операций, выполняемых как одна логическая единица работы. Логическая единица работы, должна обладать четырьмя свойствами, называется ACID. Что ты хотел мне рассказать про ACID? Как ты собираешься обеспечить ACID без транзакций, если транзакции по твоей теории беспощадное «априори» зло? МСУЖалкие конвульсии истерички, которая по голову села в бочку с навозом. Продолжай истерить, а мы посмеемся На что, на твои какашки? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:01 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANA, опять ты со своими NoSQL инкарнациями :) Тут речь немного не о том. Речь о массовых операциях, интеграциях, синхронизациях. Обеспечить ACID на уровне операции (пакет в виде классов) - да, обеспечить ACID на уровне всего импорта - нет. Вот о чем речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:03 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAShocker.Proпропущено... очевидно, операции, затрагивающие такие большие объемы просто делаются в цикле частями. Тут целостность транзакции не нужна. Мало того, суммарно на это уйдет в разы меньше времени, так как СУБД не потребуется делать не*$*ически огромную запись в лог транзакций, а потом ее коммитить.+1 Ораклу помнится сегмента отката может не хватить, если не делать промежуточные коммиты.В MSSQL размер лога транзакций БД тоже можно ограничить. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:06 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУМои высеры по теме - все по деле. Другое дело, что ты идиотом прикидываешься. Или им и являешься? Ну тут уже не мне судить. Облажался - обеткай. А чтобы в следующий раз не обтекать, лучше лишний раз помолчи, чем ересь всякую пороть. Ты больной маразматик. Вот о каких объёмах ты ведёшь речь? О каких задачах? «Реальные массивы данных»? Ты тупица что ли? — слыш пацанчик, ваще дохуа данных, реаааально дохуа! И где же я облажался? Ты пальцем покажи, если не балабол. Конекретную цитату, не веди себя как пустопорожняя базарная бабка. Если ты и есть такая бабка, то пофиг, неси что хочешь, я просто перестану обращать внимания на твои выпуки. О больших объемах веду речь, выше я писал более конкретно - прочти еще раз. Реальные массивы данных - да. Что тебя пугает? Я (и не только я) уже несколько раз указали, где ты не просто облажался, а обосрался с ног до головы. Вот тут 17305632 hVosttМСУТранзакция - это последовательность операций, выполняемых как одна логическая единица работы. Логическая единица работы, должна обладать четырьмя свойствами, называется ACID. Что ты хотел мне рассказать про ACID? Как ты собираешься обеспечить ACID без транзакций, если транзакции по твоей теории беспощадное «априори» зло? 1. Выше я дал код, там обеспечивается транзакционный ACID на уровне батча. Какие проблемы? 2. Где я говорил о том, что транзакции - беспощадное зло? Ты идиот? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:07 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КНу все будут ждать, пока не закончится синхронизация данных. Что в этом хорошего? А главное, ради чего? Ну пусть при сбое синхронизируются данные по половине персонала, ну и что? При следующем сеансе синхронизируется остальное. Тут максимум, в транзакции обновлять информацию об одном сотруднике. Что за бред? Возьмём, например сайт Хабрахабр. Иногда он проводит профилактические работы, пересчитывает карму там, рейтинги, ещё что-то... На это время сайт недоступен, такое периодически бывает. Надо быть полоумным идиотом, чтобы выполнять синхронизацию во время активной работы пользователей. Это чистой воды ИДИОТИЗМ, и пусть хоть кто-то мне скажет, что это не так. Я такого в жизни не видел, чтобы кто-то додумался до этого. Или я не прав?Все должны равняться на Хабр? hVosttИ зачем вообще систему подвергать в неоткатное несогласованное состояние? Это нонсенс. Или просто понадеемся на то, что есть свежий бекап? Принципы ACID ещё никто не отменял.Согласование должно быть в пределах сущности. В обсуждаемом случае эта сущность "сотрудник". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:10 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУskyANA, опять ты со своими NoSQL инкарнациями :)Да при чём тут NoSQL. Я просто намекнул, что не плохо бы уточнять о каком уровне операции идёт речь. :) МСУТут речь немного не о том. Речь о массовых операциях, интеграциях, синхронизациях. Обеспечить ACID на уровне операции (пакет в виде классов) - да, обеспечить ACID на уровне всего импорта - нет. Вот о чем речь.Реализовать импорт милииона чего-то там как атомарную операцию - это конечно глупо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:10 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... +1 Ораклу помнится сегмента отката может не хватить, если не делать промежуточные коммиты.В MSSQL размер лога транзакций БД тоже можно ограничить. :-)И? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 10:12 |
|
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 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ, А за подробно описанный процесс конечно спасибо, слегка неожиданно, вот можешь же! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:39 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttДавай так, вот ты привёл пример на EF с группами объектов. Импорт таким способом сколько выполняется по времени? Примерно, ну хотя бы приблизительно? Вот тут я приводил тебе типовой расчет 17314369 , я не понимаю, ты реально жопой читаешь текст? hVosttИ второй вопрос, работает ли кто-то ещё с БД в то время, когда запускается этот джоб? Скажешь? Я тогда отвечу, почему такое решение плохое. Конечно работает. Я выше писал про различные часовые пояса 17310432 , ты каким местом читаешь? Так же с этой БД могут работать другие джобы, ETL под data warehouse и так далее. Работа кипит всегда. hVosttМСУ, А за подробно описанный процесс конечно спасибо, слегка неожиданно, вот можешь же! Тебе этот процесс уже битый день люди втирают, так что не надо мне тут заслуги приписывать. Вина только в тебе ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Вот тут 17310383 я выкладывал юнит тест реального джоба, который процессит сотрудников (это вин сервис, источником является odata сервис аксапты, приемником - отдельная БД под различное ПО). Как видишь отработка заняла 181 минуту, это примерно навскидку 0.4 секунды на одного сотрудника. Но это тестовая БД, к слову. На боевой БД сотрудников побольше, но и мощностя иные. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:50 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЗачем рубить весь процессинг из-за одной пакетной ошибки? Так хоть 95% сотрудников распределишь. Ну если такое у вас (или у вашего заказчика) является нормальным, тогда твоё решение ваще гуд! Но у наших заказчиков требования к надёжности весьма высокие, а у нас требования к нашим разработкам очень высокие. Недопустимы такие косяки, когда система в какой-то момент времени находится в неконсистентном состоянии. Если импорт, то либо загрузилось всё без ошибок, либо загрузка с косяками не нужна вообще, ни в каком виде, ни 80%, ни 99%. Надо разбираться в чём ошибка, исправлять и добиваться 100% успешной транзакции. Что за дебильный типично колхозно-крестьянский принцип: запихнуть что хоть как-то пихается, а что не пихается запинать ногами, да и пох. Не знаю, если только ты там не для колхоза свои решения пилишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:55 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУВот тут 17310383 я выкладывал юнит тест реального джоба, который процессит сотрудников (это вин сервис, источником является odata сервис аксапты, приемником - отдельная БД под различное ПО). Как видишь отработка заняла 181 минуту, это примерно навскидку 0.4 секунды на одного сотрудника. Но это тестовая БД, к слову. На боевой БД сотрудников побольше, но и мощностя иные. 181мин!!!!!! ужас какой то ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
И еще, касательно оптимизации. Джобы выполняются асинхронно, разумеется. Если нужно оптимизировать процессинг, всегда можно его разнести на n джобов, что ускорит отработку. Либо как вариант процессить в n потоках. Как по мне, больше нравится второй вариант, он чище и грамотнее. Но подойдет и ленивый первый вариант, где нужно просто разделить выборки по какому-то искуственному критерию, как то даты, дни недели дат, чётность ID, группы, части top/skip и так далее. Оптимизация бесконечна :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:58 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRos181мин!!!!!! ужас какой то Да, вот это я понимаю, «РЕАЛЬНЫЙ МАССИВ ДАННЫХ»! Даже не так. НЕ РЕАЛЬНЫЙ! Всякое гугло сосёт причмокивая ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 15:59 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУЗачем рубить весь процессинг из-за одной пакетной ошибки? Так хоть 95% сотрудников распределишь. Ну если такое у вас (или у вашего заказчика) является нормальным, тогда твоё решение ваще гуд! Объясни мне, почему такое решение может быть ненормальным? Вот Сахават что-то булькал-булькал и слился, так и не смог объяснить, накойхер (с) ему всё или ничего. hVosttНо у наших заказчиков требования к надёжности весьма высокие, а у нас требования к нашим разработкам очень высокие. У так тоже требования к надежности высокие, где ты тут увидел какие-то послабления? hVosttНедопустимы такие косяки, когда система в какой-то момент времени находится в неконсистентном состоянии. У меня тоже самое, неконсистентное состояние исключено. hVosttЕсли импорт, то либо загрузилось всё без ошибок, либо загрузка с косяками не нужна вообще, ни в каком виде, ни 80%, ни 99%. Надо разбираться в чём ошибка, исправлять и добиваться 100% успешной транзакции. Ситуации разные бывают, есть такие предметные области, в которой нужно именно 100% импорта. Например, рассмотрим загрузку месячных продаж. Бизнесу не нужно 90% продаж за день 01.02.2015, поэтому если именно 01.02 оказался "битым" днем, такая информация не играет роли. Но зачем отказывать всесь импорт, если 02.02.2015 полностью 100% прогрузился? О том и речь, что с неконсистентное бывает иногда неконсистентным, такой вот каламбур. hVosttЧто за дебильный типично колхозно-крестьянский принцип: запихнуть что хоть как-то пихается, а что не пихается запинать ногами, да и пох. Не знаю, если только ты там не для колхоза свои решения пилишь. Выше я объяснил. Люди работают с продажами за 02.02.2012, которые 100% прогрузились. Зачем их лишать этой возможности? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:07 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttViPRos181мин!!!!!! ужас какой то Да, вот это я понимаю, «РЕАЛЬНЫЙ МАССИВ ДАННЫХ»! Даже не так. НЕ РЕАЛЬНЫЙ! Всякое гугло сосёт причмокивая 3 часа - это долго? Ребята, шли бы вы кур пасти, серьёзно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:09 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Ситуации разные бывают, есть такие предметные области, в которых нужно именно 100% импорта. Например, рассмотрим загрузку месячных продаж. Бизнесу не нужно 90% продаж за день 01.02.2015, поэтому если именно 01.02 оказался "битым" днем, такая информация не играет роли. Но зачем откатывать весь импорт, если 02.02.2015 полностью 100% прогрузился? О том и речь, что неконсистентное бывает иногда консистентным, такой вот каламбур. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:11 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУhVosttпропущено... Да, вот это я понимаю, «РЕАЛЬНЫЙ МАССИВ ДАННЫХ»! Даже не так. НЕ РЕАЛЬНЫЙ! Всякое гугло сосёт причмокивая 3 часа - это долго? Ребята, шли бы вы кур пасти, серьёзно Наоборот. Тебе просто надо наверное табличку Sarcasm показывать ))) По поводу твоего решения сейчас отвечу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:12 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAВот ведь странное желание импортировать горячие предложения от отелей как можно быстрее :) hVostt, ну как обычно всё от задачи ведь зависит :) При отгрузке нефти тоже никто ночи не ждёт. Я всё понимаю, задачи разные, решения тоже разные. Горячие тур. предложения и, скажем, месячный отчёт о зарплате сотрудникам, вещи таки разные, не находишь?Хм, вообще не удачный пример. Ежемесячный отчёт. Почему синхронизация выпадает именно на этот день месяца, когда формируется отчёт? Ну и злющий бухгалтер и к тебе придёт, когда у него отчёт будет не верный, а ты ему скажешь, что свежие данные оказывается не залиты и остатки не посчитаны. И не подобрее от того, что узнает, что ему теперь ещё и ждать когда всё это произойдёт в одной транзакции, которая ещё и упадёт. Согласись, что будет гуманнее, если он будет видеть прогресс и в случае чего сможет возобновить процесс с нужного ему места :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:13 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAСогласись, что будет гуманнее, если он будет видеть прогресс и в случае чего сможет возобновить процесс с нужного ему места :)А при желании сформировать отчёт по готовому уже отделу, не дожидаясь того, как остальные обработаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:15 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУОбъясни мне, почему такое решение может быть ненормальным? Вот Сахават что-то булькал-булькал и слился, так и не смог объяснить, накойхер (с) ему всё или ничего. Ну давай, по твоей информации: примерный срок выполнения: 3 часа в это время с базой данных активно взаимодействуют другие системы и пользователи ОК Заценим на временной линии: Код: c# 1. 2. 3. 4. 5.
В 15:40 в базе появилась актуальная инфа о Пете, в 17:38 о Васе. Т.е. инфа на момент начала загрузки была одна, а вот актуальность данных меняется с течением времени, и с 15:00 до 18:00 база данных вообще непонятно в каком состоянии, и как можно с этим работать, не понимаю? Это что нормально? Т.е. активные пользователи получают не просто не актуальную информацию (когда данные ещё не загрузились), а вообще непонятно что. Совершенно очевидно, что сводными отчётами в процессе загрузки можно только зад подтереть. Если бы обеспечивалась транзакционность, то хотябы состояние базы было бы актуально на определённый момент (до загрузки или после), а не черти что. В чём великий смысл этого идиотизма, не понимаю. С другой стороны такое решение можно было бы ещё принять, если бы оно применялось по регламенту или применялись другие способы обеспечивания консистентности данных, раз уж ты так упираешься против транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:33 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
ViPRosМСУ, не ляля отчет о численности требует всехДелай отчёт по численности на той БД, где эти объекты хранятся. Репликация - зло! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:36 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAА при желании сформировать отчёт по готовому уже отделу, не дожидаясь того, как остальные обработаются. Какие-то странные обходные манёвры, так и не понятно ради чего эти пляски с бубном. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:37 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУhVosttпропущено... Да, вот это я понимаю, «РЕАЛЬНЫЙ МАССИВ ДАННЫХ»! Даже не так. НЕ РЕАЛЬНЫЙ! Всякое гугло сосёт причмокивая 3 часа - это долго? Ребята, шли бы вы кур пасти, серьёзно мусь, покажи другие весчи, посмеемся немного, а то работа надоела совсем ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:38 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAЕжемесячный отчёт. Почему синхронизация выпадает именно на этот день месяца, когда формируется отчёт? Потому что сказано из условий МСУ, с БД работают во время импорта данных со всего земного шарика. Так что такая вероятность в таких условиях не исключена. Я понимаю, блокировки это неприятно, и с ними надо бороться, но нарушение единой целостности и актуальности это гораздо больший косяк. Не вижу причин на 30К записей не использовать транзакцию. Если записей миллионы, то нужны другие подходы и регламенты. Но простая пакетная загрузка во время активной работы пользователей тоже не катит нифига! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:40 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttТ.е. инфа на момент начала загрузки была одна, а вот актуальность данных меняется с течением времени, и с 15:00 до 18:00 база данных вообще непонятно в каком состоянии, и как можно с этим работать, не понимаю?У "сотрудник" есть поле "дата/время синхронизации". Вполне понятно в каком состоянии. hVosttЭто что нормально? Т.е. активные пользователи получают не просто не актуальную информацию (когда данные ещё не загрузились), а вообще непонятно что. Совершенно очевидно, что сводными отчётами в процессе загрузки можно только зад подтереть. Если бы обеспечивалась транзакционность, то хотябы состояние базы было бы актуально на определённый момент (до загрузки или после), а не черти что. В чём великий смысл этого идиотизма, не понимаю. С другой стороны такое решение можно было бы ещё принять, если бы оно применялось по регламенту или применялись другие способы обеспечивания консистентности данных, раз уж ты так упираешься против транзакций.Все эти проблемы решаются отказом от репликации. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:41 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAИ не подобрее от того, что узнает, что ему теперь ещё и ждать когда всё это произойдёт в одной транзакции, которая ещё и упадёт. О... о задержке он узнает сразу, так как это блокировка. Это конечно проблема. Но ещё большая проблема, если отчёт сдан, подписан, а он писец вообще ни о чём. ВОни будет не только от бухгалтера, но и от руководства, а МСУ будет им рекомендациями от майкрософта тыкать в нос ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAА при желании сформировать отчёт по готовому уже отделу, не дожидаясь того, как остальные обработаются. Какие-то странные обходные манёвры, так и не понятно ради чего эти пляски с бубном.Обходные манёвры чего, незапланированного выходного у бухгалтера? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAСогласись, что будет гуманнее, если он будет видеть прогресс и в случае чего сможет возобновить процесс с нужного ему места :) Самое гуманное, это обеспечить неблокирующую транзакционность, а не прыгать в припляску с бубном ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAИ не подобрее от того, что узнает, что ему теперь ещё и ждать когда всё это произойдёт в одной транзакции, которая ещё и упадёт. О... о задержке он узнает сразу, так как это блокировка. Это конечно проблема. Но ещё большая проблема, если отчёт сдан, подписан, а он писец вообще ни о чём. ВОни будет не только от бухгалтера, но и от руководства, а МСУ будет им рекомендациями от майкрософта тыкать в нос Ну говорил же, отключить некоторые отчёты на время синхронизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:43 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAСогласись, что будет гуманнее, если он будет видеть прогресс и в случае чего сможет возобновить процесс с нужного ему места :) Самое гуманное, это обеспечить неблокирующую транзакционность, а не прыгать в припляску с бубном )Хм, а я о чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:43 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAОбходные манёвры чего, незапланированного выходного у бухгалтера? :) А в банковской системе, где обеспечение транзакций превыше всего, конечно вообще домой никогда не ходят. Спят прям на рабочем месте. И едят там же. И детей делают там. Там же повсюду транзакции, прям настоящий транзакционный АД ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:44 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAХм, а я о чём? Ну так и я о чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:45 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAОбходные манёвры чего, незапланированного выходного у бухгалтера? :) А в банковской системе, где обеспечение транзакций превыше всего, конечно вообще домой никогда не ходят. Спят прям на рабочем месте. И едят там же. И детей делают там. Там же повсюду транзакции, прям настоящий транзакционный АД Ты походу никогда с банковскими системами не работал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:45 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КНу говорил же, отключить некоторые отчёты на время синхронизации. Ну так это типа и есть уже какая-то блокировка. Пускай не всей базы, но отчётов. Уже не айс ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAТы походу никогда с банковскими системами не работал :) Тебе похоже тоже нужна табличка Sarcasm Ж) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:46 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAХм, а я о чём? Ну так и я о чём.Фиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:47 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttАлексей КНу говорил же, отключить некоторые отчёты на время синхронизации. Ну так это типа и есть уже какая-то блокировка. Пускай не всей базы, но отчётов. Уже не айс )Только пары отчётов. Главное, чтобы работа оперативных сотрудников не была нарушена. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:47 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAТы походу никогда с банковскими системами не работал :) Тебе похоже тоже нужна табличка Sarcasm Ж)Я могу без сарказма привести пример из практики интеграции с банковскими системами. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:48 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КУ "сотрудник" есть поле "дата/время синхронизации". Вполне понятно в каком состоянии. Ну вот Васю и Петю повысили в одно время, а когда эти оба притопали на новое рабочее место, пустили только Васю, Петя тёрся в коридоре пока не обновились его данные ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:48 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :) Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:50 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAЯ могу без сарказма привести пример из практики интеграции с банковскими системами. Приведи плз. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:50 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :) Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:51 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
Алексей КТолько пары отчётов. Главное, чтобы работа оперативных сотрудников не была нарушена. Других способов совсем нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:52 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :) Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно.С фигали это безчеловечно-то? Безчеловечно - это когда она написана так, что делать что-либо в системе невозможно, пока она идёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:55 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttskyANAЯ могу без сарказма привести пример из практики интеграции с банковскими системами. Приведи плз.Ок, чуть позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:56 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
skyANAС фигали это безчеловечно-то? Безчеловечно - это когда она написана так, что делать что-либо в системе невозможно, пока она идёт. И это тоже бесчеловечно, не спорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 16:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttТ.е. инфа на момент начала загрузки была одна, а вот актуальность данных меняется с течением времени, и с 15:00 до 18:00 база данных вообще непонятно в каком состоянии, и как можно с этим работать, не понимаю? Это что нормально? Твою неопытность видно за версту :) Процессинг, ETL, DWH, репликация и иже с ними - априори не могут быть актуальными относительно источника данных. Всегда есть какая временная дельта, разрыв во времени. Это нормально. hVosttТ.е. активные пользователи получают не просто не актуальную информацию (когда данные ещё не загрузились), а вообще непонятно что. Совершенно очевидно, что сводными отчётами в процессе загрузки можно только зад подтереть. Если бы обеспечивалась транзакционность, то хотябы состояние базы было бы актуально на определённый момент (до загрузки или после), а не черти что. В чём великий смысл этого идиотизма, не понимаю. Работал когда-нибудь с OLAP DWH? Процессинг кубов, мер, измерений всегда трудозатратная по времени операция, временное расхождение актуальных данных с боевой БД достигает от 1 дня и выше. Это нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 17:02 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУТвою неопытность видно за версту :) Процессинг, ETL, DWH, репликация и иже с ними - априори не могут быть актуальными относительно источника данных. Всегда есть какая временная дельта, разрыв во времени. Это нормально. Да не про временную дельту идёт речь. То, что для загрузки требуется время, это понятно. Речь идёт об консистентности. Короче, неблокирующую транзакцию как обеспечить знаешь или нет, скажи мне, опытный ты наш. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 17:15 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУРаботал когда-нибудь с OLAP DWH? Процессинг кубов, мер, измерений всегда трудозатратная по времени операция, временное расхождение актуальных данных с боевой БД достигает от 1 дня и выше. Это нормально. Немного, но да, работал. Ещё раз повторяю, проблема не в актуальности, а в её нарушении. Пусть данные будут актуальны за вчера, но целостны. Разрывы не уместны. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 17:17 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttДа не про временную дельту идёт речь. То, что для загрузки требуется время, это понятно. Речь идёт об консистентности. Короче, неблокирующую транзакцию как обеспечить знаешь или нет, скажи мне, опытный ты наш. 1. "Консистентности" всего процессинга? :) Такого не бывает, это сказки. А от консистентности батча (пакета, группы, экземпляра) - всегда вэлкам. 2. Что такое "неблокирующая транзакция"? Опять жжешь напалмом? hVosttМСУРаботал когда-нибудь с OLAP DWH? Процессинг кубов, мер, измерений всегда трудозатратная по времени операция, временное расхождение актуальных данных с боевой БД достигает от 1 дня и выше. Это нормально. Немного, но да, работал. Ещё раз повторяю, проблема не в актуальности, а в её нарушении. Пусть данные будут актуальны за вчера, но целостны. Разрывы не уместны. Если ты под "данными" за вчера понимаешь весь процессинг, то я тебе уже 100 раз сказал, что это глупость. Объясняю 101 раз. 1. Процессинг "данных за вчера" обвалился на 99% выполненной работе. 2. Сегодня ты хочешь получить "данные за вчера", а их там нет. Что делать? 3. Одному пользователю нужен только 1% информации из этих 99%, другому нужно 5% из 99%, третьему - 10% из 99%. Зачем их лишать этих данных? 4. Образно говоря, в моём случае 80% сотрудников будут работать в штатном режиме и только 20% будут испытывать трудности, т.к. 1% невыполненной работы у тебя завалился. В твоём случае 100% работников будут сосать писю. 5. Профиты? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 17:54 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУ1. "Консистентности" всего процессинга? :) Такого не бывает, это сказки. А от консистентности батча (пакета, группы, экземпляра) - всегда вэлкам. Ну почему не бывает, просто никто не говорит, что это просто. В зависимости от задачи можно разработать различные сценарии для достижения этого результата. Или будешь утверждать, что это задача абсолютно не выполнимая? МСУ2. Что такое "неблокирующая транзакция"? Опять жжешь напалмом? Это значит, что существует два состояния: до загрузки/обработки/синхронизации данных и после, а не где-то между. При больших объёмах использование транзакции базы данных приносит много боли пользователям ради достижения этой цели. И ты хочешь сказать, что по-другому нельзя? Либо блокирующие страдания, либо батчи? МСУ1. Процессинг "данных за вчера" обвалился на 99% выполненной работе. Да, обвалился по причине неизвестной заранее ошибки, потому что иначе ситуация была бы правильно обработана, и ошибки бы не случилось. Раз имеется такая ошибка, значит и всей логике загрузки доверять как-то сомнительно, это надо чинить. Лучше пару раз поймать и починить, чем постоянно ловить «недосказанность» + постоянные периоды времени в полу-недоактуальном половинчатом хер пойми каком недосостоянии. МСУ2. Сегодня ты хочешь получить "данные за вчера", а их там нет. Что делать? Ну я хочу получить данные за вчера, а не что-то-за-вчера-а-что-то-за-позавчера, полусостояние какое-то. Особенно если требуется сводные цифры, с учётом «до копья». МСУ4. Образно говоря, в моём случае 80% сотрудников будут работать в штатном режиме и только 20% будут испытывать трудности, т.к. 1% невыполненной работы у тебя завалился. В твоём случае 100% работников будут сосать писю. Как раз наоборот. В штатном режиме должно всё работать и давать 100% результат. Если что-то упало, значит косяк в логике, значит нафиг такая загрузка хоть в каком процентном эквиваленте нужна. Надо чинить. Или, если система не какая-нибудь банковская, то пох? МСУ5. Профиты? Ну, если постепенная побатчевая загрузка вообще никому не мешает, не портит и не влияет никоим образом ни на какие отчёты, ни с чем и ни с кем не конфликтует, всем юзерам целостность данных по барабану, если это заранее известно, что не надо строить иллюзий на 100% уверенность в актуальной инфе, пусть загружается хоть сколько-нибудь. То да, в твоём решении имеется чистый профит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 18:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttМСУ1. "Консистентности" всего процессинга? :) Такого не бывает, это сказки. А от консистентности батча (пакета, группы, экземпляра) - всегда вэлкам. Ну почему не бывает, просто никто не говорит, что это просто. В зависимости от задачи можно разработать различные сценарии для достижения этого результата. Или будешь утверждать, что это задача абсолютно не выполнимая? Речь не о простоте или сложности, речь о бывает или не бывает. Сценарий просессинга всегда прост - процессить. В процессинге единичного экземпляра или группы интереса никакого нет, процессят всегда набор экземпляров или групп. Оборачивать процессинг экземпляров или групп в ACID - смертоубийственная затея, о которой тебе тут все тылдычат. hVosttМСУ2. Что такое "неблокирующая транзакция"? Опять жжешь напалмом? Это значит, что существует два состояния: до загрузки/обработки/синхронизации данных и после, а не где-то между. При больших объёмах использование транзакции базы данных приносит много боли пользователям ради достижения этой цели. И ты хочешь сказать, что по-другому нельзя? Либо блокирующие страдания, либо батчи? Я тебе выше уже сказал, что оборачивать процессинг в ACID - это как упаковать столичное Киевское шоссе в презерватив. Лопнет или не лопнет. А зачем? А фиг его знает. Так хвост захотел. hVosttМСУ1. Процессинг "данных за вчера" обвалился на 99% выполненной работе. Да, обвалился по причине неизвестной заранее ошибки, потому что иначе ситуация была бы правильно обработана, и ошибки бы не случилось. Раз имеется такая ошибка, значит и всей логике загрузки доверять как-то сомнительно, это надо чинить. Лучше пару раз поймать и починить, чем постоянно ловить «недосказанность» + постоянные периоды времени в полу-недоактуальном половинчатом хер пойми каком недосостоянии. Да причем тут логика? Обвалился процессинг по причине того, что сервер ушел в ребут, нештатная ситуация у DBA и отвалилась база, закончилось место, уборщица жопой задела витую пару, затопило серверную, ураган, смерч, цунами, пьяный админ попутал, террористы, проводка погорела, попёрло гавно из санузла и давлением вдавило каки в стойку, ... Ещё? hVosttМСУ2. Сегодня ты хочешь получить "данные за вчера", а их там нет. Что делать? Ну я хочу получить данные за вчера, а не что-то-за-вчера-а-что-то-за-позавчера, полусостояние какое-то. Особенно если требуется сводные цифры, с учётом «до копья». Сводные цифры сами по себе никому не нужны. Сводные цифры всегда в разрезе чего-то (период, тип, операция и так далее). Это называется измерением, мерой. Кто-то мерит одной мерой, кто-то другой. Зачем лишать пользователей 100% мер? Улавливаешь суть? Представь ситуацию, в горводе произошла авария и пропала холодная вода. А тебе за это отключили свет, газ и антенну. Справедливо? Ты начинаешь писать жалобы, а тебе в ответ - "раз имеется такая ошибка, значит и всей логике жилобеспечения доверять как-то сомнительно, это надо чинить". Занавес. hVosttМСУ4. Образно говоря, в моём случае 80% сотрудников будут работать в штатном режиме и только 20% будут испытывать трудности, т.к. 1% невыполненной работы у тебя завалился. В твоём случае 100% работников будут сосать писю. Как раз наоборот. В штатном режиме должно всё работать и давать 100% результат. Если что-то упало, значит косяк в логике, значит нафиг такая загрузка хоть в каком процентном эквиваленте нужна. Надо чинить. Или, если система не какая-нибудь банковская, то пох? Никогда никто не даст таких гарантий, что всегда будет штатная ситуация и всё 100% отработает. Ты в космосе что ли? Я выше сказал, упало - это обязательно косяк в логике. Осознай это. hVosttМСУ5. Профиты? Ну, если постепенная побатчевая загрузка вообще никому не мешает, не портит и не влияет никоим образом ни на какие отчёты, ни с чем и ни с кем не конфликтует, всем юзерам целостность данных по барабану, если это заранее известно, что не надо строить иллюзий на 100% уверенность в актуальной инфе, пусть загружается хоть сколько-нибудь. То да, в твоём решении имеется чистый профит. В моём решении - единственно верный вариант. Других вариантов быть не может. Абсолютно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 20:52 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
[quot hVostt]МСУДа не про временную дельту идёт речь. То, что для загрузки требуется время, это понятно. Речь идёт об консистентности. 500 человек ходят по области и городу, набивают заказы в свои терминалы. Потом передают в офис. И вдруг у одного чего-то не заладилось. ЧУ!! ALARM! Система мгновенно откатывает состояние рабочего дня на 00.00.01? Ведь импорт всех заказов не прошел на 100% - всем покинуть корабль? Или весь текущий импорт она метит хеш-тегами #"несчастливая звезда" #"всё пошло не так" и очищает результаты его работы? Нет, система "засосет" столько, сколько сможет. Пометит то, что прочитала, а при следующей загрузке прожует то, что осталось. И если кусок случился совсем уж непрожеванным - то по итогам операционного дня в систему не попадет ОДИН заказ из 10 000. Можно сколько угодно оттопыривать пальчик и расшифровывать ACID задом наперед, но попробуйте ответсвенному/заинтересованному за продажи объяснить, что отгрузки за день не будет, потому что данные, видите ли - НЕ КОНСИСТЕНТНЫ...!!! Отрезвление придет очень быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 23:34 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
А уж в таких операциях как импорт/репликация вообще понятие консистентность применимо с БОЛЬШОЙ натяжкой, так как само содержание этих операций нифига не детерминировано, а в зависимости от внешних факторов может быть абсолютно разным. А вот такая БЕ, как сотрудник, заказ - любой объект доменной модели должен быть непротиворечив. И именно эта единица - будет атомарной единицей обмена. Какой-то странный, чисто IT-шный подход. В систему ломятся 10 000 заказов, но мы их не пустим, потому как там где-то есть паршивая овца. Сколько будет искать? Пока не найдем. И вот, за минуту до конца рабочего дня, IT-шники грузят заказы в базу. Довольные утирают пот и недоумевают, почему вместо грамоты - их лишают премии/указывают на дверь/пускают по кругу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 23:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
невежество всегда воинственна ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 01:42 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЯ выше сказал, упало - это не обязательно косяк в логике. Осознай это. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 09:38 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУРечь не о простоте или сложности, речь о бывает или не бывает. Сценарий просессинга всегда прост - процессить. В процессинге единичного экземпляра или группы интереса никакого нет, процессят всегда набор экземпляров или групп. Оборачивать процессинг экземпляров или групп в ACID - смертоубийственная затея, о которой тебе тут все тылдычат. Речь идёт именно о простоте или сложности. Сценарий топорного процессинга это всего лишь результат банальной лени разработчика, который не удосужился расчёхлить свои извилины и подумать. Например, вернёмся к твоему кейсу синхронизации 30К сотрудников. Учитывая, что синхронизация происходит периодически, наверняка среди 30К записей за короткий период реальных изменений реально меньше, чем 30К. Значит можно сначала определить весь объём этих изменений и выполнить их в рамках транзакции, это будет достаточно быстро, чтобы никто не испытывал проблем. Решение конечно же будет сложнее, чем тот кусок кода, что ты привёл, который ТУПО прогоняет один и тот же алгоритм обработки по всем записям. Из реального опыта. Лет 5 назад, работая в большой организации проводил рефакторинг периодического импорта данных учёта материальных запасов из R/3 в другую систему на базе Oracle. До рефакторинга процедура отрабатывала в течении 5-8 часов, запускалась ночью и имела как раз такую проблему, о которой я тебе талдычил: иногда выпадали пакеты, что составляло актуальность загрузки на уровне 98-99%. Ты говоришь — да это фигня, подумаешь, ничего 100% не бывает, а в организации с этим испытывали проблемы. Решение импорта было очень похоже на твой код. Рефакторинг заключался в том, чтобы загрузить данные в служебные таблицы, никак не участвующие в бизнес-логике. Затем определить характер изменений. Затем в единой транзакции осуществить реальный импорт. Время импорта сократилось с 5-8 часов до 15 минут в среднем (в зависимости от объёма изменений). При чём ошибочные записи оставались в служебных таблицах и могли быть доимпортированы, после исправления ошибок в данных. Решение всех устроило и работает до сих пор по моим сведениям. Так что не лечи меня, милый товарищ на счёт невозможности и единственно правильного во всём мире решения этой задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 10:57 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУЯ тебе выше уже сказал, что оборачивать процессинг в ACID - это как упаковать столичное Киевское шоссе в презерватив. Лопнет или не лопнет. А зачем? А фиг его знает. Так хвост захотел. Не уместное сравнение. Ты сравниваешь биллинг с единым импортом. Другими словами, ты сравниваешь поток машин на шоссе, с поездом, с которого не слезет ни один пассажир до полной остановки всего состава. Ты же предлагаешь, как только первый вагон оказался в пределах досягаемости платформы сталкивать пассажиров на перрон, чтобы быстрее типа разгрузить состав ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 11:03 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
МСУДа причем тут логика? Обвалился процессинг по причине того, что сервер ушел в ребут, нештатная ситуация у DBA и отвалилась база, закончилось место, уборщица жопой задела витую пару, затопило серверную, ураган, смерч, цунами, пьяный админ попутал, террористы, проводка погорела, попёрло гавно из санузла и давлением вдавило каки в стойку, ... Ещё? Тем более. Пол процессинга прошло, и тут произошло что-то из описанного тобой. В итоге в базе данных только половина актуализированной информации. Зипись чо. МСУСводные цифры сами по себе никому не нужны. Сводные цифры всегда в разрезе чего-то (период, тип, операция и так далее). Это называется измерением, мерой. Кто-то мерит одной мерой, кто-то другой. Зачем лишать пользователей 100% мер? Улавливаешь суть? Представь ситуацию, в горводе произошла авария и пропала холодная вода. А тебе за это отключили свет, газ и антенну. Справедливо? Ты начинаешь писать жалобы, а тебе в ответ - "раз имеется такая ошибка, значит и всей логике жилобеспечения доверять как-то сомнительно, это надо чинить". Занавес. Поэтому я тебе и говорил, что решение будет сложнее, чем представленное тобой, чтобы учитывать всё, нагрузку, требования, целостность, защищённость, возможность параллельного доступа, единую актуализацию... и не отключать свет, если пропала холодная вода. МСУНикогда никто не даст таких гарантий, что всегда будет штатная ситуация и всё 100% отработает. Ты в космосе что ли? Я выше сказал, упало - это обязательно косяк в логике. Осознай это. Гарантии как раз таки обычно имеются. Как имеются и риски. Если тебе поставили задачу, а ты развёл руками «ну так нельзя...» и тычешь в нос чужими рекомендациям, то просто найдут другого исполнителя, способного пошевелить мозгами и решить задачу, а не ипать мозг. МСУВ моём решении - единственно верный вариант. Других вариантов быть не может. Абсолютно. В твоём решении возможно, всех деталей твоей задачи я не знаю, возможно именно такое решение там всех устраивает. Но это не единственно верный вариант. И другие варианты есть. Всегда есть. Ты напоминаешь мне дядю Билли, который орал 640Кб хватит всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 11:09 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttРечь идёт именно о простоте или сложности. Сценарий топорного процессинга это всего лишь результат банальной лени разработчика, который не удосужился расчёхлить свои извилины и подумать. По-моему, тут у кого-то другого проблемы с извилинами. Почему? Потому что он полный ноль в базах данных, репликациях, синхронизациях, фантомности данных, изоляциях, ETL, BI и так далее. Вот меня это и веселит, ты дуб дубом по теме, но несешь каку-то чушь про лень программиста. hVosttНапример, вернёмся к твоему кейсу синхронизации 30К сотрудников. Учитывая, что синхронизация происходит периодически, наверняка среди 30К записей за короткий период реальных изменений реально меньше, чем 30К. Значит можно сначала определить весь объём этих изменений и выполнить их в рамках транзакции, это будет достаточно быстро, чтобы никто не испытывал проблем. Решение конечно же будет сложнее, чем тот кусок кода, что ты привёл, который ТУПО прогоняет один и тот же алгоритм обработки по всем записям. Правильное замечание. Но это повлечет за собой доработку системы источника, что не всегда вписывается в сроки и приоритеты. 30К + 3 часа на процессинг - это не много, проще никого не напрягать и взять весь набор данных с источника. В любом случае, представь себе ситуацию, когда эти 30К - именно количество сотрудников, которых нужно отпроцессить. Либо пусть это будут продажи за месяц, количество экземпляров 100М. Включи абстракцию. Количество данных может быть и больше. Это не играет никакой роли. Главное одно - нужно отпроцессить много данных. hVosttРефакторинг заключался в том, чтобы загрузить данные в служебные таблицы, никак не участвующие в бизнес-логике. Затем определить характер изменений. Затем в единой транзакции осуществить реальный импорт. Время импорта сократилось с 5-8 часов до 15 минут в среднем (в зависимости от объёма изменений). При чём ошибочные записи оставались в служебных таблицах и могли быть доимпортированы, после исправления ошибок в данных. Решение всех устроило и работает до сих пор по моим сведениям. Это не рефакторинг, это оптимизация. Не путай теплое с мягким. Оптимизация нужна тогда, когда текущее положение дел становится неприемлемым. Это нормальный процесс. Изначально и заранее никто ничего не отпимизирует. На рельсы ставится готовое решение, которое удовлетворяет требованиям. Так что пример немного не в кассу. hVosttТак что не лечи меня, милый товарищ на счёт невозможности и единственно правильного во всём мире решения этой задачи. Включи голову уже. Твоя тупость безгранична. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 12:12 |
|
EF: Как вы делаете пакетные операции?
|
|||
---|---|---|---|
#18+
hVosttТем более. Пол процессинга прошло, и тут произошло что-то из описанного тобой. В итоге в базе данных только половина актуализированной информации. Зипись чо. Да, всё верно. А в твоём случае 0% актуальных данных. Это лучше? hVosttПоэтому я тебе и говорил, что решение будет сложнее, чем представленное тобой, чтобы учитывать всё, нагрузку, требования, целостность, защищённость, возможность параллельного доступа, единую актуализацию... и не отключать свет, если пропала холодная вода. О каких сложностях ты говоришь? Заблокировать в распределенной транзакции нахер всю таблицу сотрудников, чтобы все остальные соснули болт? Ты думаешь, что предлагаешь? hVosttГарантии как раз таки обычно имеются. Как имеются и риски. Если тебе поставили задачу, а ты развёл руками «ну так нельзя...» и тычешь в нос чужими рекомендациям, то просто найдут другого исполнителя, способного пошевелить мозгами и решить задачу, а не ипать мозг. Ну если есть риски, тогда какие вопросы? Предположим риск выстрелил. Твои действия? hVosttМСУВ моём решении - единственно верный вариант. Других вариантов быть не может. Абсолютно. В твоём решении возможно, всех деталей твоей задачи я не знаю, возможно именно такое решение там всех устраивает. Но это не единственно верный вариант. И другие варианты есть. Всегда есть. Да какие детали. Суть одна - импорт нельзя заключать в транзакцию. Вообще. Никак. Нельзя. Напиши себе фломастером на лбу и запомни это. hVosttТы напоминаешь мне дядю Билли, который орал 640Кб хватит всем! Опять левый пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2015, 12:19 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349618]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
197ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 403ms |
0 / 0 |