Pull to refresh
1
0
Send message

Как оптимально рассчитать объем «железа»: сайзинг-модель ЕФС

Reading time6 min
Views19K
В разработке Программы «Единая фронтальная система» Сбербанка участвуют больше сотни команд. Каждая команда создает и развивает определенный продукт или сервисный компонент. Для каждой новой инициативы требуется оценить объем «железа», который потребуется для разработки и внедрения этой инициативы. А это большой поток запросов на оценку. О том, как мы решаем эту задачу, читайте под катом.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments2

Формульное определение проблем качества данных

Reading time24 min
Views3.4K

A Formal Definition of Data Quality Problems (2005)

 Достаточно часто каждый аналитик сталкивается с ситуацией, когда загрузил данные в блок анализа, а в ответ – тишина, хотя в тестовом режиме все работает. Причина обычно в том, что данные недостаточно очищены, где в этой ситуации искать аналитику засаду и с чего начинать обычно задачка не из легких. Можно конечно использовать механизмы сглаживания, но каждый знает, что если из черного ящика с красными и зелеными шарами отсыпать килограмм шаров и вместо них вбросить килограмм белых, то в понимании распределения красных и зеленых это мало приблизит.

Когда находишься в ситуации «а с чего начать» помогает таксономия «грязных данных». Хотя в учебниках и дают список проблем, но он обычно неполный, вот постоянно искал исследования, которые рассматривают эту тему подробней. Попалась работа T.Gschwandtner, J.Gartner, W.Aigner, S.Miksch хотя они ее делали для рассмотрения способов очистки данных связанных с датами и временем но, на мой взгляд, это оказалось исключение, которое потребовало разобраться с правилами поглубже чем в учебниках. По собственному опыту знаю, что сопряжение дат и времени «вынос мозга» практически в прямом смысле и поэтому и зацепился за исследование этих авторов.

В своей работе они проанализировали несколько работ других авторов и составили мощный список «загрязнений данных» логика их анализа заслуживает уважения и, с другой стороны, дает возможность более «со стороны» посмотреть на любую задачу очистки данных. Все это видно когда сопоставляешь всю совокупность работ, по которым они делают сравнительный анализ. Поэтому и сделал перевод самых используемых ими 5 статей, список с ссылками на эти переводы ниже.

Это пятая статья из цикла

 1. Таксономия форматов времени и дат в неочищенных данных, 2012 г.

2. Очистка данных: проблемы и современные подходы 2000 г.

3. Таксономия «грязных данных» 2003 г.

4. Проблемы, методы и вызовы комплексной очистки данных 2003 г.

5. Формульное определение проблем качества данных 2005 г.

6. Обзор инструментов качества данных 2005 г.

Читать далее
Rating0
Comments2

Как выбрать для своего конвейера данных максимально эффективную архитектуру

Level of difficultyMedium
Reading time9 min
Views5K

Привет! Меня зовут Михаил Благов, я руководитель департамента «Чаптер инженеров данных и разработчиков» в beeline tech. В этом посте я хочу поделиться способом, с помощью которого можно выбрать подходящую архитектуру для конвейера данных в зависимости от требований к нему. В частности, обсудим паттерн CDC (change data capture, aka «захват изменений»), основная идея которого — быстрая репликация какого-то источника в аналитическое хранилище. 

Под катом мы:

- познакомимся с вариантами архитектуры конвейеров данных: из каких компонентов и как его можно собирать,

- рассмотрим и сравним четыре разные архитектуры конвейеров.

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

Начнем с матчасти

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments3

Tarantool: Билли Миллиган в мире СУБД

Reading time6 min
Views12K

Привет! Меня зовут Mons Anderson, я архитектор, разработчик, продакт-менеджер и евангелист Tarantool. В VK работаю уже больше 10 лет. Я постоянно нуждаюсь в базах данных, использую их и очень люблю. И в последнее время, когда я говорю про БД, я всё чаще говорю про Tarantool. Сегодня тоже хочу рассказать, что уникального в этой базе данных и что делает её практически универсальной.

