Кажется, что в некоторых областях (типа интернет-маркетинг) просто нет выбора, им приходится работать с такими нечеткими (постоянно уточняющимися) данными, типа "вчера мы получили эти три разных запроса от разных устройств, сегодня по куке или другим косвенным признакам определили что два из них от одного клиента, завтра узнаем что эти два на самом деле разные люди, но предположительно из одной семьи".
Это типа как progressive jpeg, с первых байт есть какие-то общие очертания и каждая новая порция данных уточняет их, и как с береговой линией, это процесс может быть бесконечным.
Передо мной возможно скоро будет стоять очень похожая задача, буду благодарен если кто-нибудь подскажет какие есть практики к проектированию хранилищ для таких данных
У нас так в воронку попадают ордера.
Дистрибьютор может в ордере что угодно расписывать, из-за чего сотрудникам отдела, который принимал эти заявки приходилось разгребать всё руками.
Мы подключили автоматизацию, которая сопоставляла пришедшие данные с данными в бд. И там учитываются как сокращения в названиях компаний/адресах/..., так и ошибки, в которых учитывался допуск (1-3 знака) и разные окончания (например, если использовалось множественное число). Если всё совпало, то можно процессить ордер, иначе - в ручной разбор.
Чтобы проверить качество можно прогнать алгоритм через старые закрытые ордера по входящим данным и сравнить результат с тем, что запроцессилось раньше.
Всегда остаётся определённый % не верного результата, но он минимален.
Также параллельно вычищали мусор из базы данных и делали более удобным и простым оформление ордера на стороне дистрибьютора. По возможности добавляли им доступ к идентификаторам (внешним), которые позволяли точно идентифицировать пользователя.
Но в целом, всё сводится к тому, что есть процесс до закрытия ордера, в котором данные ордера могут обогащаться, и момент закрытия ордера, в который надо точно знать кто и что купил.
Надеюсь вам этот опыт поможет.