Я вот задал вопрос ИИ и получил ответ, что вроде бы точность агрегации даже при дубликатах можно обеспечить, если агрегировать не в лоб а с подзапросами и группировкой. То есть мы говорим кажется не о том что нельзя загонять данные напрямую в кликхаус под угрозой потери точности, а о том что аналитика требует определенного нетипичного подхода? Помнится в System Design II предлагают вторым вариантом Кликхаус для агрегации кликов по рекламе, несмотря на то что они же в этом разделе ранее писали что дубликаты недопустимы и отсутствие точности приведет к разнице в миллионы тугриков.
На практике же подобные нюансы с отсутствием строгой консистентности могут приводить к вполне реальным проблемам, среди которых:
отсутствие четкого понимания, вставились данные или нет, особенно при распределенной вставке;
появление дубликатов от ретраев со сбоями;
возможные разные результаты на разных репликах (eventual consistency!) — если есть балансировщик, можно записать данные в одну реплику, а через секунду обратиться к другой и понять, что данных нет;
неатомарность операций на разных шардах.
Таким образом, за сохранением консистентности в ClickHouse надо следить тщательно и непрерывно.
Но если БД за этим сама следить не умеет, неужели это все ложится на приложение? Периодически нужно сканировать БД на предмет дублирования записей, например?? (Еще поди сделай это, ведь для этого нужно забыть что у нас кластер и работать изолированно с отдельными репликами...)
Еще мне понравилось "в одинаковом виде" - то есть данные могли быть еще и в неодинаковом виде приняты в разные реплики?
Более того, надо помнить, что, если какая‑то партиция не оптимизирована (например, из‑за высокой нагрузки), ее данные остаются в виде мелких кусочков. Но при запросах, охватывающих несколько партиций, система обрабатывает оптимизированные и неоптимизированные данные по‑разному — это может привести к ошибкам в движках Collapsing MergeTree или Replacing MergeTree: дубликаты не удалятся, старые версии записей сохранятся, а агрегации дадут неверный результат.
Но... выглядит так, что любые партиции, в которые мы активно пишем, могут давать галлюцинации в агрегации, а то и вовсе дублировать записи и терять данные? Что же это за БД такая, если ее основная задача как OLAP - делать аналитику - решается неточно, и даже с хранением добавляемых данных у нее проблемы? Наверное, есть какой-то способ сделать так, чтобы все работало корректно, иначе бы ее не использовали так широко?
Зп мидла выросшему джуну организация готова платить, в перспективе. Тем более вы знаете как это работает - часто рост зарплат внутри формально есть, но медленнее чем при найме с рынка. И работодателю это какое-то время сходит с рук, пару лет все будут плюс минус довольны, может и дольше. У нас тут есть ребята, кому по 3 года вовсе зп не повышали - и работают. Все разные. С сеньором на зп джуна - это история точно не на пару лет, разве что он за два года не сможет найти предложение интереснее. Ну, я вижу так.
К тому же часто дело вообще не в скорости работы. Если это стартап - там да, надо адово перформить, и там может сработать аргумент "сеньор за полгода сделает больше и лучше чем этот джун за два". Но туда джунов вряд ли и искать будут, или хотя бы не только их. А если это вялотекущее сопровождение, им и не нужна высокая производительность, так что это перестает быть преимуществом. Они возможно даже не смогут принести сеньору за полгода столько работы, чтобы он смог отперформить "на 2 года джуна".
И не будем забывать, что в этой ситуации +1 счастливый (на самом деле грустный) сеньор это -1 пытающийся найти работу джун, а они тоже люди и тоже имеют право на работу. Вакансию сделали специально для них, и отбивать ее нецелевым использованием как-то сомнительно.
А что насчет другого кейса оверквалификации - когда на сеньорскую позицию претендуют с 20-летним опытом? При этом позиция может быть обозначена как «3-6 лет». В этом случае 20 тоже воспринимается как перебор? Если да, то мне интересно, чем тогда должен этот человек заниматься «по-правильному»? Тимлидство это не технический трек в основном, а техлидство - либо тоже уход в менеджмент, либо мало отличается от сеньорства; а архитектор это тоже не для всех трек, диаграммы эти рисовать и про реализацию говорить что это все приклад и не моя зона ответственности.
Прикольно, а мемасики Гоблина-то чем не угодили? Не, я сейчас посмотрел, мне не понравились. Но. То есть когда у нас в команде молодежь (и не только!) присылала в неформальные чаты какие-то непонятные стикеры, это, сталбыть, нормально, зато Гоблин - это кринж, тоже расшатывающий команду? :)
Есть в моей зоне ответственности сейчас один сеньор, присылающий периодически какие-то тоже странные картинки для выражения эмоций. Ну присылает и присылает, у меня не возникает желания его попросить на выход, общаться-то с ним при этом можно. Видимо, все же не в мемах дело и они просто так под раздачу попали)
Знаете, почему я начал немного защищать хр? Именно людей а не политику даже. Потому что я например однажды решил что могу гораздо интереснее составить вакансию. Составил, пришли интересные люди. Я их по рефералке отправил к хр. Все отсеялись. Я думаю - ну дебилы, даже тех кого привел растеряли. Оказалось: кто-то после интервью резко повышал требования, кто-то уже принял другой оффер, ну в общем из человек 10 только 2 были явным факапом нашего процесса (и то не лично самого хр). Так что не факт что это только они такие а там внутри уже коллектив нормальный :) как бы еще не наоборот )
А представьте, что у этого хр есть босс который ему говорит делать именно так. Так что дело не в тупости солдат, а в стратегии генералов. А чем объясняется она, ну не знаю. Можно спросить ии о возможных причинах, он много предложит. Самое первое, если тебе достаточно 6-летнего сеньора, а придет 10-летний, он вероятно попросит больше денег, а все экономят. А если он не попросит больше денег то значит с ним что-то не так обязательно ))
Ну да, я начал-то конечно лет в 15, но считал только профессиональную работу, а это уже с 20.
Тоже думаю про возраст в том числе, поэкспериментирую. Но в целом не хочу гадать а хочу собрать статистику, иначе так слишком много экспериментов нужны будут, надо же еще работать и жить :)
Кстати, если дело в возрасте, это и объясняет непрекращающийся кадровый голод. Уже не раз писали, что в стране просто недостаточно молодых разработчиков, чтобы закрыть даже нынешний уровень потребностей. (Видимо это считая даже вчерашних кальянщиков, которые в 2020+ вкатились в айти)
Ну и в принципе, не всем же после 20 лет работы становиться Нортонами, я в плане навыков разработки. Явно значительная часть это просто квалифицированные специалисты. Это не тот уровень, когда ты просто находишь любого разраба или хр из любой компании и говоришь «мне у вас нравится вот это направление» и тебе сразу находят место :) но это и не значит что ты 20 лет фигней страдал, что за достигаторство такое :)
Ой, чуть же не забыл рассказать )) я же так пробовал - немного подучил и нарисовал что уже перешел в проект с этим языком. Но не стал наглеть и рисовать год. Думал - рекрутеру честно расскажу что этого нет. На деле никто не заинтересовался (видно 3 месяца опыта так же не цепляют как 0), поэтому не пришлось. Зато краснеть пришлось потом))) когда кто-то ко мне постучал через полгода с этим резюме, ожидая что теперь уже у меня почти год опыта за плечами :) что конечно вряд ли может быть дальше от реальности) и вот сидишь и объясняешь свою махинацию, блин
К сожалению, моя проверка показывает, что тимлид, если ему все же передадут заявку, как правило ответит так же. Все разные, конечно, но вот например про контору X мне рекрутер сказал, что там в основном одна команда готова рассматривать свич, а остальные - нет. В конторе Y примерно та же ситуация - две команды потенциально готовы, остальные нет. Конечно, шанс с одной командой (если именно у нее есть вакансии) это гораздо лучше, чем отказ совсем без рассмотрения, но вменяемые рекрутеры в этих случаях и не отсеивают резюме зря. Так что тут опять-таки не стоит обвинять в узколобости именно HR :) Это просто нам иногда не хочется верить, что они всего лишь выполняют заказ, потому что "не может быть, чтобы тимлид, будучи адекватным разработчиком, не смотрел на это так же как я". And yet...
Отдельный шок - это что я постепенно начинаю верить, что и дурацкие составленные вакансии в некоторых конторах - тоже не плод фантазии рекрутеров, а им реально этот безымянный ужас заказала команда... Может, видели, например когда идет текстовка на 2 страницы и в ней ни слова о проекте.
А вот не сработает. Конечно пройти скажем алгосекцию на новом языке можно, если подучить его сначала, а не просто рисовать опыт. Но в нормальных интервью будут вопросы, подразумевающие знание более сложных аспектов языка, чем два цикла написать и поработать с Map. Спросят про отладку, профилирование, системы сборки всякие. И ответы неминуемо выдадут недостаток практики - если конечно не постараться еще и реалистичные pet-проекты поделать, пока учишь. Ну а если прям реально успел всесторонне освоить - тогда да, можно и нарисовать =)
Сейчас подумал, что не знаю как с этим у зумеров, а у меня часть прежних коллег в скайпе, часть в почте, часть была в слаке, и только с последних двух проектов - в телеге, и в телефонной книге тоже человек 5 от силы не считая нынешний проект :) так что одной сторей не обойдешься, придется трубить во все каналы ))
А нетворкинг, мне кажется, вы переоцениваете. Одно дело - если вы занимаетесь чем-то таким, о чем постоянно докладываете в сообществах. Или вы известный мейнтейнер хотя бы. Тогда вас может знать много людей. А если нет? Я знаю кучу классных ребят, которые ничего никогда не публиковали и не докладывали (по иронии, как раз у меня есть статьи и научные, и профессиональные, но это было давно). О них никто не знает, кроме бывших коллег :) конечно, это тоже нетворкинг. Но кто-то из моих бывших коллег - иностранцы, к кому-то я не пойду с просьбой, у кого-то нет сейчас вакансий или есть, но оплата ниже, а кто-то как раз устроил мне интервью, но это не работает так что у меня есть пачка standing offer из разных мест от знакомых и как только мне надоест одна работа, я просто выберу из них другую.
Тут несколько несвязанных тезисов. Да, конечно, некоторые вещи следовало сделать иначе, и возможно я был бы более нужным. А с другой стороны - это еще не факт, фантазировать много труда не нужно. Далее, я не писал, что ко мне не приходят вообще. Трижды приходили, сами. Еще раза три благодаря нетворкингу. От одного оффера отказался. И это коррелирует с другим вашим посылом, что ко мне бы приходили сами и я был бы в шоколаде. Надо, чтобы еще и приносили интересные тебе предложения :)
А самое главное, вы говорите что причина в этом, но каким образом эта причинность работает, по-вашему? «Если дядька с 20 годами опыта откликается на мою вакансию, то он точно неудачник»? Это любопытная позиция.
То есть после 1000 откликов я достаточно прокачаю скилл интервью, чтобы успешно их проходить. Звучит-то логично, пока не примешь во внимание, что я например дал 128 откликов подряд, за 3 месяца, и ни по одному из них ко мне никто не пришел - то есть интервью и не было. Что это значит: это значит, что даже если после 1000 откликов я и прокачаю этот навык на тех кто мне не очень нужен, все равно интересующие меня компании НЕ БУДУТ мне отвечать, как не отвечают сейчас. Так что успешное интервью (и оффер) мне светит с какими-то другими компаниями, которые мне опять-таки не нужны.
А эти рекомендации работают, когда система как раз более-менее работает как надо: на отклики приходят рекрутеры, знакомятся, назначают интервью, ты их проваливаешь или не проваливаешь. Если проблема в успешности прохождения интервью - то это можно прокачать, там хоть фидбек есть (хотя не всегда). Но реально интерью сами по себе превратились в редкость.
Джуна берут не для того чтобы он перформил - для того чтобы, наоборот, в него вкладывать и вырастить из него мидла. Если вместо джуна взять сеньора на полгода, он конечно выдаст больше результатов, но стратегическая задача не будет решена - вы потеряете полгода и не получите нужного вам мидла.
Я вот задал вопрос ИИ и получил ответ, что вроде бы точность агрегации даже при дубликатах можно обеспечить, если агрегировать не в лоб а с подзапросами и группировкой. То есть мы говорим кажется не о том что нельзя загонять данные напрямую в кликхаус под угрозой потери точности, а о том что аналитика требует определенного нетипичного подхода? Помнится в System Design II предлагают вторым вариантом Кликхаус для агрегации кликов по рекламе, несмотря на то что они же в этом разделе ранее писали что дубликаты недопустимы и отсутствие точности приведет к разнице в миллионы тугриков.
На практике же подобные нюансы с отсутствием строгой консистентности могут приводить к вполне реальным проблемам, среди которых:
отсутствие четкого понимания, вставились данные или нет, особенно при распределенной вставке;
появление дубликатов от ретраев со сбоями;
возможные разные результаты на разных репликах (eventual consistency!) — если есть балансировщик, можно записать данные в одну реплику, а через секунду обратиться к другой и понять, что данных нет;
неатомарность операций на разных шардах.
Таким образом, за сохранением консистентности в ClickHouse надо следить тщательно и непрерывно.
Но если БД за этим сама следить не умеет, неужели это все ложится на приложение? Периодически нужно сканировать БД на предмет дублирования записей, например?? (Еще поди сделай это, ведь для этого нужно забыть что у нас кластер и работать изолированно с отдельными репликами...)
Еще мне понравилось "в одинаковом виде" - то есть данные могли быть еще и в неодинаковом виде приняты в разные реплики?
Более того, надо помнить, что, если какая‑то партиция не оптимизирована (например, из‑за высокой нагрузки), ее данные остаются в виде мелких кусочков. Но при запросах, охватывающих несколько партиций, система обрабатывает оптимизированные и неоптимизированные данные по‑разному — это может привести к ошибкам в движках Collapsing MergeTree или Replacing MergeTree: дубликаты не удалятся, старые версии записей сохранятся, а агрегации дадут неверный результат.
Но... выглядит так, что любые партиции, в которые мы активно пишем, могут давать галлюцинации в агрегации, а то и вовсе дублировать записи и терять данные? Что же это за БД такая, если ее основная задача как OLAP - делать аналитику - решается неточно, и даже с хранением добавляемых данных у нее проблемы? Наверное, есть какой-то способ сделать так, чтобы все работало корректно, иначе бы ее не использовали так широко?
Зп мидла выросшему джуну организация готова платить, в перспективе. Тем более вы знаете как это работает - часто рост зарплат внутри формально есть, но медленнее чем при найме с рынка. И работодателю это какое-то время сходит с рук, пару лет все будут плюс минус довольны, может и дольше. У нас тут есть ребята, кому по 3 года вовсе зп не повышали - и работают. Все разные. С сеньором на зп джуна - это история точно не на пару лет, разве что он за два года не сможет найти предложение интереснее. Ну, я вижу так.
К тому же часто дело вообще не в скорости работы. Если это стартап - там да, надо адово перформить, и там может сработать аргумент "сеньор за полгода сделает больше и лучше чем этот джун за два". Но туда джунов вряд ли и искать будут, или хотя бы не только их. А если это вялотекущее сопровождение, им и не нужна высокая производительность, так что это перестает быть преимуществом. Они возможно даже не смогут принести сеньору за полгода столько работы, чтобы он смог отперформить "на 2 года джуна".
И не будем забывать, что в этой ситуации +1 счастливый (на самом деле грустный) сеньор это -1 пытающийся найти работу джун, а они тоже люди и тоже имеют право на работу. Вакансию сделали специально для них, и отбивать ее нецелевым использованием как-то сомнительно.
А что насчет другого кейса оверквалификации - когда на сеньорскую позицию претендуют с 20-летним опытом? При этом позиция может быть обозначена как «3-6 лет». В этом случае 20 тоже воспринимается как перебор? Если да, то мне интересно, чем тогда должен этот человек заниматься «по-правильному»? Тимлидство это не технический трек в основном, а техлидство - либо тоже уход в менеджмент, либо мало отличается от сеньорства; а архитектор это тоже не для всех трек, диаграммы эти рисовать и про реализацию говорить что это все приклад и не моя зона ответственности.
Прикольно, а мемасики Гоблина-то чем не угодили? Не, я сейчас посмотрел, мне не понравились. Но. То есть когда у нас в команде молодежь (и не только!) присылала в неформальные чаты какие-то непонятные стикеры, это, сталбыть, нормально, зато Гоблин - это кринж, тоже расшатывающий команду? :)
Есть в моей зоне ответственности сейчас один сеньор, присылающий периодически какие-то тоже странные картинки для выражения эмоций. Ну присылает и присылает, у меня не возникает желания его попросить на выход, общаться-то с ним при этом можно. Видимо, все же не в мемах дело и они просто так под раздачу попали)
(ответил, но удалил)
Знаете, почему я начал немного защищать хр? Именно людей а не политику даже. Потому что я например однажды решил что могу гораздо интереснее составить вакансию. Составил, пришли интересные люди. Я их по рефералке отправил к хр. Все отсеялись. Я думаю - ну дебилы, даже тех кого привел растеряли. Оказалось: кто-то после интервью резко повышал требования, кто-то уже принял другой оффер, ну в общем из человек 10 только 2 были явным факапом нашего процесса (и то не лично самого хр). Так что не факт что это только они такие а там внутри уже коллектив нормальный :) как бы еще не наоборот )
А представьте, что у этого хр есть босс который ему говорит делать именно так. Так что дело не в тупости солдат, а в стратегии генералов. А чем объясняется она, ну не знаю. Можно спросить ии о возможных причинах, он много предложит. Самое первое, если тебе достаточно 6-летнего сеньора, а придет 10-летний, он вероятно попросит больше денег, а все экономят. А если он не попросит больше денег то значит с ним что-то не так обязательно ))
Ну да, я начал-то конечно лет в 15, но считал только профессиональную работу, а это уже с 20.
Тоже думаю про возраст в том числе, поэкспериментирую. Но в целом не хочу гадать а хочу собрать статистику, иначе так слишком много экспериментов нужны будут, надо же еще работать и жить :)
Кстати, если дело в возрасте, это и объясняет непрекращающийся кадровый голод. Уже не раз писали, что в стране просто недостаточно молодых разработчиков, чтобы закрыть даже нынешний уровень потребностей. (Видимо это считая даже вчерашних кальянщиков, которые в 2020+ вкатились в айти)
Ну и в принципе, не всем же после 20 лет работы становиться Нортонами, я в плане навыков разработки. Явно значительная часть это просто квалифицированные специалисты. Это не тот уровень, когда ты просто находишь любого разраба или хр из любой компании и говоришь «мне у вас нравится вот это направление» и тебе сразу находят место :) но это и не значит что ты 20 лет фигней страдал, что за достигаторство такое :)
Ой, чуть же не забыл рассказать )) я же так пробовал - немного подучил и нарисовал что уже перешел в проект с этим языком. Но не стал наглеть и рисовать год. Думал - рекрутеру честно расскажу что этого нет. На деле никто не заинтересовался (видно 3 месяца опыта так же не цепляют как 0), поэтому не пришлось. Зато краснеть пришлось потом))) когда кто-то ко мне постучал через полгода с этим резюме, ожидая что теперь уже у меня почти год опыта за плечами :) что конечно вряд ли может быть дальше от реальности) и вот сидишь и объясняешь свою махинацию, блин
К сожалению, моя проверка показывает, что тимлид, если ему все же передадут заявку, как правило ответит так же. Все разные, конечно, но вот например про контору X мне рекрутер сказал, что там в основном одна команда готова рассматривать свич, а остальные - нет. В конторе Y примерно та же ситуация - две команды потенциально готовы, остальные нет. Конечно, шанс с одной командой (если именно у нее есть вакансии) это гораздо лучше, чем отказ совсем без рассмотрения, но вменяемые рекрутеры в этих случаях и не отсеивают резюме зря. Так что тут опять-таки не стоит обвинять в узколобости именно HR :) Это просто нам иногда не хочется верить, что они всего лишь выполняют заказ, потому что "не может быть, чтобы тимлид, будучи адекватным разработчиком, не смотрел на это так же как я". And yet...
Отдельный шок - это что я постепенно начинаю верить, что и дурацкие составленные вакансии в некоторых конторах - тоже не плод фантазии рекрутеров, а им реально этот безымянный ужас заказала команда... Может, видели, например когда идет текстовка на 2 страницы и в ней ни слова о проекте.
А вот не сработает. Конечно пройти скажем алгосекцию на новом языке можно, если подучить его сначала, а не просто рисовать опыт. Но в нормальных интервью будут вопросы, подразумевающие знание более сложных аспектов языка, чем два цикла написать и поработать с Map. Спросят про отладку, профилирование, системы сборки всякие. И ответы неминуемо выдадут недостаток практики - если конечно не постараться еще и реалистичные pet-проекты поделать, пока учишь. Ну а если прям реально успел всесторонне освоить - тогда да, можно и нарисовать =)
Сейчас подумал, что не знаю как с этим у зумеров, а у меня часть прежних коллег в скайпе, часть в почте, часть была в слаке, и только с последних двух проектов - в телеге, и в телефонной книге тоже человек 5 от силы не считая нынешний проект :) так что одной сторей не обойдешься, придется трубить во все каналы ))
А нетворкинг, мне кажется, вы переоцениваете. Одно дело - если вы занимаетесь чем-то таким, о чем постоянно докладываете в сообществах. Или вы известный мейнтейнер хотя бы. Тогда вас может знать много людей. А если нет? Я знаю кучу классных ребят, которые ничего никогда не публиковали и не докладывали (по иронии, как раз у меня есть статьи и научные, и профессиональные, но это было давно). О них никто не знает, кроме бывших коллег :) конечно, это тоже нетворкинг. Но кто-то из моих бывших коллег - иностранцы, к кому-то я не пойду с просьбой, у кого-то нет сейчас вакансий или есть, но оплата ниже, а кто-то как раз устроил мне интервью, но это не работает так что у меня есть пачка standing offer из разных мест от знакомых и как только мне надоест одна работа, я просто выберу из них другую.
Тут несколько несвязанных тезисов. Да, конечно, некоторые вещи следовало сделать иначе, и возможно я был бы более нужным. А с другой стороны - это еще не факт, фантазировать много труда не нужно. Далее, я не писал, что ко мне не приходят вообще. Трижды приходили, сами. Еще раза три благодаря нетворкингу. От одного оффера отказался. И это коррелирует с другим вашим посылом, что ко мне бы приходили сами и я был бы в шоколаде. Надо, чтобы еще и приносили интересные тебе предложения :)
А самое главное, вы говорите что причина в этом, но каким образом эта причинность работает, по-вашему? «Если дядька с 20 годами опыта откликается на мою вакансию, то он точно неудачник»? Это любопытная позиция.
На самом деле на горизонте полугода тоже сойдет. Но чтобы сравнивать с актуальным состоянием рынка - чем свежее, тем лучше.
То есть после 1000 откликов я достаточно прокачаю скилл интервью, чтобы успешно их проходить. Звучит-то логично, пока не примешь во внимание, что я например дал 128 откликов подряд, за 3 месяца, и ни по одному из них ко мне никто не пришел - то есть интервью и не было. Что это значит: это значит, что даже если после 1000 откликов я и прокачаю этот навык на тех кто мне не очень нужен, все равно интересующие меня компании НЕ БУДУТ мне отвечать, как не отвечают сейчас. Так что успешное интервью (и оффер) мне светит с какими-то другими компаниями, которые мне опять-таки не нужны.
А эти рекомендации работают, когда система как раз более-менее работает как надо: на отклики приходят рекрутеры, знакомятся, назначают интервью, ты их проваливаешь или не проваливаешь. Если проблема в успешности прохождения интервью - то это можно прокачать, там хоть фидбек есть (хотя не всегда). Но реально интерью сами по себе превратились в редкость.
Джуна берут не для того чтобы он перформил - для того чтобы, наоборот, в него вкладывать и вырастить из него мидла. Если вместо джуна взять сеньора на полгода, он конечно выдаст больше результатов, но стратегическая задача не будет решена - вы потеряете полгода и не получите нужного вам мидла.