Skip to content

Proposal: Ratios-preserving deduplication #22

@elephantum

Description

@elephantum

Проблема

Текущая реализация дедупликации контента фида приводит к тому, что оригинальные требования (соотношение субфидов, фиксированные места позиционного мержера) могут не выполняться.

Почему так?

Текущая архитектура взаимодействия субфидов и мержеров - жадная (eager), то есть пытается материализовать результаты сразу же, на каждом узле выполнения. Это самая простая для реализации модель, но она конфликтует с идеей дедупликации и приводит к оригинальной проблеме.

Как починить?

Хорошим решением будет переход от однопроходного метода к двухпроходному:

1-й проход: формирование фида в терминах плейсхолдеров конечных субфидов, но без материализации конкретных объектов.
2-й проход: заполнение плейсхолдеров с одновременной дедупликацией.

Пример

Пусть будет два субфида: A = [1, 2, 3, 4, 5, 6, ...] и B = [1, 3, 5, 7, 9, ...], которые должны быть перемешаны 50/50 с дедупликацией.

1-й проход формирует ленту плейсхолдеров [A, B, A, B, A, B, ...]

2-й проход берет итераторы по каждому субфиду и ленту плейсхолдеров и материализует финальную ленту с одновременной дедупликацией

  • A: 1
  • B (пропуск 1): 3
  • A: 2
  • B: 5
  • A (пропуск 3): 4
  • B: 7
  • A (пропуск 5): 6
  • ...

Реализация

Кажется, что ноды по поведению должны разделиться на eager (те, которые схлопывают плейсхолдеры в материализованную ленту) и lazy, которые составляют ленту из плейсхолдеров.

Корневая нода, сессия просмотра, и дедупликация - eager, остальные lazy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions