powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Как вы делаете пакетные операции?
25 сообщений из 179, страница 7 из 8
EF: Как вы делаете пакетные операции?
    #38889750
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAОбходные манёвры чего, незапланированного выходного у бухгалтера? :)

А в банковской системе, где обеспечение транзакций превыше всего, конечно вообще домой никогда не ходят. Спят прям на рабочем месте. И едят там же. И детей делают там. Там же повсюду транзакции, прям настоящий транзакционный АД Ты походу никогда с банковскими системами не работал :)
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889751
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу говорил же, отключить некоторые отчёты на время синхронизации.

Ну так это типа и есть уже какая-то блокировка. Пускай не всей базы, но отчётов. Уже не айс )
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889756
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы походу никогда с банковскими системами не работал :)

Тебе похоже тоже нужна табличка Sarcasm Ж)
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889758
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAХм, а я о чём?

Ну так и я о чём.Фиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :)
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889759
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КНу говорил же, отключить некоторые отчёты на время синхронизации.

Ну так это типа и есть уже какая-то блокировка. Пускай не всей базы, но отчётов. Уже не айс )Только пары отчётов. Главное, чтобы работа оперативных сотрудников не была нарушена.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889761
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТы походу никогда с банковскими системами не работал :)

Тебе похоже тоже нужна табличка Sarcasm Ж)Я могу без сарказма привести пример из практики интеграции с банковскими системами.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889762
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ "сотрудник" есть поле "дата/время синхронизации". Вполне понятно в каком состоянии.

Ну вот Васю и Петю повысили в одно время, а когда эти оба притопали на новое рабочее место, пустили только Васю, Петя тёрся в коридоре пока не обновились его данные
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889768
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :)

Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889769
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ могу без сарказма привести пример из практики интеграции с банковскими системами.

Приведи плз.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889771
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :)

Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889774
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТолько пары отчётов. Главное, чтобы работа оперативных сотрудников не была нарушена.

Других способов совсем нет?
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889784
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAФиг знает. Я не понял, что предлагаешь бедному бухгалтеру: ждать пока закончится твоя жирная транзакция и молиться, чтобы она не завалилась, или домой идти? :)

Не, я за обеспечение неблокирующей транзакционности. Чем это достигается, вопрос второй. Но типо длительная пакетная загрузка во время активной работы пользователей, это просто бесчеловечно.С фигали это безчеловечно-то? Безчеловечно - это когда она написана так, что делать что-либо в системе невозможно, пока она идёт.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889785
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЯ могу без сарказма привести пример из практики интеграции с банковскими системами.

Приведи плз.Ок, чуть позже.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889791
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAС фигали это безчеловечно-то? Безчеловечно - это когда она написана так, что делать что-либо в системе невозможно, пока она идёт.

И это тоже бесчеловечно, не спорю.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889800
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТ.е. инфа на момент начала загрузки была одна, а вот актуальность данных меняется с течением времени, и с 15:00 до 18:00 база данных вообще непонятно в каком состоянии, и как можно с этим работать, не понимаю? Это что нормально?
Твою неопытность видно за версту :) Процессинг, ETL, DWH, репликация и иже с ними - априори не могут быть актуальными относительно источника данных. Всегда есть какая временная дельта, разрыв во времени. Это нормально.

hVosttТ.е. активные пользователи получают не просто не актуальную информацию (когда данные ещё не загрузились), а вообще непонятно что. Совершенно очевидно, что сводными отчётами в процессе загрузки можно только зад подтереть. Если бы обеспечивалась транзакционность, то хотябы состояние базы было бы актуально на определённый момент (до загрузки или после), а не черти что. В чём великий смысл этого идиотизма, не понимаю.
Работал когда-нибудь с OLAP DWH? Процессинг кубов, мер, измерений всегда трудозатратная по времени операция, временное расхождение актуальных данных с боевой БД достигает от 1 дня и выше. Это нормально.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889814
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТвою неопытность видно за версту :) Процессинг, ETL, DWH, репликация и иже с ними - априори не могут быть актуальными относительно источника данных. Всегда есть какая временная дельта, разрыв во времени. Это нормально.

