Как стать автором
Обновить
13
0
Evgeniy Rasyuk @EvgeniyRasyuk

многомерные базы данных, DWH

Отправить сообщение

Data-Oriented Design (или почему, используя ООП, вы, возможно, стреляете себе в ногу)

Время на прочтение10 мин
Количество просмотров35K
image

Представьте себе такую картину: близится конец цикла разработки, ваша игра едва ползает, но в профайлере вы не можете найти очевидных проблемных мест. Кто же виноват? Паттерны произвольного доступа к памяти и постоянные промахи кеша. Пытаясь повысить производительность, вы пробуете распараллелить части кода, но это стоит героических усилий, и в конечном итоге из-за всей синхронизации, которую пришлось добавить, ускорение едва заметно. К тому же код настолько сложен, что исправление багов вызывает ещё больше проблем, и мысль о добавлении новых возможностей сразу отбрасывается. Звучит знакомо?

Такое развитие событий довольно точно описывает почти каждую игру, в разработке которой я участвовал на протяжении последних десяти лет. Причины заключаются не в языках программирования и не в инструментах разработки, и даже не в отсутствии дисциплины. По моему опыту, в большой степени в этом стоит винить объектно-ориентированное программирование (ООП) и окружающую его культуру. ООП может не помогать, а мешать вашим проектам!
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии18

Из Oracle да в Postgres

Время на прочтение10 мин
Количество просмотров70K
Так уж случилось, что с Oracle организация наша работает давно и плотно. Сам я познакомился с Oracle Database ещё во времена 6-ой версии и, с тех пор, какого либо дискомфорта не испытывал. Всё испортили рыночные отношения. С недавних пор, мы начали замечать, что Заказчик гораздо благосклоннее смотрит на наши проекты если в них используются бесплатные СУБД. О портации одного из таких проектов и будет мой рассказ... 
Читать дальше →
Всего голосов 60: ↑57 и ↓3+54
Комментарии45

Как ускорить расчет витрин с помощью материализаций

Время на прочтение6 мин
Количество просмотров3.4K

Привет! Меня зовут Антон Поляков, и я разрабатываю аналитическое хранилище данных и ELT-процессы в ManyChat

Несколько лет назад мы выбрали Snowflake как сервис для нашей дата-платформы. С ростом объемов данных до сотен миллионов строк (спойлер: а затем и до десятков миллиардов), мы задались вопросом: «Как тратить меньше времени на расчет запросов для ежедневной отчетности?». Идеальным вариантом было использование материализованных представлений, позволяющих обращаться к предварительно вычисленным результатам расчета витрин гораздо быстрее, чем к исходным данным.

Мы могли отдать управление нашим пайплайном таким популярным сегодня инструментам для трансформации данных, как, например, dbt, Matillion или Dataform. Однако, в начале 2020 года ни у одного из них не было возможности тонкой кастомизации под нужды Snowflake и ManyChat. К тому же, нам не хотелось платить за еще один сторонний инструмент. Так, мы приняли решение изобрести собственный велосипед для работы с материализацией данных. Именно об этом я сегодня и расскажу.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Snowflake, Anchor Model, ELT и как с этим жить

Время на прочтение15 мин
Количество просмотров13K
Привет! Меня зовут Антон Поляков, и я разрабатываю аналитическое хранилище данных и ELT-процессы в ManyChat. В настоящий момент в мире больших данных существуют несколько основных игроков, на которых обращают внимание при выборе инструментария и подходов к работе аналитических систем. Сегодня я расскажу вам, как мы решили отклониться от скучных классических OLAP-решений в виде Vertica или Exasol и попробовать редкую, но очень привлекательную облачную DWaaS (Data Warehouse as a Service) Snowflake в качестве основы для нашего хранилища.

С самого начала перед нами встал вопрос о выборе инструментов для работы с БД и построении ELT-процессов. Мы не хотели использовать громоздкие и привычные всем готовые решения вроде Airflow или NiFi и пошли по пути тонкой кастомизации. Это был затяжной прыжок в неизвестность, который пока продолжается и вполне успешно.

Под катом я расскажу про архитектуру нашего аналитического хранилища и покажу, каким образом мы производим загрузку, обработку и трансформацию данных.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии8

Принципы Solid и как они помогают сделать код лучше

Время на прочтение10 мин
Количество просмотров25K

