powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Конкурирующие процессы
21 сообщений из 21, страница 1 из 1
Конкурирующие процессы
    #35927644
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!

Имеется таблица, которая содержит пути к файлам. Все пути к файлам уникальные, но данные в самих файлах могут быть одинаковыми. Программа должна обработать данные файлов, пути к которым содержатся в таблице. При этом, нельзя обрабатывать одинаковые данные в файлах повторно. Надо учесть то, что сама программа разбита на несколько параллельно работающих процессов (число порцессов динамически меняется в ходе работы программы).

Хотелось бы узнать менние народа по поводу решения задачи. Возможно, есть стандартные алгоритмы, и не придётся изобретать велосипед.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927696
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f00GassПри этом, нельзя обрабатывать одинаковые данные в файлах повторно.
Как это?
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927761
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
f00Gass, если имеется строгий запрет на обработку одинаковых файлов, то, помимо CRC или хеша в качестве ключа, нужен дополнительный анализ данных. Если в самих данных есть такая уникальная часть, то ее и нужно делать характеризующим файлы ключем.
Вариант простой - делаешь разделяемую между процессами таблицу с характеризующим ключем, полем, информирующем о стадиях обработки и поле с планируемым временем завершения обработки.
Кто их процессов первый начинает транзакцию вставкой записи с ключем, тот и обрабатывает(если быстро, то можно в той же транзакции, тогда кроме ключа может и не понадобиться других полей).
Нужно еще предусмотреть сбойные ситуации, когда данные длительной обработки, и процесс, который вставил запись, аварийно завершен. Тогда периодическая чистка должна проверять окончание обработок по стадии и времени обработки.
Если все обработки выполняется внутри одного сервера MSSQL, то можно использовать sp_getapplock...sp_releaseapplock для замыкания по характеризующему файлы ключу вместо "родных" транзакций
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927763
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonf00GassПри этом, нельзя обрабатывать одинаковые данные в файлах повторно.
Как это?

Объясню на примере, думаю, так будет намного быстрее.
Пусть в таблице имеются следующие пути к файлам /some/path/file1 и /some/path/file2 . Положим, что данные в этих файлах полностью одинаковые. Так вот, если хотя бы один процесс обработал данные одного из этих файлов, то никакой процесс больше не должен обрабатывать данные файла ни /some/path/file1, ни /some/path/file2 .
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927769
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данные, которые лежат в файлах должны ложится в таблицу с констрейнтом уникальности. При повторной загрузке ты обрабатываешь Exception и игнорируешь дубликаты.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927798
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vinoКто их процессов первый начинает транзакцию вставкой записи с ключем, тот и обрабатывает
В этом варианте может быть такая ситуация, если я правильно поинимаю:
Один процесс вставляет запись с некоторым ункальным ключём, другой процесс тоже пытается это сделать с таким же ключём. Но кто-то из них в итоге получит исключение.
Такой вариант крайне нежелателен, он рассматривается как крайняя мера.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927833
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДанные, которые лежат в файлах должны ложится в таблицу с констрейнтом уникальности. При повторной загрузке ты обрабатываешь Exception и игнорируешь дубликаты.

Да, это первое, что приходит в голову. Надеюсь, можно решить задачу с помощью логики без исключений.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35927913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если иметь больше информации о природе загружаемых данных - можно было-бы гарантировать уникальность другим способом.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35928419
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
f00Gass, конкурирующая логика работы всегда такая, что проще обработать исключение уникальности или таймаута, чем городить свою "логику". Хотя бы платформу уточни, и на скольки серверах должна выполняться
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35929652
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vino,

Да, согласен, дело - дрянь. Вся работа пока на одном сервере, но никто не отрицает, что в будущем будет на нескольких. Как пока не крути, выходит, что самый подходящий вариант через исключения.

