Синхронизация процесса обработки файлов.

User avatar
Diller
Уже с Приветом
Posts: 6771
Joined: 27 Jan 2000 10:01
Location: Россия-USA

Синхронизация процесса обработки файлов.

Post by Diller »

Есть 3 типа файлов(А,В,С), получаемых по NSQ. Очередность получения не гарантируется. После обработки все они попадают в БД(DynamoDB).
1. Данные в В должны иметь(но в случае ошибки могут и не иметь) совпадющие рекорды в А.
2. Данные в С должны иметь(но в случае ошибки могут и не иметь) совпадющие рекорды в В.

Какие варинты, кроме requeue или др.вида отложенной обработки? Где можно почитать о работе с асинхронизированными процессами?
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Синхронизация процесса обработки файлов.

Post by Medium-rare »

Тут несколько моментов:

1. Все знают, что такое NSQ? (хотя, может, и не важно)
2. Из пересечения рекордов B/A и C/B что следует?
3. Какая проблема с попаданием данных в DynamoDB?
4. Что за requeue? Какая с этим проблема?
5. И самое главное, какой результат должен быть достигнут?

Иначе, мутновато, после получения разъяснений можно подумать и о вариантах. Вам, ещё, наверное, в общем и целом, про синхронизацию потоков? В какой среде?
... and even then it's rare that you'll be going there...
User avatar
Diller
Уже с Приветом
Posts: 6771
Joined: 27 Jan 2000 10:01
Location: Россия-USA

Re: Синхронизация процесса обработки файлов.

Post by Diller »

1. distributed messaging platform (да, не важно)
2. Это junction tables
3. Правила(дизайн) БД не разрешает записи в В, не совпадающие с А (Дайнамо опять не важно)
4. Это не проблемa, а возможное решение. Можно requeue message, надеясь, что нужный рекорд появится.
5. Tаблицы А1,А2, В и С и junction tables АВ и ВС.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
User avatar
Diller
Уже с Приветом
Posts: 6771
Joined: 27 Jan 2000 10:01
Location: Россия-USA

Re: Синхронизация процесса обработки файлов.

Post by Diller »

Я осознал, что задача не осуществима. Будем объединять всё в один файл.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Синхронизация процесса обработки файлов.

Post by helg »

- Каждый из файлов: A,B,C - идёт в свою таблицу (или свой набор таблиц).
- Никакие данные не должны быть видны потребителям, пока не обработаны все 3 файла.
- Данные в В валидны только если есть мастер-запись для них в A. Данные в С валидны только если есть мастер-запись для них в B.
- Не хочется плодить временных файлов собственного формата, где хранятся всевозможные комбинации A, B и C.

Импортируем A, B и С во временные таблицы - без проверок на наличие мастер-записей. При импортировании последнего файла из трёх перемещаем неошибочные записи из временных таблиц в основные, а ошибочные - куда прикажут.

Да, это отложенная обработка. А как ещё?
User avatar
Diller
Уже с Приветом
Posts: 6771
Joined: 27 Jan 2000 10:01
Location: Россия-USA

Re: Синхронизация процесса обработки файлов.

Post by Diller »

helg wrote:- Каждый из файлов: A,B,C - идёт в свою таблицу (или свой набор таблиц).
- Никакие данные не должны быть видны потребителям, пока не обработаны все 3 файла.
- Данные в В валидны только если есть мастер-запись для них в A. Данные в С валидны только если есть мастер-запись для них в B.
- Не хочется плодить временных файлов собственного формата, где хранятся всевозможные комбинации A, B и C.

Импортируем A, B и С во временные таблицы - без проверок на наличие мастер-записей. При импортировании последнего файла из трёх перемещаем неошибочные записи из временных таблиц в основные, а ошибочные - куда прикажут.

Да, это отложенная обработка. А как ещё?
Спасибо, Вы очень точно всё сформулировали.
Оказалось, что не принципиально иметь 3 типа файлов и их можно объединить, а т.к. это XML, то просто добавили внешний таг. И мне свой код почти не пришлось менять. Правда это заставило задуматься вообще о работе с асинхронными процесами и начальник сейчас решает ZeroMQ vs .... Но это уже другой вопрос.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.

Return to “Вопросы и новости IT”