Про принципы Solid написано немало, в том числе на Хабре. Показывали в картинках, рассказывали на примерах.  

Так чем же будет отличаться эта статья, спросите вы? А мы скажем: подходом. Сначала мы расскажем про ситуации, которые порой возникают на проектах, как код разрастается, становится сложнее и как сделать так, чтобы этот самый код не потерял в качестве и был читаем. 

Читать далее
Всего голосов 12: ↑8 и ↓4+4
Комментарии14

Нормально разбираемся в Нормальном распределении

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров33K

Интуитивное понимание Нормального распределения

Читать далее
Всего голосов 53: ↑51 и ↓2+49
Комментарии14

Выбираем формат хранения данных в экосистеме Hadoop

Время на прочтение5 мин
Количество просмотров5.3K

Привет, %username%! Меня зовут Кирилл Фурзанов, я Data Scientist в Сбере, участник профессионального сообщества NTA. При формировании витрин данных и датасетов в экосистеме Hadoop одним из важных вопросов является выбор оптимального способа хранения данных в hdfs. Рассмотрим один из важных вопросов при создании витрины – выбор соответствующего формата файла для хранения.

Читать далее
Всего голосов 6: ↑3 и ↓30
Комментарии11

Java и Linux — особенности эксплуатации

Время на прочтение23 мин
Количество просмотров60K
Java — очень распространённая платформа, на ней пишут очень разные вещи, начиная от Big Data, заканчивая микросервисами, монолитами, enterprise и прочим. И, как правило, всё это развёртывают на Linux серверах. При этом, соответственно, те люди, которые пишут на Java, зачастую делают это совсем на других операционных системах. Там они:

  • пишут код;
  • отлаживают, тестируют;
  • после этого упаковывают в jar;
  • отправляют на Linux, и оно работает.

В том, что оно работает, нет особой магии. Но это приводит к тому, что такие разработчики немножечко «засахариваются» в своём мире кроссплатформенности и не очень хотят разбираться, а как оно на самом деле работает в реальной операционной системе.



С другой стороны, есть те, кто занимается администрированием серверов, на их сервера устанавливают JVM, отправляют jar и war-файлы, а с точки зрения мира Linux все это:

  • чужеродное;
  • проприетарное;
  • собирается не из исходников;
  • поставляется какими-то jar-архивами;
  • «отъедает» всю память на сервере;
  • вообще, ведёт себя не по-человечески.

Цель доклада Алексея Рагозина на Highload++, расшифровка которого идет далее, была в том, чтобы рассказать особенности Java для «линуксоидов» и, соответственно, Linux — Java-разработчикам.
Всего голосов 55: ↑53 и ↓2+51
Комментарии18

Побег из гнезда успеха или Проблемы больших компаний

Время на прочтение9 мин
Количество просмотров59K
Привет, Хабр! Говорят, чистосердечное признание смягчает наказание. Каюсь — большая часть статьи будет откровенным копипастом чужого текста. Прошу модераторов не судить строго и считать огромной цитатой. Потому что лучше не скажешь. Потому что я, вы, ты, читатель, — все мы там были или можем быть. В больших межгалактических корпорациях компаниях, которые заманивают офисами, всевозможными плюшками из рога изобилия, самокатами в коридорах и прочими релакс-капсулами, но редко говорят, что будет взамен. А взамен будут бесконечные совещания, легаси, инерция и… мать его, одинокое ощущение себя маленьким винтиком какой-то адовой машины. Начну со своей истории — в одном абзаце. А потом — просто откровенная бомба — текст, каждое слово которого крепко отозвалось во мне, вроде суровом дядьке.


Читать дальше →
Всего голосов 200: ↑193 и ↓7+186
Комментарии55

Exasol: опыт использования в Badoo

Время на прочтение10 мин
Количество просмотров17K
Exasol — это современная высокопроизводительная проприетарная СУБД для аналитики. Ее прямые конкуренты: HP Vertica, Teradata, Redshift, BigQuery. Они широко освещены в Рунете и на Хабре, в то время как про Exasol на русском языке нет почти ни слова. Нам бы хотелось исправить эту ситуацию и поделиться опытом практического использования СУБД в компании Badoo.

Exasol базируется на трех основных концепциях:

1. Массивно-параллельная архитектура (англ. massive parallel processing, MPP)


