Задать вопрос
  • Можно ли пропустить изучение Jenkins и заменить его Ansible?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не погружаясь сильно глубоко. Вот что пишет вики.

    Jenkins is an open source automation server.


    Ansible is a suite of software tools that enables infrastructure as code. It is open-source and the suite includes software provisioning, configuration management, and application deployment functionality.


    Вот такие пироги. Разные это вещи. Сосбно автор может пропускать что угодно. Да и вообще зачем изучать что-то без понятной мотивации? Вот будет вакансия на проект. Там будет описано что куда. Какие skills нужны.
    Ответ написан
    Комментировать
  • Как максимально оптимизировать (ужать) много картинок JPG (JPEG) с сохранением качества, особенно CMYK?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно. Если это одноразовое действие - то можно написать наверное софт который просто вызывает imagemagic и все сделает. Но у вас - сайт. И это должно работать на основе некого процесса верстки контента.
    Дизайнер закинул картинку. Дальше она сжалась и создалось штук 5 уровней thumnails для preview. Вот второй сценарий - более интересен к разработке.
    Ответ написан
    Комментировать
  • Существует ли тип данных List или Array в MySQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Обычно реляционная алгебра рассматривает коллекции внутри ячеек как потенциальную проблему. Проблему денормализации. Если скин у тебя это сложный объект с другими свойствами и эти свойства вдруг (!) внезапно обрастают связями с другими сущностями БД - то тогда считается что БД плохо спроектирована. Невозможно отслеживать целостность. Или представь что какой-то скин ты решил удалить из системы. Тебе придется сделать поиск всех коллекций всех плееров и поискать его и удалить. И те-же проблемы с вставкой и обновлением.

    Но если ты никогда этого не будешь делать и тебе плевать на реляционные связи от скинов к другим элементам системы - то тогда можешь хранить в JSON. MySQL его поддерживает в угоду современным трендами на NoSQL.

    Хотя тема NoSQL - гораздо более обширная и сложная чем просто денормализация. Про нее можно говорить часами.
    Ответ написан
  • Какой можно применить алгоритм для хранение индекса для 50 миллиардов записей в golang?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Немного бухгалтерии. Если взять по максимуму.

    Размер одной записи должен быть порядка 60 + 32 +8 = 100 символов (байт для простоты)

    При 50 млрд записей объем хранимых данных должен быть порядка

    50 000 000 000 * 100 = 5 000 000 000 000 = 5 триллионов байт.

    В дисковом хранении это будет примерно 4.5 терабайта. Задачка для in-memory неподъемная. Нужен диск + мемори.

    Если я там где-то ошибся в расчетах - то только в средних значениях. Если подставить не максимумы а среднее - то цифры будут поскромнее. Но в любом случае - многовастенько для покупки памяти.

    Вобщем нужна дисковая БД которая встраивается в приложение. На требование менеджеров которые запретили использовать БД забейте. Они ничего не понимают. Делайте БД встраиваемую в приложение. В качестве таких (встраиваемых систем можно поробовать) LevelDb, BerkeleyDb, RocksDb. Они поддерживают индекс класса B+Tree и это даст возможность искать группы записей по одному ID. Для этого класса систем любую запись можно найти за 4-5 дисковых IOPS. Если какдый IOPS стоит 15 мс (это я так мерял свой собственный магнитный HDD) то любой поиск группы ключей для TTFB будет порядка 15 * 5 = 75 милисекунд. Ну если вы поставите SSD - то быстрее.

    По поводу предложений хранить в файлах. До того как обсуждать это - надо уяснить требования по времени отклика. Сколько секунд вы согласны ждать - насколько можно и партицировать (или шардировать ваш файл).
    В простейшем случае мы делим большой CSV файл на 512 partitions по хешу от ID и получаем соотв время фулл-скана всего файла поделенное на 512. Дальше - играйтесь с этим параметром партишенинга выводя его на доступный уровень отклика. Из недостатков - будет россыпь файлов. Надо почиать документацию на вашу файловую систему (ext4?) и тюнить ее так чтоб она не сдохла от такого числа inodes.

    Я поддержу оба сценария. И с встраиваемой БД и с файлами. Но с БД надежнее т.к. есть транзакции а файлы у вас могут быть в крешнутом состоянии долго. И вы об этом ничего знать не будете.

    По поводу Parquet. Не взлетит. Скорее всего индекс по данному типу файла - это совсем не то что вкладывают туда релационные системы. Обычно Parquet/Orc/Delta вкладывают в индекс смысл - отбрасывания тех полосок данных (stripes) которые бесполезны при чтении всего файла. Такой индес - обычно просто либо range-признак либо карта Блума. И в случае с range - дает эффект на сортированных данных. Для прочих - будет бесполезно т.к. фулл-скан все равно обеспечен. А если фулл-скан то зачем тогда вообще индекс.

    Вобщем для дизайна архитектуры нам нужны цифры. Средние длины по колонкам. И я-бы еще запросил кардинальность по полю ID.
    Ответ написан
    7 комментариев
  • Что важно в процессоре больше для программирования, тактовая частота или количество ядер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    С 2005 года достигнут инженерный предел наращивания тактовой частоты. Грубо говоря, современные инфосистемы отказались от движения в ту сторону. Поэтому вопрос поставлен некорректно.

    Не что важно. А что мы вообще можем сделать в этой ситуации.
    Ответ написан
    Комментировать
  • Как написать запрос?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не знаю мне вот чего-то так режет глаза этот distinct.

    SELECT инструктор, дата, SUM(длительность)
    FROM ( SELECT DISTINCT инструктор, дата, начало, длительность
           FROM таблица ) AS алиас
    GROUP BY 1, 2


    Я рассуждаю так. Дата-начало-длительность - это величины. Их нельзя унифицировать. Инструкторы - можно. Но не в комбинации с измерениями. Если у вас данные - грязные - то почистите их и добавте unique. Просто гонять каждый раз унификацию - это как фильтровать фильтрованную воду. Дурная работа вобщемто.
    Ответ написан
    Комментировать
  • Как получить определенное число в цикле с шагом?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    @tailrec
    def getDrinksWithStep(g : Int, step : Int, i : Int = 1, r : Int = 0) : Int = 
      if (i <= g) getDrinksWithStep(g, step, i + step, r + i) else r
    Ответ написан
    Комментировать
  • Отслеживание новых записей в бд в реальном времени?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Богдан. Обычно реляционные БД так не работают. Клиент - спрашивает. БД отвечает. Обратное не делают обычно.

    Отслеживание новых записей - это технически сложная задача потому что нужен буфер и умножение этого буфера на количество подписчиков. Тоесть приходим к полноценной MQ-системе. Обычно БД конфигурируется так что лишних ресурсов на это нет. Да и зачем БД рассылвать уведомления когда это задача сервера приложений.

    Если вы все таки решили спрашивать на зарубежных форумах - то не говорите слово MySQL/SQL. Пишите просто - информационная система и хранилище. Пускай вам советуют с чистого листа как это надо дизайнить.
    Ответ написан
  • Game dev/mobile в России. Как стать разработчиком?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю насчет россии. Но я-бы шел сразу в корпорацию. Любой ценой. На позицию подмастерья. Менти. Или самого младшего джуна. Через пол-года резюме улучшается и уже можно быть твердым джуном. И подыскивать новое место. Зарабатывать одному - утопия. Нужно быть адски продуктивным чтобы покрыть риски этого нестабильного рынка работ. Тоесть фактически работать 2х или 3х больше чтобы кушать. Нужно очень много коммуницировать с опытными. Звучит неприяно - но надо им ездить по ушам. Сначала вас буду гнать и ругать. Но это не имеет значения. Запоминайте все. Каждое слово старшего в команде разработки во много раз ценнее форумов или онлайн тренингов. Тренинги - это седьмая вода на киселе. Они продают не то что вам надо. А то что надо - только в той корпорации где вы сидите. Я-бы отдал больше денег за 1 час беседы с экспертов чем за 30 дней каких-то курсов. Курсы вообще редко дают то что нужно. Они уже давно стали просто индустрией заработка.

    Готовые проекты выкладывайте в публичный доступ. В них пока нет никакой ценности. Не бойтесь что украдут. Современный опенсорц - это кладбище ненужного никому кода. Код вообще не важен. А важна всегда идея + человек который ее знает и может развивать.
    Ответ написан
    Комментировать
  • Какая у меня специализация?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут самое интересное это разработка на Python. Опиши какие библиотеки использовал. С точки зрения рекрутера могут быть интересны такие слова как pandas, bigdata, spark, ML e.t.c. Или также test automation e.t.c. И девопс тоже. Если деплоил в какие-то облака - то опиши в какие.

    Боты с моей точки зрения не имеют никакой ценности для крупного бизнеса. Но нужно повернуть твои знания под правильным углом. Где-то похвастаться. Где-то приврать. Детально все равно не проверят.
    Ответ написан
  • Как сделать запись на основе предыдущей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почитай про
    SELECT FOR UDPATE ...

    Точно не помню но кажется не все типы таблиц его проддерживают. Проверь что у тебя innodb.
    Ответ написан
    Комментировать
  • Kafka Consumer re-consume незакомиченные сообщения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Консюмер вычитывает сообщение, передает его на обработку и если происходит ошибка , то кафка консьюмер откатывает и оставляет незакомиченным.

    Покажи код консьюмера. Это твоя логика. И ты решаешь где тебе делать фиксацию пачки и где не делать.
    Ответ написан
  • Как можно реализовать получение имя вызывающего класса?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Посмотри что вернет

    Thread.currentThread().getStackTrace()

    но не увлекайся и не используй в проде никогда. А то будешь бит коллегами и притом с понижением в звании.
    Ответ написан
    3 комментария
  • Как связать WEB UI с Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не нужен тебе никакой фласк и джанго. У тебя - задача мониторинга процесса. Мониторинг решается через Graphana например. Она всеядная. Можешь писать свою телеметрию в текстовый лог-файл. И Графана просто будет его показывать графиком или числами или кругами вобщем посмотри сам. Там много виджетов.

    Помимо графаны есть еще масса способов отобразить статус процесса. Но я использовал только Гр.
    Ответ написан
  • Как правильно указать тип?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вынеси всю одинаковость в новую функцию. Обработки ошибок и прочее. А кастомные вещи пускай будут в специальных функциях TaskLocal, TaskRemote. Там у тебя останется 5 строчек (я так думаю).
    Ответ написан
    Комментировать
  • Как разархивировать rar файл при помощи питона?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего ты пытаешься в кластере Databricks найти архиватор rar. А его там нету.

    Вообще rar это плохая тема для биг-даты. Используйте лучше gzip, bzip2. Они есть везде. Кроме того фреймворк их поддержит из коробки.
    Ответ написан
    2 комментария
  • Какие существуют методы анализа связанности тегов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри Collaborative Filtering https://spark.apache.org/docs/latest/ml-collaborat...
    Ответ написан
    Комментировать
  • Как правильно распределить хранение комментариев?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужно материализовать ответы. И класть их на быстрое хранилище рядом с кешом типа nginx.
    Ответ написан
  • Торрент тихий убийца ссд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современные ssd имеют большой мото-ресурс. Скорее всего они будут убиты чем угодно но не торрентом.

    Убивают их очень активные "пишущие системы". Базы данных с WAL, и все что генерирует логи и просто файлы.

    У тебя что сервер?
    Ответ написан
    2 комментария
  • Как автоматизировать выполнение sql-запросов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вам определенно нужен девопс который автоматизирует вам выполнение ваших скриптов по календарю. Добавит дашборды с графиками и прочее.

    DataGrip насколько я понимаю это среда разработки. Тоесть она активна пока у вас крышка ноутбука отрыта. Закрыли - всё. Капец все планам.

    Поэтому девопс и еще раз девопс.
    Ответ написан
    Комментировать