Читать далее
Total votes 38: ↑32 and ↓6+37
Comments11

Разрешение на полет дрона в 2022-м

Reading time5 min
Views117K

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

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

Читать далее
Total votes 45: ↑45 and ↓0+45
Comments51

Apache Airflow: делаем ETL проще

Reading time25 min
Views164K

Привет, я Дмитрий Логвиненко — Data Engineer отдела аналитики группы компаний «Везёт».


Я расскажу вам о замечательном инструменте для разработки ETL-процессов — Apache Airflow. Но Airflow настолько универсален и многогранен, что вам стоит присмотреться к нему даже если вы не занимаетесь потоками данных, а имеете потребность периодически запускать какие-либо процессы и следить за их выполнением.


И да, я буду не только рассказывать, но и показывать: в программе много кода, скриншотов и рекомендаций.



Что обычно видишь, когда гуглишь слово Airflow / Wikimedia Commons

Читать дальше →
Total votes 11: ↑10 and ↓1+11
Comments28

Теория шардирования

Reading time26 min
Views129K
Кажется, мы так глубоко погрузились в дебри highload-разработки, что просто не задумываемся о базовых проблемах. Взять, например, шардирование. Чего в нем разбираться, если в настройках базы данных можно написать условно shards = n, и все сделается само. Так-то, он так, но если, вернее когда, что-то пойдет не так, ресурсов начнет по-настоящему не хватать, хотелось бы понимать, в чем причина и как все починить.

Короче, если вы контрибьютили свою альтернативную реализацию хэширования в Cassandra, то вряд ли тут для вас найдутся откровения. Но если нагрузка на ваши сервисы уже прибывает, а системные знания за ней не поспевают, то милости просим. Великий и ужасный Андрей Аксёнов (shodan) в свойственной ему манере расскажет, что шардить плохо, не шардить — тоже плохо, и как это внутри устроено. А еще совершенно случайно одна из частей рассказа про шардинг вообще не совсем про шардинг, а черт знает про что — как объекты на шарды мапить.

Фотография котиков (хоть они случайно и оказались щеночками) уже как бы отвечает на вопрос, зачем это всё, но начнем последовательно.
Total votes 37: ↑37 and ↓0+37
Comments6

Оптимизация запросов. Основы EXPLAIN в PostgreSQL

Reading time3 min
Views205K

Почему запрос выполняется так долго? Почему не используются индексы?
Наверное, все слышали об EXPLAIN в PostgreSQL. Но не так много тех, кто понимает, как его использовать. Сам длительное время не мог найти доступного для понимания учебника (плохо искал?).
Надеюсь, эта статья поможет желающим разобраться с этим замечательным инструментом.
Читать дальше →
Total votes 35: ↑24 and ↓11+13
Comments14

Версионная миграция структуры базы данных: основные подходы

Reading time15 min
Views135K
Проблемы контроля версий баз данных и миграций между версиями уже не раз поднимались как на Хабре (1, 2, 3 и др.), так и в Интернете (преимущественно, англоязычном).

В первом разделе этой статьи я рассматриваю основные проблемы, которые возникают в командах программистов при внесении любых изменений в структуру базы данных. Во втором разделе я попытался выделить основные общие подходы к тому, в каком виде изменения структуры базы данных можно хранить и поддерживать в процессе разработки.
Читать дальше →
Total votes 89: ↑87 and ↓2+85
Comments83

Проектирование RESTful API с помощью Python и Flask

Reading time15 min
Views280K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

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

Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments32

Первые шаги в aiohttp

Reading time6 min
Views83K

Привет, меня зовут Артём. Я работаю бэкендером в KTS и веду курсы по разработке в KTS Metaclass. Заметил, что труднее всего студентам даются темы по асинхронному программированию.

Основываясь на своём преподавательском опыте, я написал туториал, рассказывающий о создании базового aiohttp-сервиса с нуля и затрагивающий самые сложные для студентов вопросы: как сделать асинхронное python-приложение, как работать с базой данных и как разложить свой проект в интернете.