Да не про временную дельту идёт речь. То, что для загрузки требуется время, это понятно. Речь идёт об консистентности. Короче, неблокирующую транзакцию как обеспечить знаешь или нет, скажи мне, опытный ты наш.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889815
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУРаботал когда-нибудь с OLAP DWH? Процессинг кубов, мер, измерений всегда трудозатратная по времени операция, временное расхождение актуальных данных с боевой БД достигает от 1 дня и выше. Это нормально.

Немного, но да, работал. Ещё раз повторяю, проблема не в актуальности, а в её нарушении. Пусть данные будут актуальны за вчера, но целостны. Разрывы не уместны.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889869
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Профиты?
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38889946
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ1. "Консистентности" всего процессинга? :) Такого не бывает, это сказки. А от консистентности батча (пакета, группы, экземпляра) - всегда вэлкам.

Ну почему не бывает, просто никто не говорит, что это просто. В зависимости от задачи можно разработать различные сценарии для достижения этого результата. Или будешь утверждать, что это задача абсолютно не выполнимая?

МСУ2. Что такое "неблокирующая транзакция"? Опять жжешь напалмом?

Это значит, что существует два состояния: до загрузки/обработки/синхронизации данных и после, а не где-то между. При больших объёмах использование транзакции базы данных приносит много боли пользователям ради достижения этой цели. И ты хочешь сказать, что по-другому нельзя? Либо блокирующие страдания, либо батчи?

МСУ1. Процессинг "данных за вчера" обвалился на 99% выполненной работе.

Да, обвалился по причине неизвестной заранее ошибки, потому что иначе ситуация была бы правильно обработана, и ошибки бы не случилось. Раз имеется такая ошибка, значит и всей логике загрузки доверять как-то сомнительно, это надо чинить. Лучше пару раз поймать и починить, чем постоянно ловить «недосказанность» + постоянные периоды времени в полу-недоактуальном половинчатом хер пойми каком недосостоянии.

МСУ2. Сегодня ты хочешь получить "данные за вчера", а их там нет. Что делать?

Ну я хочу получить данные за вчера, а не что-то-за-вчера-а-что-то-за-позавчера, полусостояние какое-то. Особенно если требуется сводные цифры, с учётом «до копья».

МСУ4. Образно говоря, в моём случае 80% сотрудников будут работать в штатном режиме и только 20% будут испытывать трудности, т.к. 1% невыполненной работы у тебя завалился. В твоём случае 100% работников будут сосать писю.

Как раз наоборот. В штатном режиме должно всё работать и давать 100% результат. Если что-то упало, значит косяк в логике, значит нафиг такая загрузка хоть в каком процентном эквиваленте нужна. Надо чинить. Или, если система не какая-нибудь банковская, то пох?

МСУ5. Профиты?

Ну, если постепенная побатчевая загрузка вообще никому не мешает, не портит и не влияет никоим образом ни на какие отчёты, ни с чем и ни с кем не конфликтует, всем юзерам целостность данных по барабану, если это заранее известно, что не надо строить иллюзий на 100% уверенность в актуальной инфе, пусть загружается хоть сколько-нибудь. То да, в твоём решении имеется чистый профит.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890029
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ1. "Консистентности" всего процессинга? :) Такого не бывает, это сказки. А от консистентности батча (пакета, группы, экземпляра) - всегда вэлкам.
Ну почему не бывает, просто никто не говорит, что это просто. В зависимости от задачи можно разработать различные сценарии для достижения этого результата. Или будешь утверждать, что это задача абсолютно не выполнимая?
Речь не о простоте или сложности, речь о бывает или не бывает. Сценарий просессинга всегда прост - процессить. В процессинге единичного экземпляра или группы интереса никакого нет, процессят всегда набор экземпляров или групп. Оборачивать процессинг экземпляров или групп в ACID - смертоубийственная затея, о которой тебе тут все тылдычат.

