Библиотека для потокового сравнения больших структурированных документов. Вместо мегабайта JSON по сети едет полтора килобайта изменений.
Как это устроено Внедрение
Типичная история: сервис раз в секунду отдаёт клиенту полное состояние на 900 КБ, из которого меняются три поля.
На наших нагрузках — падение объёма в 40–200 раз в зависимости от того, насколько документ статичен.
Diff считается по мере поступления данных, ждать конца документа не нужно.
Потребление зависит от глубины вложенности, а не от размера документа.
Документ 1,2 МБ, меняется 0,4% полей. Одно ядро.
| Подход | Байт по сети | Время | Память |
|---|---|---|---|
| Полное состояние | 1 248 000 | 2 мс | 3,6 МБ |
| JSON Patch (после разбора) | 6 100 | 31 мс | 9,1 МБ |
| deltamesh | 5 400 | 7 мс | 1,2 МБ |