Это первая статья цикла, в ней мы напишем небольшое веб-приложение на aiohttp  — стену с отзывами, где каждый может оставить свое мнение о каком-то продукте.

Погнали!
Total votes 2: ↑2 and ↓0+2
Comments6

Самый простой (и неожиданный) алгоритм сортировки?

Reading time9 min
Views26K

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

1. Алгоритм


Большинству из нас хорошо известны такие простые алгоритмы сортировки, как сортировка пузырьком. По крайней мере, нам так кажется. Оказывались ли вы когда-нибудь в ситуации, когда вам нужно записать псевдокод сортировки пузырьком, и вы осознавали, что он не так прост, как кажется, и с первого раза правильно написать его не удаётся? Нужно внимательно следить за тем, чтобы индексы циклов начинались и заканчивались нужными значениями и не выходили за границы, а также правильно обрабатывать флаговые переменные. Разве не было бы здорово иметь простой алгоритм без всей этой возни? Ниже представлен такой алгоритм, сортирующий массив A из n элементов в неубывающем порядке. Для простоты доказательства массив начинается с 1, то есть имеет элементы A[1],..., A[n].

Алгоритм 1 ICan’tBelieveItCanSort(A[1..n]):

for i = 1 to n do
  for j = 1 to n do
    if A[i] < A[j] then
      swap A[i] and A[j]

Вот, собственно, и всё. Он просто обходит в цикле каждую пару значений (i, j) стандартным способом из двойного цикла for, выполняет сравнение и обмен значениями. Разве можно придумать что-то ещё более простое? Возможно первой реакцией увидевшего этот алгоритм будет что-то типа «это не может быть верно» или «знак неравенства направлен в другую сторону, да и индексы цикла указаны неверно». Но нет, он действительно правильно сортирует в возрастающем порядке.
Читать дальше →
Total votes 42: ↑29 and ↓13+27
Comments40

Знакомство с Debezium — CDC для Apache Kafka

Reading time18 min
Views95K


В своей работе я часто сталкиваюсь с новыми техническими решениями/программными продуктами, информации о которых в русскоязычном интернете довольно мало. Этой статьей постараюсь восполнить один такой пробел примером из своей недавней практики, когда потребовалось настроить отправку CDC-событий из двух популярных СУБД (PostgreSQL и MongoDB) в кластер Kafka при помощи Debezium. Надеюсь, эта обзорная статья, появившаяся по итогам проделанной работы, окажется полезной и другим.

Что за Debezium и вообще CDC?


Debezium — представитель категории программного обеспечения CDC (Capture Data Change), а если точнее — это набор коннекторов для различных СУБД, совместимых с фреймворком Apache Kafka Connect.
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments1

Потоковый захват изменений из PostgreSQL/MySQL с помощью Apache Flink

Reading time18 min
Views16K

Привет! Сегодня мы поговорим и попробуем на практике реализацию паттерна Change Data Capture (далее – CDC) в Apache Flink. 

Статья разделена на несколько частей: в первой мы рассмотрим теоретические основы Change Data Capture, варианты реализации и сферы применения. Во второй – обратимся к особенностям CDC-коннекторов экосистемы Apache Flink, а также выделим самые интересные фичи (а заодно и немного расскажем об Apache Flink для тех, кто раньше с ним не сталкивался). В третьей части – перейдем к практике, закатаем рукава и реализуем несложный сценарий захвата изменений из WAL PostgreSQL, приправленный объединениями, агрегацией, стеком ELK и целым кластером Flink, правда в миниатюре.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments4

Шесть уровней метавселенной математики

Reading time6 min
Views41K

Когда я был маленький, я думал, что математика - это очень формальная наука. Как бы не так! Когда о нас, математиках, говорят как о сухарях — это ложь! (с) 17 мгновений весны.

Приглашаю вас в путешествие по 6 уровням вселенной математики - от полностью формального до философско-поэтического, и заодно мы ответим на вопрос, является ли теорема Геделя теоремой или мета-теоремой.

