Есть 3 типа файлов(А,В,С), получаемых по NSQ. Очередность получения не гарантируется. После обработки все они попадают в БД(DynamoDB).
1. Данные в В должны иметь(но в случае ошибки могут и не иметь) совпадющие рекорды в А.
2. Данные в С должны иметь(но в случае ошибки могут и не иметь) совпадющие рекорды в В.
Какие варинты, кроме requeue или др.вида отложенной обработки? Где можно почитать о работе с асинхронизированными процессами?
Синхронизация процесса обработки файлов.
-
- Уже с Приветом
- Posts: 6771
- Joined: 27 Jan 2000 10:01
- Location: Россия-USA
Синхронизация процесса обработки файлов.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: Синхронизация процесса обработки файлов.
Тут несколько моментов:
1. Все знают, что такое NSQ? (хотя, может, и не важно)
2. Из пересечения рекордов B/A и C/B что следует?
3. Какая проблема с попаданием данных в DynamoDB?
4. Что за requeue? Какая с этим проблема?
5. И самое главное, какой результат должен быть достигнут?
Иначе, мутновато, после получения разъяснений можно подумать и о вариантах. Вам, ещё, наверное, в общем и целом, про синхронизацию потоков? В какой среде?
1. Все знают, что такое NSQ? (хотя, может, и не важно)
2. Из пересечения рекордов B/A и C/B что следует?
3. Какая проблема с попаданием данных в DynamoDB?
4. Что за requeue? Какая с этим проблема?
5. И самое главное, какой результат должен быть достигнут?
Иначе, мутновато, после получения разъяснений можно подумать и о вариантах. Вам, ещё, наверное, в общем и целом, про синхронизацию потоков? В какой среде?
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 6771
- Joined: 27 Jan 2000 10:01
- Location: Россия-USA
Re: Синхронизация процесса обработки файлов.
1. distributed messaging platform (да, не важно)
2. Это junction tables
3. Правила(дизайн) БД не разрешает записи в В, не совпадающие с А (Дайнамо опять не важно)
4. Это не проблемa, а возможное решение. Можно requeue message, надеясь, что нужный рекорд появится.
5. Tаблицы А1,А2, В и С и junction tables АВ и ВС.
2. Это junction tables
3. Правила(дизайн) БД не разрешает записи в В, не совпадающие с А (Дайнамо опять не важно)
4. Это не проблемa, а возможное решение. Можно requeue message, надеясь, что нужный рекорд появится.
5. Tаблицы А1,А2, В и С и junction tables АВ и ВС.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
-
- Уже с Приветом
- Posts: 6771
- Joined: 27 Jan 2000 10:01
- Location: Россия-USA
Re: Синхронизация процесса обработки файлов.
Я осознал, что задача не осуществима. Будем объединять всё в один файл.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Синхронизация процесса обработки файлов.
- Каждый из файлов: A,B,C - идёт в свою таблицу (или свой набор таблиц).
- Никакие данные не должны быть видны потребителям, пока не обработаны все 3 файла.
- Данные в В валидны только если есть мастер-запись для них в A. Данные в С валидны только если есть мастер-запись для них в B.
- Не хочется плодить временных файлов собственного формата, где хранятся всевозможные комбинации A, B и C.
Импортируем A, B и С во временные таблицы - без проверок на наличие мастер-записей. При импортировании последнего файла из трёх перемещаем неошибочные записи из временных таблиц в основные, а ошибочные - куда прикажут.
Да, это отложенная обработка. А как ещё?
- Никакие данные не должны быть видны потребителям, пока не обработаны все 3 файла.
- Данные в В валидны только если есть мастер-запись для них в A. Данные в С валидны только если есть мастер-запись для них в B.
- Не хочется плодить временных файлов собственного формата, где хранятся всевозможные комбинации A, B и C.
Импортируем A, B и С во временные таблицы - без проверок на наличие мастер-записей. При импортировании последнего файла из трёх перемещаем неошибочные записи из временных таблиц в основные, а ошибочные - куда прикажут.
Да, это отложенная обработка. А как ещё?
-
- Уже с Приветом
- Posts: 6771
- Joined: 27 Jan 2000 10:01
- Location: Россия-USA
Re: Синхронизация процесса обработки файлов.
Спасибо, Вы очень точно всё сформулировали.helg wrote:- Каждый из файлов: A,B,C - идёт в свою таблицу (или свой набор таблиц).
- Никакие данные не должны быть видны потребителям, пока не обработаны все 3 файла.
- Данные в В валидны только если есть мастер-запись для них в A. Данные в С валидны только если есть мастер-запись для них в B.
- Не хочется плодить временных файлов собственного формата, где хранятся всевозможные комбинации A, B и C.
Импортируем A, B и С во временные таблицы - без проверок на наличие мастер-записей. При импортировании последнего файла из трёх перемещаем неошибочные записи из временных таблиц в основные, а ошибочные - куда прикажут.
Да, это отложенная обработка. А как ещё?
Оказалось, что не принципиально иметь 3 типа файлов и их можно объединить, а т.к. это XML, то просто добавили внешний таг. И мне свой код почти не пришлось менять. Правда это заставило задуматься вообще о работе с асинхронными процесами и начальник сейчас решает ZeroMQ vs .... Но это уже другой вопрос.
Общая сумма разума на планете - величина постоянная, а население растёт ...
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.
Закон — это попытка кодифицировать справедливость, но в большинстве случаев - неудачная попытка.