SQL-запросы выполняются параллельно на всех нодах, максимально используя все доступные ресурсы: ядра процессоров, память, диски, сеть. Понятие «мастер ноды» отсутствует — все серверы в системе равнозначны.

Отдельные стадии выполнения одного запроса также могут идти параллельно. При этом частично рассчитанные результаты передаются в следующую стадию, не дожидаясь окончания предыдущей.

2. Колоночное хранение (англ. columnar store)


Exasol хранит данные в колоночной форме, а не в форме отдельных рядов, как в классических СУБД. Каждая колонка хранится отдельно, разделяется на большие блоки, сортирируется, сжимается и равномерно распределяется по всем нодам.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии24

Любопытные и неочевидные особенности при работе со Snowflake

Время на прочтение5 мин
Количество просмотров4K

Без долгих вступлений, сразу к делу.

Знаете ли вы, что в Snowflake можно создавать объекты с пустыми именами? Например: CREATE DATABASE ""; CREATE SCHEMA ""."";

Это работает на момент публикации и потенциально создаёт массу проблем для внешних систем, которые не ожидают такого поворота. Также это обычно приводит в восторг админов DWH.

Более интересные и практичные советы под катом.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии9

Impala vs Hive vs Spark SQL: Выбор правильного SQL движка для правильной работы в Cloudera Data Warehouse

Время на прочтение7 мин
Количество просмотров15K


Нам всегда не хватает данных. И мы не просто хотим больше данных… мы хотим новые типы данных, которые позволят нам лучше понимать свою продукцию, клиентов и рынки. Мы все-время находимся в поиске новых данных, данных всех форм и размеров, структурированных и не очень. Мы хотим распахнуть свои двери для нового поколения бизнес-специалистов и технических специалистов, которые будут увлеченно вместе с нами открывать новые базы данных и технологии, которые впоследствии изменят характер того, как мы взаимодействуем с данными и какое влияние они оказывают на нашу жизнь.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Apache Spark: оптимизация производительности на реальных примерах

Время на прочтение13 мин
Количество просмотров22K

Apache Spark – фреймворк для обработки больших данных, который давно уже стал одним из самых популярных и часто встречаемых во всевозможных проектах, связанных с Big Data. Он удачно сочетает в себе скорость работы и простоту выражения своих мыслей разработчиком.

Разработчик работает с данными на достаточно высоком уровне и, кажется, что нет ничего сложного в том, чтобы, например, соединить два набора данных, написав всего одну строку кода. Но только задумайтесь: что происходит в кластере при соединении двух наборов данных, которые могут и не находится целиком на каком-либо из узлов кластера? Обычно Spark со всем справляется быстро, но иногда, а особенно, если данных действительно много, необходимо все-таки понимать – что происходит уровнем ниже и использовать это знание, чтобы помочь Spark работать в полную силу.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии9

Сбор данных с обходом капчи посредством PYAUTOGUI, KERAS и TENSORFLOW

Время на прочтение5 мин
Количество просмотров6.8K

Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии1

Что такое MLOps? (Часть 1)

Время на прочтение5 мин
Количество просмотров19K

Машинное обучение (ML) становится эффективным, когда его модели внедряются в производство. С другой стороны, организации обычно недооценивают сложность и проблемы внедрения машинного обучения в производство, выделяя большую часть своих ресурсов на разработку ML и рассматривая машинное обучение как обычное программное обеспечение.

В итоге программы машинного обучения не приносят результатов, что приводит к потере денег, нерациональному использованию ресурсов, а для преодоления этой проблемы разрабатывается концепция MLOps.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии1

Проблемы современного машинного обучения

Время на прочтение41 мин
Количество просмотров41K

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

Частой проблемой в машинном обучении является неспособность ML-моделей корректно работать на большем разнообразии примеров, чем те, что встречались при обучении. Здесь идет речь не просто о других примерах (например, тестовых), а о других типах примеров. Например, сеть обучалась на изображениях коровы, в которых чаще всего корова был на фоне травы, а при тестировании требуется корректное распознавание коровы на любом фоне. Почему ML-модели часто не справляются с такой задачей и что с этим делать – мы рассмотрим далее. Работа над этой проблемой важна не только для решения практических задач, но и в целом для дальнейшего развития ИИ.