Читать далее
Total votes 75: ↑72 and ↓3+92
Comments168

Как метод подмены задачи борется с несовершенством данных (и мира)

Reading time6 min
Views6.6K

Привет, Хабр! Меня зовут Максим Шевченко, я ведущий ML разработчик в Big Data МТС. В этом посте я расскажу о том, что такое метод подмены задачи. Также разберем несколько примеров того, как такой подход позволил найти эффективные решения для рабочих проектов. Проверим валидность таргетинга в наружной рекламе; рассмотрим, как еще можно проверить однородность групп до проведения А/В тестирования; расскажу про необычный подход к оценке качества данных. Добро пожаловать под кат!

Читать далее
Total votes 10: ↑9 and ↓1+15
Comments2

Войти вайти в 37 лет, личный опыт

Reading time11 min
Views47K

Сейчас мне сорок пять, и я наконец получил нормальную фултайм позицию аналитика данных. У меня первый диплом - Провизор по специальности Фармация. Я успел поработать таксистом, разнорабочим на складе лекарственных трав, заготовщиком, владельцем цеха металлообработки и одновременно рабочим в этом цеху. Был фармацевтом за кассой, заместителем заведующей аптекой, владельцем аптеки. Никогда не думал, что буду работать в IT, хотя всегда интересовался этой темой.

В школе у нас был компьютерный класс...
Total votes 57: ↑48 and ↓9+52
Comments77

Настройка PostgreSQL под Linux

Level of difficultyEasy
Reading time10 min
Views115K

Время от времени приходится слышать мнение от некоторых системных администраторов, а также некоторых 1С-разработчиков, что установка, настройка и поддержка PostgreSQL под Linux очень сложна. Что гораздо дешевле покупать лицензии Windows и Microsoft SQL Server, чем нанимать высококвалифицированных администраторов, которые будут администрировать все эти open-source системы.

На наших бизнес-приложениях, использующих в качестве СУБД PostgreSQL, работают 70% крупнейших розничных сетей в Беларуси. Во всех из них одновременно работают от 500 до 1500 пользователей. В приложениях реализованы практически все основные процессы розничных сетей (демо, чтобы оценить сложность). Размер баз данных на данный момент составляет от 2 до 4ТБ. И все они работают практически со стандартными настройками PostgreSQL на одиночных серверах без какой-либо кластеризации. При этом даже в самых загруженных серверах есть еще значительный резерв по ресурсам для дальнейшего увеличения нагрузки без потребности в кластеризации.

Да, конечно же, многое зависит от запросов к СУБД, и несколькими кривыми запросами можно положить весь сервер. Однако, точно также можно положить и Oracle, и MSSQL. Да, платформа lsFusion, на которой написаны наши приложения, делает много различных оптимизаций запросов конкретно под PostgreSQL. Но вручную SQL-запросы можно оптимизировать еще лучше.

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

Читать далее
Total votes 42: ↑39 and ↓3+38
Comments16

Greenplum DB

Reading time17 min
Views176K
Продолжаем цикл статей о технологиях, использующихся в работе хранилища данных (Data Warehouse, DWH) нашего банка. В этой статье я постараюсь кратко и немного поверхностно рассказать о Greenplum — СУБД, основанной на postgreSQL, и являющейся ядром нашего DWH. В статье не будут приводиться логи установки, конфиги и прочее — и без этого заметка получилась достаточно объёмной. Вместо этого я расскажу про общую архитектуру СУБД, способы хранения и заливки данных, бекапы, а также перечислю несколько проблем, с которыми мы столкнулись в ходе эксплуатации.



Немного о наших инсталляциях:

  • проект живёт у нас чуть больше двух лет;
  • 4 контура от 10 до 26 машин;
  • размер БД около 30 Тб;
  • в БД около 10000 таблиц;
  • до 700 queries per second.

За тем, как оно работает, прошу под кат!
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments32

Information

Rating
Does not participate
Registered
Activity