hVosttМСУ2. Что такое "неблокирующая транзакция"? Опять жжешь напалмом?
Это значит, что существует два состояния: до загрузки/обработки/синхронизации данных и после, а не где-то между. При больших объёмах использование транзакции базы данных приносит много боли пользователям ради достижения этой цели. И ты хочешь сказать, что по-другому нельзя? Либо блокирующие страдания, либо батчи?
Я тебе выше уже сказал, что оборачивать процессинг в ACID - это как упаковать столичное Киевское шоссе в презерватив. Лопнет или не лопнет. А зачем? А фиг его знает. Так хвост захотел.

hVosttМСУ1. Процессинг "данных за вчера" обвалился на 99% выполненной работе.
Да, обвалился по причине неизвестной заранее ошибки, потому что иначе ситуация была бы правильно обработана, и ошибки бы не случилось. Раз имеется такая ошибка, значит и всей логике загрузки доверять как-то сомнительно, это надо чинить. Лучше пару раз поймать и починить, чем постоянно ловить «недосказанность» + постоянные периоды времени в полу-недоактуальном половинчатом хер пойми каком недосостоянии.
Да причем тут логика? Обвалился процессинг по причине того, что сервер ушел в ребут, нештатная ситуация у DBA и отвалилась база, закончилось место, уборщица жопой задела витую пару, затопило серверную, ураган, смерч, цунами, пьяный админ попутал, террористы, проводка погорела, попёрло гавно из санузла и давлением вдавило каки в стойку, ... Ещё?

hVosttМСУ2. Сегодня ты хочешь получить "данные за вчера", а их там нет. Что делать?
Ну я хочу получить данные за вчера, а не что-то-за-вчера-а-что-то-за-позавчера, полусостояние какое-то. Особенно если требуется сводные цифры, с учётом «до копья».
Сводные цифры сами по себе никому не нужны. Сводные цифры всегда в разрезе чего-то (период, тип, операция и так далее). Это называется измерением, мерой. Кто-то мерит одной мерой, кто-то другой. Зачем лишать пользователей 100% мер? Улавливаешь суть? Представь ситуацию, в горводе произошла авария и пропала холодная вода. А тебе за это отключили свет, газ и антенну. Справедливо? Ты начинаешь писать жалобы, а тебе в ответ - "раз имеется такая ошибка, значит и всей логике жилобеспечения доверять как-то сомнительно, это надо чинить". Занавес.

hVosttМСУ4. Образно говоря, в моём случае 80% сотрудников будут работать в штатном режиме и только 20% будут испытывать трудности, т.к. 1% невыполненной работы у тебя завалился. В твоём случае 100% работников будут сосать писю.
Как раз наоборот. В штатном режиме должно всё работать и давать 100% результат. Если что-то упало, значит косяк в логике, значит нафиг такая загрузка хоть в каком процентном эквиваленте нужна. Надо чинить. Или, если система не какая-нибудь банковская, то пох?
Никогда никто не даст таких гарантий, что всегда будет штатная ситуация и всё 100% отработает. Ты в космосе что ли? Я выше сказал, упало - это обязательно косяк в логике. Осознай это.

hVosttМСУ5. Профиты?
Ну, если постепенная побатчевая загрузка вообще никому не мешает, не портит и не влияет никоим образом ни на какие отчёты, ни с чем и ни с кем не конфликтует, всем юзерам целостность данных по барабану, если это заранее известно, что не надо строить иллюзий на 100% уверенность в актуальной инфе, пусть загружается хоть сколько-нибудь. То да, в твоём решении имеется чистый профит.
В моём решении - единственно верный вариант. Других вариантов быть не может. Абсолютно.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890076
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hVostt]МСУДа не про временную дельту идёт речь. То, что для загрузки требуется время, это понятно. Речь идёт об консистентности.

500 человек ходят по области и городу, набивают заказы в свои терминалы. Потом передают в офис. И вдруг у одного чего-то не заладилось.