Читать далее
Всего голосов 104: ↑103 и ↓1+102
Комментарии26

Как мы подняли сквозную конверсию с 20 до 33% с помощью алгоритмов AI?

Время на прочтение13 мин
Количество просмотров1.8K

История Bash Today - сервиса бронирования площадок для мероприятий в Москве и Санкт-Петербурге , основанного в 2015 г.

Серьёзная проблема для сервиса бронирований — прямые платежи от клиентов площадкам по заявкам, пришедшим через маркетплейс. Из-за этого компания лишается своей комиссии. Стандартные инструменты выявления подобных схем, такие как опрос пользователей, сбор обратной связи после мероприятий и так далее, имеют ограниченную эффективность, так как осуществляются случайным образом. Поэтому нашей R&D-команде была поставлена задача повысить эффективность проверок с помощью алгоритмов AI.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Few-Shot NER, или Как перестать размечать и начать жить

Время на прочтение8 мин
Количество просмотров11K

Всем привет! Наша команда SberIDP занимается задачей извлечения сущностей и фактов из текстовых данных. В банке исторически обрабатывается большое число неструктурированных документов и автоматизация в этой области позволяет сэкономить много времени и ресурсов, а также улучшить клиентский путь. Например, с помощью предварительной обработки документов мы ускорили выдачу кредитов до 7 минут.

Современные методы, основанные на глубинном обучении, требуют от сотен до тысяч примеров для получения приемлемого качества в задачах NER. Сегодня мы разберем направление Few-Shot, которое позволяет решать данную задачу всего лишь на нескольких примерах, и поделимся результатами наших экспериментов. Мы смогли достичь state-of-the-art результатов на датасете Few-NERD и выложили полученные веса на HuggingFace для всех желающих.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии4

Туториал по Oracle Application Express. Обзор IDE

Время на прочтение11 мин
Количество просмотров56K

Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по Oracle Application Express (он же APEX, он же апекс, но не путать с языком apex, который используется в Salesforce) в природе не существует.


Это не самая распространенная технология, конечно, но, тем не менее, довольно востребованная. Есть десятки блогов об апексе (англоязычные, в основном), пара тысяч вопросов на Stackoveflow, специальный раздел по апексу на официальных форумах оракла, сам апекс существует уже 15 лет и все время развивается. Я был уверен, что и хороших туториалов полно. Но нет!


Мне тут же пришла в голову гениальная мысль восполнить этот пробел.


Оглавление


Почему существующие туториалы — плохие
Вводная информация
Обзор IDE
    App builder
        Страница приложения
        Application properties
        Shared Components
        Page Designer
    SQL Workshop
        Object Browser
        SQL Commands

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии29

Структурирование рисков и решений при использовании BigData для получения официальной статистики

Время на прочтение35 мин
Количество просмотров2.8K
Предисловие переводчика

Материал заинтересовал меня, в первую очередь из-за таблицы ниже:



С учетом того, что статистики (а российские, на генетическом уровне), мягко говоря, не любят все, что отличается от линейной зависимости, эти парни умудрились протащить использование функции активации в параболическом виде для определения степени риска использования BigData в официальной статистике. Молодцы. Естественно, статистики добавили свое примечание к этой работе – «1 Любые ошибки и упущения являются исключительной ответственностью авторов. Мнения, выраженные в этом документе, являются личными и не обязательно отражают официальную позицию Европейской комиссии». Но работу опубликовали. Думаю, на сегодня, этого достаточно, и они (авторы) никому не запрещали находить свои шкалы в этих аспектах.

В работе достаточно структурировано можно разделить, где и каким образом статистические методы отличаются от методов исследования для BigData. На мой взгляд, самая большая польза от этой работы будет при разговоре с заказчиком и для опровержения его высказываний типа:

— А мы собираем сами статистику, что Вы тут еще хотите исследовать?
— А вы нам свои результаты представьте так, чтобы мы их со своей статистикой согласовали. В этом вопросе авторы говорят, что неплохо бы почитать эту работу (3 How big is Big Data? Exploring the role of Big Data in Official Statistics)

В данной работе авторы проставили свое виденье уровня риска. Этот параметр стоит в скобках, не путать со ссылкой на источники.

Второе наблюдение. Авторы используют термин BDS – это аналог понятия BigData. (видимо реверанс официальной статистике).
Читать дальше →
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность