User avatar

Коллеги, положим. у вас есть задача отслеживать небольшие изменения в больших объёмах данных. Вообразите для примера ежедневный список запросов к 100k URLs; со вчера какие-то стали отдавать 404 или 500, какие-то — наоборот, и таких изменений — ну, полдесятка. Какой существующий инструмент вы возьмёте, чтобы генерировать ежедневный отчёт о таких изменениях? (Вопрос со звёздочкой: а если меняющиеся данные — не одно число, а небольшая структура, типа пары строк json, какой инструмент вы возьмёте, чтоб он умел показать изменения в этой структуре?) #nargery

Comment

Также, разумеется, если мне нужна история изменений за 10 дней, я не хочу хранить данные за 10 дней, они на 99% одинаковые. Хочется хранить только дельты.

 ‎· 9000
Comment

очевидный вариант sort+diff

 ‎· misha
Comment

^^ как минимум данные за один день хранить придётся

 ‎· sober, steady, good provider 1
Comment

По диффам жсона существуют библиотеки для любого языка, но обвязку тебе, видимо, придётся самому дописать. Алсо git + plaintext?

 ‎· sober, steady, good provider
Comment

^ ровно потому не git, что там нет нужной модели, там про исходники.

 ‎· 9000
Comment

pip search jsondiff что-то выплевывает

 ‎· ridiculous crowdfunded nonsense
Comment

Ага, то есть никакого очевидного инструмента (класса "сюда залить данные, отсюда слить диффы, здесь получить человекочитаемый отчёт") я не упустил. Остаётся продать эту идею начальству :) Всем спасибо!

 ‎· 9000 1
Comment

Если вдруг твоё решение (as in solution, not decision) будет способно перемалывать не только 100К, а и как-то очень намного больше, — поделишься? У меня болтается в баклоге аналогичная задача, до которой ещё не дошли руки.

 ‎· earlyadopter
Comment

@earlyadopter: ^ Вооот! У нас таких задачек накопилось n > 1, и я думаю заполучить management buy-in потратить пару недель на такой инструмент общего вида, а в идеале потом открыть исходники и прославиться ;)) Но вообще тут всё из готовых компонент можно собрать минимальными усилиями: диффилки, key-value store, rest interface, template engine для приятных глазу отчётов.

 ‎· 9000
Comment

ну это сотня строк, может меньше, ты бы уже написал и все вместо прокрастинации. ну ладно, чуть больше, но полдня работы максимум.

 ‎· for hysterical raisins
Comment

(http://thume.ca/2017/06/17/tree-diffing/)

 ‎· адский хардлайн в засаде 2
Comment

@ayoshi: да я так и сделаю на досуге :) но там, конечно, 100 строк в предельно спартанском MVP, дальше накопится.

 ‎· 9000
Comment

^^^ мне сравнивать надо если не терабайты каждую неделю, то сотни гигабайт. :(

 ‎· earlyadopter
Comment

^ в случае распределённой БД вроде Кассандры или редиса, или даже sharded SQL database, проблем быть не должно.

 ‎· 9000
Comment

@9000: ну как прогресс? есть инструмент, исходники и прославиться?

 ‎· Je suis токсичная среда
Comment

^ разумеется, вроде нашли этот велосипед готовым. посмотрим, как поедет.

 ‎· 9000 1
Comment

^ А вот и нет. Эти друзья дали мне spark cluster и сказали: ну ведь твоя задача решается на нём в 20 тривиальных строчек? Ну да, решается. Всего 2 недели на получение нужных разрешений, въезжание в спарк и пр., и таки да, теперь всё просто. Изящная деталь: сначала у меня не получалось ничего сохранять в таблицы, ошибка формата и всё. Промучавшись день, я пошёл к владельцам кластера с вопросом. Они сказали: ха, да тебе дали доступ не к тому кластеру! Этот read-only для аналитики, а тебе нужен вон тот.

 ‎· 9000 1

1 2 3 4 5 6 7 8 9 10