ЧУ!! ALARM!

Система мгновенно откатывает состояние рабочего дня на 00.00.01? Ведь импорт всех заказов не прошел на 100% - всем покинуть корабль?

Или весь текущий импорт она метит хеш-тегами #"несчастливая звезда" #"всё пошло не так" и очищает результаты его работы?

Нет, система "засосет" столько, сколько сможет. Пометит то, что прочитала, а при следующей загрузке прожует то, что осталось.

И если кусок случился совсем уж непрожеванным - то по итогам операционного дня в систему не попадет ОДИН заказ из 10 000.

Можно сколько угодно оттопыривать пальчик и расшифровывать ACID задом наперед, но попробуйте ответсвенному/заинтересованному за продажи объяснить, что отгрузки за день не будет, потому что данные, видите ли - НЕ КОНСИСТЕНТНЫ...!!!

Отрезвление придет очень быстро.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890085
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А уж в таких операциях как импорт/репликация вообще понятие консистентность применимо с БОЛЬШОЙ натяжкой, так как само содержание этих операций нифига не детерминировано, а в зависимости от внешних факторов может быть абсолютно разным.

А вот такая БЕ, как сотрудник, заказ - любой объект доменной модели должен быть непротиворечив. И именно эта единица - будет атомарной единицей обмена.



Какой-то странный, чисто IT-шный подход. В систему ломятся 10 000 заказов, но мы их не пустим, потому как там где-то есть паршивая овца.

Сколько будет искать? Пока не найдем.

И вот, за минуту до конца рабочего дня, IT-шники грузят заказы в базу.

Довольные утирают пот и недоумевают, почему вместо грамоты - их лишают премии/указывают на дверь/пускают по кругу.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890122
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
невежество всегда воинственна
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890230
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ выше сказал, упало - это не обязательно косяк в логике. Осознай это.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38890310
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУРечь не о простоте или сложности, речь о бывает или не бывает. Сценарий просессинга всегда прост - процессить. В процессинге единичного экземпляра или группы интереса никакого нет, процессят всегда набор экземпляров или групп. Оборачивать процессинг экземпляров или групп в ACID - смертоубийственная затея, о которой тебе тут все тылдычат.

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

Например, вернёмся к твоему кейсу синхронизации 30К сотрудников. Учитывая, что синхронизация происходит периодически, наверняка среди 30К записей за короткий период реальных изменений реально меньше, чем 30К. Значит можно сначала определить весь объём этих изменений и выполнить их в рамках транзакции, это будет достаточно быстро, чтобы никто не испытывал проблем. Решение конечно же будет сложнее, чем тот кусок кода, что ты привёл, который ТУПО прогоняет один и тот же алгоритм обработки по всем записям.

Из реального опыта. Лет 5 назад, работая в большой организации проводил рефакторинг периодического импорта данных учёта материальных запасов из R/3 в другую систему на базе Oracle. До рефакторинга процедура отрабатывала в течении 5-8 часов, запускалась ночью и имела как раз такую проблему, о которой я тебе талдычил: иногда выпадали пакеты, что составляло актуальность загрузки на уровне 98-99%. Ты говоришь — да это фигня, подумаешь, ничего 100% не бывает, а в организации с этим испытывали проблемы. Решение импорта было очень похоже на твой код. Рефакторинг заключался в том, чтобы загрузить данные в служебные таблицы, никак не участвующие в бизнес-логике. Затем определить характер изменений. Затем в единой транзакции осуществить реальный импорт. Время импорта сократилось с 5-8 часов до 15 минут в среднем (в зависимости от объёма изменений). При чём ошибочные записи оставались в служебных таблицах и могли быть доимпортированы, после исправления ошибок в данных. Решение всех устроило и работает до сих пор по моим сведениям.

Так что не лечи меня, милый товарищ на счёт невозможности и единственно правильного во всём мире решения этой задачи.
...
Рейтинг: 0 / 0
25 сообщений из 179, страница 7 из 8
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Как вы делаете пакетные операции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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