Хотя, ещё рассматривается вариант с "промежуточным звеном". Предполагается, что это самое звено будет работать в монопольном режиме и постоянно проверять таблицу на предмет новых поступлений. И если новые поступления есть, то будет высчитывать CRC для файла; далее в случае отсутствия файла с таким CRC, будет добавлять запись в результирующую таблицу (с которой будут работать обработчики). Т.к. высчитать CRC намноооого быстре чем обработать содержимое в файлах, то на данном этапе вариант вполне приемлим. Разумеется данный подход в последствии может сильно сказаться на масштабируемости проекта.

P.S.: О.С. - Linux, Б.Д. - MySQL
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35929674
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я встречал много промышленных систем, в которых, загрузка данных в базу происходила непосредственно, и без проверок. А потом, в БД стартовали процессы, которые выполняли чистку данных. Например для протоколов телефонных станций - это отсеивание несуществующего траффика, служебного, транзитного и т.п.

Что-бы решать, где фильтровать удобнее, на клиенте или на сервере, нужны количественные оценки. Во сколько раз, и с какими расходами, где лучше вычислять. На мой взгляд в БД это делать удобнее, особенно если процент "битых" данных невелик.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35929985
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНа мой взгляд в БД это делать удобнее, особенно если процент "битых" данных невелик.
В том то и оно, что процент "битых" данных составляет примерно 90%, и этого никак не избежать :\
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А откуда такие данных приходят? Что у вас, работа между подразделениями настолько несогласована?
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930109
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Эти данные - результат обхода спайдерами различных web-сайтов. Сейчас, планируется убрать из раздачи множество дублекатов, для разгрузки поискового индекса, снижения затрат на поиск, и, разумеется, ещё есть маленькая надежда на то, что найти нужную информацию станет легче.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930408
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f00Gassmayton,

Эти данные - результат обхода спайдерами различных web-сайтов. Сейчас, планируется убрать из раздачи множество дублекатов, для разгрузки поискового индекса, снижения затрат на поиск, и, разумеется, ещё есть маленькая надежда на то, что найти нужную информацию станет легче.
Сделайте, чтобы они не обрабатывали по 10 раз один сайт, и все дела.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930445
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XDiaBLo,

Дуплицируется информация на разных сайтах. Проблем с тем, что один сайт обрабатывается несколько раз нет.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930465
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f00GassXDiaBLo,

Дуплицируется информация на разных сайтах. Проблем с тем, что один сайт обрабатывается несколько раз нет.
Ну она не на 100% одинаковая, файлы с данными получатся немного разные.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930571
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XDiaBLo,

С каждой страницы берётся только нужная информация, совпадение получается стопроцентным.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930886
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
f00GassXDiaBLo,
С каждой страницы берётся только нужная информация, совпадение получается стопроцентным.
Фактически, это задача поиска дубликатов, а там наибольшая обработка-то как раз заключается в получении слепка (например, подсчет к-нибудь хеша для характеризующего ключа + размер файлов в Вашем случае) чтобы сравнивать сущности. Но здесь всегда были подводные камни при отбрасывании несущественных изменений (например, лишние пробелы в тексте, комментарии MP3 тегах) - в Вашем случае, судя по цитате, этим спайдеры занимаются
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35930911
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Является - ли дублирование критичным? Если вы делаете поисковой сервер для интернета, то он имеет полное право найти искомую информацию сразу в нескольких источниках. Иногда это даже удобно. Какой-то примитивный вариант отказоустойчивости.

Тоесть я хочу сказать, что наличие реплик и дубликатов в глобальной сети - нормальное явление и относится к нему надо терпимо.
...
Рейтинг: 0 / 0
Конкурирующие процессы
    #35931006
f00Gass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
В этом сервисе, к сожалению, дублирование информации абсолютно неприемлимо.

Итак, можно подвести итог суточного обсуждения. Если я праивльно поянл то, призёром в наимнации "мнение народна", становится алгоритм основанный на обработке исключений.

Всем, огрмное спасибо!
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Конкурирующие процессы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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