Как стать автором
Поиск
Написать публикацию
Обновить
77.56

SQL *

Формальный непроцедурный язык программирования

Сначала показывать
Период
Уровень сложности

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

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

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

Читать далее

Материалы для подготовки к собеседованию на позицию Data Scientist. Часть 1: Live Coding

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

Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor).

В данной статье разберемся что такое live coding интервью и как к нему готовиться.

Материал в первую очередь будет полезен Data Scientist'ам и ML инженерам, при этом некоторые разделы, например, Алгоритмы и структуры данных подойдут всем IT специалистам, которым предстоит пройти секцию live coding.

Читать далее

Эволюция системы разработки на SQL

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.9K

Мы — SQL команда Срочного рынка Московской Биржи, занимаемся разработкой и сопровождением бэкофиса торгово-клиринговой системы Spectra с момента ее возникновения. Срочный рынок Московской Биржи — это более 500 фьючерсных и 30000 опционных инструментов, несколько миллионов сделок в день.

Торгово-клиринговая система Срочного рынка (ТКС Spectra) изначально строилась на основе MS SQL, и за пару десятков лет прошла сложный путь от нескольких серверов БД до огромной системы с сервис-ориентированной архитектурой. Долгое время вся бизнес-логика системы разрабатывалась в программном слое на серверах MS SQL: и матчинг заявок, и расчет обеспечения, и управление клиентами были реализованы на T-SQL.

На сегодняшний день весь высоконагруженный функционал вынесен в отдельные сервисы, но в базах данных остаются сотни таблиц и тысячи программных объектов. Особенностью кода является высокая когнитивная и цикломатическая сложность. Управлять этим кодом с учетом всех требований по надежности и быстродействию – очень интересная задача.

В этой статье мы хотим рассказать об эволюции нашей системы разработки на SQL.

Читать далее

PostgreSQL: вернуть место после delete

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

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

Помимо очевидной цели - очистки ненужных данных из таблицы, хотелось бы также увеличить свободное место в области диска, доступного для данных postgresql. Но при определенных условиях - операция DELETE не возвращает место, а операция UPDATE дополнительно его забирает.

Читать далее

Сравнительный анализ методов аппроксимации на основе SQL-запросов

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

При работе с данными часто приходится сталкиваться с ситуацией, когда имеется некоторая функциональная зависимость yi = f(xi), которая получена в результате эксперимента или сбора статистики. То есть исходные данные представлены набором точек (x1, y1), (x2, y2) … (xn, yn), где n – количество экспериментальных значений. Если аналитическое выражение функции f(x) неизвестно или весьма сложно, то возникает чисто практическая задача: найти такую функцию Y = F(x), значения которой при x=xi будут близки к экспериментальным данным. Приближение функции f(xi) к более простой F(x) называется аппроксимацией. Аппроксимация позволяет исследовать числовые характеристики и качественные свойства объекта, сводя задачу к изучению более простых или более удобных объектов. Как правило, выбор модели аппроксимации определяется по минимальному значению погрешности на всем интервале исходных данных. Для расчетов необходимо использовать несколько видов аппроксимаций, чтобы определить более точное описание зависимости экспериментальных данных y = f(xi).

Читать далее

Способ залезть в «кишочки» операционной системы, Docker из PostgreSQL с помощью SQL

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

Если у вас возникала идея получить доступ к метрикам операционной системы и оборудования компьютера из PostgreSQL, то теперь у вас есть инструмент для этого. Я не претендую на его зрелость и готовность к эксплуатации. Это просто прототип, позволяющий получить результаты запросов из osquery в PostgreSQL в виде табличных данных/JSON. Дальше с которыми можете использовать все привычные средства этой базы данных.

Читать далее

Кейс внедрение Dbt в «Детском мире»

Уровень сложностиСложный
Время на прочтение3 мин
Количество просмотров5.5K

Всем привет! Меня зовут Антон и я руковожу Big Data платформой в Детском Мире. 

На Хабре проходит сезон Больший данных, и я решил что это отличная возможность поделиться нашим опытом внедрения Dbt (инструмент для оркестрации Sql витрины). На хабре уже статьи по инструменту, в моей статье, покажу как пришли от запуска ноутбука в Zeppelin к промышленному решению запуска большого количества витрин написанных на SparkSql в OnPrem Hadoop.

Читать далее

Как SQL-скриптом сократить время ручного тестирования в 3 раза и облегчить жизнь коллегам

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров7.4K

Если ваша система использует БД и время от времени нужны тестовые записи, или если вы делаете insert-ы с несколькими наборами значений values, то изложенное ниже может пригодиться.

Искать или создавать тестовые записи?

Если у вас есть БД и вы разрабатываете алгоритмы, которые отбирают записи по определённым критериям из одной или нескольких таблиц, значит, на этапе разработки вам нужны тестовые данные, удовлетворяющие заданным условиям.

Как же их получить? Первая мысль - найти среди уже имеющихся. Но, чем больше условий, тем больше проблем при поиске.

Допустим, нашли. Разработчику и тестировщику нужно много вариантов набора данных. Можно взять несколько записей и их update-ить, но не помешает ли это кому-то ещё? Не грохнется ли часть данных по какой-нибудь причине? А что будет с этими записями через несколько месяцев, когда понадобится что-то перепроверить? На практике не раз сталкивался с худшими ответами на подобные вопросы. Как же этого избежать?

