Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Добрый день!
Как можно решить задачу по параллельной обработке данных из бд с помощью нескольких клиентских приложений?

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

Требуется запустить обработку всех записей из таблицы, удовлетворяющих условию.
Допустим, если таблица содержит 10млн строк, то под условие может попадать 8,5 млн. И эти 8,5 млн строк требуется обработать, например, на 5 клиентских приложениях - около 1,7 млн записей на каждого.

Как можно разделить данные между клиентами, чтобы не было проблем во время обработки? Как в таком подходе будет реагировать оракл?
11 сен 18, 21:10    [21671505]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
AmKad
Member

Откуда:
Сообщений: 4905
feomatr,

А что такого умеет делать клиент, что возникает необходимость тянуть к нему данные?
11 сен 18, 21:29    [21671520]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
AmKad,

Клиент по отношению к бд. На самом деле это уровень сервера приложений.
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.
11 сен 18, 21:51    [21671540]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46073

feomatr
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.

Хочется - перераспределяй. Но что заставляет делать это средствами БД? Заведи диспетчер,
который вычитает твои 8кк записей и раскидает по исполнителям.

Posted via ActualForum NNTP Server 1.5

11 сен 18, 22:08    [21671558]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28394
feomatr
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.
Наивный велосипедостроитель? "Шчаз я на яве всех порву, как тузик грелку"?
12 сен 18, 07:41    [21671692]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Dimitry Sibiryakov
feomatr
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.

Хочется - перераспределяй. Но что заставляет делать это средствами БД? Заведи диспетчер,
который вычитает твои 8кк записей и раскидает по исполнителям.

Когда исполнитель выбирает пачку данных и активно ее обновляет не будет происходить столкновений/взаимных блокировок в оракле при обновлении строк?

Будет разница если горизонтально разделять записи таблицы для обработчиков? А если каждый из обработчиков пронуровать и пусть он отрабатывает строки, хэш функция которых при делении на число обработчиков равна номеру обработчика?
12 сен 18, 16:16    [21672425]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Elic
feomatr
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.
Наивный велосипедостроитель? "Шчаз я на яве всех порву, как тузик грелку"?


Есть идеи, как оптимально организовать такой процесс обработки?
12 сен 18, 16:18    [21672431]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46073

feomatr
Когда исполнитель выбирает пачку данных и активно ее обновляет не будет происходить
столкновений/взаимных блокировок в оракле при обновлении строк?

С кем столкновений? Диспетчер - один. Он коммитит транзакцию перед раскидыванием
выбранного списка исполнителям.

Posted via ActualForum NNTP Server 1.5

12 сен 18, 16:29    [21672456]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Мутаген
Member

Откуда:
Сообщений: 677
Mu:hleisen
Transferring a large amount of data from a database to a
client program is a surprisingly expensive operation. The
time this requires can easily dominate the query execution
time for large result sets.

http://www.vldb.org/pvldb/vol10/p1022-muehleisen.pdf
12 сен 18, 17:13    [21672514]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28394
feomatr
как оптимально организовать такой процесс обработки?
"Такой" - это сферо-коне-вакуумо-образный?
13 сен 18, 07:27    [21673018]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Dimitry Sibiryakov
feomatr
Хочется перераспределить нагрузку по обработке данных с сервера бд на сервера приложений.

Хочется - перераспределяй. Но что заставляет делать это средствами БД? Заведи диспетчер,
который вычитает твои 8кк записей и раскидает по исполнителям.



1)На сколько эффективно , если Исполнитель будет обновлять каждую запись в отдельной транзакции?
2) на сколько эффективно обновлять записи пачками?

Есть best practices в массовой обработке данных из бд на клиенте?
13 сен 18, 07:45    [21673023]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Dimitry Sibiryakov
feomatr
Когда исполнитель выбирает пачку данных и активно ее обновляет не будет происходить
столкновений/взаимных блокировок в оракле при обновлении строк?

С кем столкновений? Диспетчер - один. Он коммитит транзакцию перед раскидыванием
выбранного списка исполнителям.

Если исполнителей много и каждый активно пишет и читает одну таблицу, то полагаю, что СУБД при определенной нагрузке может начать не поддерживать конкурентный доступ к таблице.
Насколько это реально? Есть какой-то sla у оракла.
13 сен 18, 07:57    [21673031]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Или массовая обработка просто напросто упрется в сеть и передачу данных ? Как указал Мутаген.
13 сен 18, 07:59    [21673032]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28394
feomatr
обработке данных из бд на клиенте
Немотивированная самоцель.
Но таки да, ты уменьшишь конкуренцию за счёт замедления обработки путём выноса её на клиентов
13 сен 18, 08:12    [21673039]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Сформулировал мысль и задал вопрос в другой ветке.

http://www.sql.ru/forum/1302406-a/posovetuyte-podhody-i-literaturu-po-massovoy-obrabotke-dannyh

Спасибо за ответы)
13 сен 18, 08:54    [21673071]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
XMLer
Member

Откуда:
Сообщений: 247
feomatr
1)На сколько эффективно , если Исполнитель будет обновлять каждую запись в отдельной транзакции?


Неэффективно, ты рискуешь не просто не достигнуть своей цели - снизить нагрузку, ты рискуешь добиться обратного.

feomatr
2) на сколько эффективно обновлять записи пачками?

После построчной обработке тебе покажется что "ура, все полетело". Но это только кажется
13 сен 18, 11:24    [21673252]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
XMLer,
Что может случиться?
13 сен 18, 11:55    [21673306]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46073

feomatr
1)На сколько эффективно , если Исполнитель будет обновлять каждую запись в отдельной
транзакции?

Если результатом работы исполнителя является одна запись, то обновлять её в транзакции -
единственно правильное решение.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 12:01    [21673316]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
feomatr
Member

Откуда: Ростов
Сообщений: 41
Dimitry Sibiryakov,

Результатом работы исполнителя предполагается обновление каждой записи из переданной ему пачки. Пачка размерами от тысяч, десятков тысяч
13 сен 18, 12:14    [21673345]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46073

feomatr
Результатом работы исполнителя предполагается обновление каждой записи из переданной ему
пачки.

Это бред, которые не имеет смысла выносить из СУБД.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 12:22    [21673357]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
XMLer
Member

Откуда:
Сообщений: 247
feomatr,
Никакой пачкой ты не добьёшся производительности, сравнимой с массовой обработкой внутри СУБД.
Вспомнил один похожий проект, миграция обработки файла одной из IPS из Oracle в AppServer на Java. Целью проекта было отказ от дорогой СУБД, она была достигнута. Но производительностью подобные решения не страдают.
13 сен 18, 13:07    [21673432]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 54203
Блог
feomatr
Есть best practices в массовой обработке данных из бд на клиенте?

В общем, да. И эта best practice - не делать массовых обработок данных из бд на клиенте :)
13 сен 18, 19:39    [21674143]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46073

softwarer
И эта best practice - не делать массовых обработок данных из бд на клиенте :)

Кто ж знает, что ТС называет "обработкой" и насколько она массовая...
Прибавить единицу к значению поля в миллиарде записей это одно. Но есть и вещи типа SETI и
прочего майнинга, которые требует очень больших вычислительных мощностей, но и входные
данные и результат которых сравнительно компактны.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 20:04    [21674155]     Ответить | Цитировать Сообщить модератору
 Re: Массовая обработка таблицы на клиентах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28394
Dimitry Sibiryakov
Но есть и вещи типа
Успокойся. Просто ТС явист. Иначе бы уже давно обозначил сферического коня.
14 сен 18, 07:45    [21674324]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить