СК
Но если в базе будут проблемы , то у администратора базы не останется бекдора для исправления проблемы
Если сервис работает под суперпользователем
Size: a a a
СК
NZ
NZ
СК
NZ
СК
NZ
NZ
NZ
СК
NZ
СК
NZ
NZ
СК
NZ
СК
LM
task (20+ полей), но главные для этой задачи — это id (primary key), entities_data (jsonb).entities_data представляет собой json с определёнными ключами, которых на данный момент 5, но в будущем их будет больше на пару штук. Для примера данные могут быть следующими:id="f0b31453-7bd4-490f-b517-a8fc23d2ff3f", entities_data={"math": "math-1234-9c", "prog": "prog-847-8j", "geo": "geo-8370-8s"}
id="e4ccb5f5-3876-485a-ab2f-2fe5342b350c", entities_data={"phys": "phys-4321-9b", "geo": "geo-812-1k", "nop": "nop-92-5g"}
id="8a7f4365-f50e-48d6-a0c6-d7cd555488a1", entities_data={"math": "math-1202-7f", "prog": "prog-847-8j"}
Соответственно, суть агрегации — объединие всех task, у которых имеются одинаковые пары ключ-значение в entities_data.task), поскольку у них одинаковая пара "prog": "prog-847-8j". И результатом такой агрегации я вижу какой-то новый уникальный идентификатор (прим. uuid4), который станет значением поля in_relation в таблице task.id="f0b31453-7bd4-490f-b517-a8fc23d2ff3f", entities_data={"math": "math-1234-9c", "prog": "prog-847-8j", "geo": "geo-8370-8s"}, in_relation="5607fc92-f01c-4109-a4ee-2774c1eec0fb"
id="e4ccb5f5-3876-485a-ab2f-2fe5342b350c", entities_data={"phys": "phys-4321-9b", "geo-812-1k", "nop": "nop-92-5g"}, in_relation="8dd6cd71-51a2-47db-a228-29e87de28cb0"
id="8a7f4365-f50e-48d6-a0c6-d7cd555488a1", entities_data={"math": "math-1202-7f", "prog": "prog-847-8j"}, in_relation="5607fc92-f01c-4109-a4ee-2774c1eec0fb"
Количество записей в таблице task ~1 млн, с течением времени будут, естественно, увеличиваться. Предполагаю ответ на следующий вопрос, но может я ошибаюсь и вы сможете внести ясность.task получить за короткий промежуток времени (<1-5 секунд) идентификатор in_relation, который определяет, с какими другими задачами связана новая задача. Учту, что новые записи могут добавляться параллельно с разных клиентов.update некоторых полей из task, а поскольку происходит блокировка, то всё это дело смотрится вообще страшно.entities_data, искал по значению связана ли эта запись с какими либо из имеющимися (была доп. таблица с полями entities_id (primary), entities_name, relation_id (foreign)): LM
task.id
В результате чего пример выше был дополнен новой таблицей task_entities (id primary key, name, task_id primary key, foreign key):id="math-1234-9c", name="math", task_id="f0b31453-7bd4-490f-b517-a8fc23d2ff3f"Теперь
id="prog-847-8j", name="prog", task_id="f0b31453-7bd4-490f-b517-a8fc23d2ff3f"
id="geo-8370-8s", name="geo", task_id="f0b31453-7bd4-490f-b517-a8fc23d2ff3f"
id="phys-4321-9b", name="phys", task_id="e4ccb5f5-3876-485a-ab2f-2fe5342b350c"
id="geo-812-1k", name="geo", task_id="e4ccb5f5-3876-485a-ab2f-2fe5342b350c"
id="nop-92-5g", name="nop", task_id="e4ccb5f5-3876-485a-ab2f-2fe5342b350c"
id="math-1202-7f", name="math", task_id="8a7f4365-f50e-48d6-a0c6-d7cd555488a1"
id="prog-847-8j", name="prog", task_id="8a7f4365-f50e-48d6-a0c6-d7cd555488a1"
entities в явном виде связаны с определённой задачей.task), то необходимо изменить подход для составления агрегации: сделать сервис, который каждые 5-10-20-30 минут будет запускать операцию агрегации (sql запрос postgres'a) на всех имеющихся в таблице данных. СК