Читать далее

Изучаем PostgreSQL. Часть 1. Знакомимся с архитектурой

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

 На сегодняшний день существует большое количество различных систем управления базами данных - СУБД, от коммерческих до открытых, от реляционных до новомодных NoSQL и аналогичных.

Одним из лидеров направления СУБД является PostgreSQL и ее различные ответвления, о некоторых из которых мы рассмотрим подробнее.

В этой статье мы начнем говорить о СУБД PostgreSQL, рассмотрим отличия редакций и некоторые особенности архитектуры, а также процесс установки. Но начнем мы с небольшого ликбеза для того, чтобы читатели плохо знакомые с терминологией баз данных могли быстро войти в курс дела.

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

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

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

Читать далее

Детальное рассмотрение поведения при использовании INCLUDE

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

Некоторые базы данных такие, как Microsoft SQL Server, IBM Db2, а также PostgreSQL начиная с 11 версии – предлагают прибегнуть к оператору include для генерации индекса. Представление данного функционала в PostgreSQL (исходная статья вышла 30.04.2019) послужило поводом для этого объёмного рассуждения о работе с оператором include.

Содержание:

1)    Напоминание: btree-индексы

2)    Напоминание: Index-only сканирование

3)    Оператор include

4)    Фильтрация по полям в include

5)    Уникальные индексы при использовании include

6)    Сравнение

7)    PostgreSQL: Никакой фильтрации до проверки области видимости

Читать далее

PostgreSQL 16: Часть 2 или Коммитфест 2022-09

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

PostgreSQL 15 уже вышел официально. И в сети появилось множество информации о новинках версии.


А мы продолжаем знакомить с новинками будущей 16-й версии. В начале октября завершился второй коммитфест и есть что обсудить.


Самое интересное из первого, июльского, коммитфеста можно прочитать в предыдущей статье серии: 2022-07.

Читать дальше →

Визуализация данных с помощью Metabase

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

Привет, Хабр!

Сегодня я рассмотрю основные возможности BI-инструмента с открытым исходным кодом Metabase.

Читать далее

BigQuery. Что делать, если повредил или случайно удалил таблицы

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

Как быть, если случайно удалил или повредил таблицу в BigQuery? Первое о чем нужно помнить: BigQuery хранит состояние вашей существующей таблицы на любой момент времени в течение прошедших 7 дней + у вас есть 2 суток, чтобы восстановить случайно удаленную таблицу. Рассмотрим, как это все провернуть.

Читать далее

Ближайшие события

Materialized Path – создаём своё первое дерево

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

Всем привет! Меня зовут Хусрав, я бэкенд разработчик в компании Bimeister.

В этой статье я бы хотел бы поговорить о способе поиска родительских и дочерних элементов структуры посредством PostgreSQL Materialized Path.

Статья является вводной и рассчитана на людей, незнакомых с темой.

Читать далее

Построение DWH на основе Greenplum

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

DBA в Southbridge Иван Чувашов подготовил статью о построении DWH на основе Greenplum. Слово Ивану.  

Привет, Хабр! Я администратор баз данных с 15-летним опытом. Сегодня хочу рассказать про Data Warehouse на основе Greenplum — как они устроены, как их поднимать и с какими проблемами и нюансами я лично сталкивался в своей практике.

Читать про Greenplum

TRY / CATCH в PostgreSQL

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

Во встроенном процедурном языке PL/pgSQL для СУБД PostgreSQL отсутствуют привычные операторы TRY / CATCH для для перехвата исключений возникающих в коде во время выполнения. Аналогом является оператор EXCEPTION.

Читать далее

TINKOFF-INVEST. Разработка торгового робота на JAVA. Часть 2

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

Как же быстро летит время... Прошло почти 2 месяца с момента публикации моей первой статьи о работе с TINKOFF INVEST API – Разработка торгового робота на JAVA. Часть 1, в которой мы начали свое знакомство с инструментарием автоматизации торговли, предоставляемым брокером ТИНЬКОФФ.

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

Если нет желания вникать в код и читать статью, то можете сразу мотать к разделу "Демонстрация работы приложения".

Читать далее

Миграция расчёта управленческой отчётности с Teradata на GreenPlum

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

Всем привет! Меня зовут Николай Когель, я главный инженер по разработке Управления технологий MIS Департамента ИТ-блока «Финансы» в Сбере.

Сейчас в Сбере существует несколько крупных систем, в которых происходит построение управленческой отчётности и расчёт финансового результата. Как правило, это предполагает обработку огромных массивов исторических данных нетривиальной структуры из различных систем, загружаемых в аналитическое хранилище данных. По этой причине хранилище данных строится на основе MPP-систем, а с недавнего времени в Сбере наряду с Teradata появилась альтернатива в виде GreenPlum.

Читать далее

PostgreSQL в «Тензоре» — публикации за год (#2)

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

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

Если не видели дайджест за первый год — время наверстать упущенное!

Читать далее

SQL HowTo: три WHERE в одном запросе

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

При реализации некоторых прикладных задач в рамках экосистемы СБИС случается сталкиваться с неочевидными возможностями PostgreSQL, которые позволяют вместо сложной логики создать решение "в один ход".

Сегодня на примере вполне реальной задачи рассмотрим такие возможности оператора INSERT ... ON CONFLICT.

Читать далее

Вклад авторов