Как стать автором
Обновить
50.94

SQL *

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

Сначала показывать
Порог рейтинга

Почему мы разлюбили Isar

Isar — это NoSQL база данных, которую когда-то разработали создатели Hive. Про все плюсы этой БД мы уже писали. Однако однажды нашей Flutter-команде достался проект, который заставил их в корне изменить отношение к Isar и отказаться от этой технологии раз и навсегда.

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

Но специфика приложения накладывала на нас и вполне себе конкретные технические требования: оно должно было бесперебойно работать в офлайне — поля всё-таки бывают далековато от вышек мобильных операторов. Для реализации офлайн-режима как раз и был выбран Isar — это решение казалось удобным.

Как же мы ошибались! Так как у приложения был офлайн-режим, на старте оно загружало большие объемы данных, среди которых, например, было гигантского видео. И это создавало проблемы. В приложении добавлялись новые справочники, но документации на миграцию в Isar не было. К тому же на Android 32-ой архитектуры в базе вылезли баги.

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

Кстати, этот проект в целом оказался судьбоносным для нашей команды Flutter. Какие еще уроки они вынесли после работы над приложением — в отдельной статье.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Скрипт очистки логов всех баз MSSQL

Изначально статья была выложена на своём сервере https://ast-1c.kz/almasoft/?p=1443

Ничего сверхъестественного, но может кому пригодится:)

В процессе работы с сервером 1С, который в качестве сервера баз данных использует MSSQL сервер, очень часто приходится решать задачу по очистке логов базы. Сама по себе задача достаточно тривиальная и решается исполнением скрипта (при полной модели восстановления):

USE база_данных;  
GO  
-- Изменяем модель восстановления базы данных на SIMPLE.  
ALTER DATABASE база_данных
SET RECOVERY SIMPLE;  
GO  
-- Обрезаем LOG файл до 1 мегабайта.  
DBCC SHRINKFILE (база_данных_log, 1);  
GO  
-- Возвращаем модель восстановления базы данных на FULL.  
ALTER DATABASE база_данных
SET RECOVERY FULL;  
GO

либо же для базы использующей простой тип модели восстановления:

USE база_данных;  
GO  
-- Обрезаем LOG файл до 1 мегабайта.  
DBCC SHRINKFILE (база_данных_log, 1);  
GO  

Всё, просто и хорошо, но вот если на сервере скажем 100 баз, писать такой скрипт для каждой в отдельности — это не очень приятное задание, да и времени уйдет предостаточно. А ещё есть одно неудобство — если в последствии будет добавлена очередная база, то Вы не должны забыть и для неё прописать отдельный скрипт. Очень часто базы добавляют программисты 1С, а вот слежение за состоянием сервера ложится на плечи системного администратора. Ну и тут главное не просмотреть этот момент. В общем не очень удобная штука.

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

Declare @name varchar(100)
declare @qu as varchar(1200)
declare icur cursor fast_forward for

SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')
--and recovery_model_desc = 'FULL'

open icur
 fetch next from icur into @name
 While @@Fetch_Status = 0 

Begin
  Set @qu='use [' + @name + '] Declare @logname varchar(64), @size int'
  Set @qu=@qu + ' Set @logname = (SELECT [name] FROM [sys].[database_files]  where type_desc=''LOG'')'
  Set @qu=@qu + ' Set @size = (SELECT max_size FROM [sys].[database_files]  where type_desc=''LOG'') * 0.7/128'
  Set @qu=@qu +  ' ALTER DATABASE [' + @name + ']  SET RECOVERY SIMPLE DBCC SHRINKFILE (@logname, 7)'
  Set @qu=@qu + ' ALTER DATABASE [' + @name + ']  SET RECOVERY FULL'
  Exec (@qu) 
  Set @qu = '' 
  fetch next from icur into @name
END
close icur

SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')
--and recovery_model_desc = 'SIMPLE'

open icur
 fetch next from icur into @name
 While @@Fetch_Status = 0 

Begin
  Set @qu='use [' + @name + '] Declare @logname varchar(64), @size int'
  Set @qu=@qu + ' Set @logname = (SELECT [name] FROM [sys].[database_files]  where type_desc=''LOG'')'
  Set @qu=@qu + ' Set @size = (SELECT max_size FROM [sys].[database_files]  where type_desc=''LOG'') * 0.7/128'
  Set @qu=@qu +  ' ALTER DATABASE [' + @name + ']  SET RECOVERY SIMPLE DBCC SHRINKFILE (@logname, 7)'
  Exec (@qu) 
  Set @qu = '' 
  fetch next from icur into @name
END
close icur
deallocate icur

DBCC SHRINKDATABASE (TEMPDB);

Скачать готовый на GitHub Gist

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

GIN индексы в PostgreSQL

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

Что такое GIN индекс

GIN (Generalized Inverted Index) – это инвертированный индекс, который предназначен для ускорения поиска в структурах данных, содержащих составные типы. Он имеет встроенную оптимизацию, позволяющую искать по элементам внутри сложных структур. По своей сути, это обратный индекс, где для каждого уникального элемента хранится список указателей на записи, в которых он встречается. Это дает возможность быстро находить записи, соответствующие запросу.

Для каких типов данных используется GIN индексы

GIN-индексы особенно эффективны для следующих типов данных:

  • Массивы

    • Хранение списков значений

    • Быстрый поиск по элементам массива

    • Пример: теги, категории, списки ID

  • JSONB

    • Хранение полуструктурированных данных

    • Быстрый поиск по ключам и значениям

    • Поддержка сложных запросов к JSON-документам

  • Полнотекстовый поиск

    • Индексация текстовых полей

    • Быстрый поиск по словам и фразам

    • Поддержка различных языков

Преимущества GIN индексов

  • Эффективность поиска по структурам данных: Хорошо подходит для обработки массивов и структурированных данных типа JSONB. Позволяет быстро находить нужные строки даже среди миллионов записей. Хранит только уникальные элементы и их местоположение, вследствии этого более экономный по сравнению с полным сканированием.

  • Поддержка различных типов данных: Работает с различными типами - строки, числа, массивы, объекты JSONB и даже геопространственные данные.

  • Подходит для оптимизации полнотекстового поиска: Улучшает производительность запросов с использованием операторов @@ и функций вроде to_tsvector() и to_tsquery(). Особенно полезен там, где требуются операции пересечения (&&), включения (@>), проверки существования элементов массива (?, ?&) и другие специфические условия.

Недостатки GIN индексов

  • Обновление: Каждый раз, когда изменяется запись, содержащая поля, входящих в GIN индекс, индекс обновляется целиком. Это увеличивает нагрузку на систему при частых изменениях данных.

  • Больший размер: GIN индекс занимает больше места на диске по сравнению с традиционными B-tree индексами, так как хранит список всех значений, содержащихся в колонке.

  • Низкая производительность на малых объемах данных: При небольших объемах данных GIN индекс может быть менее эффективным.

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

Заключение

При работе с массивами, JSONB полями и полнотекстовым поиском стоит рассмотреть использование GIN индексов для данных полей. Это позволит повысить эффективность и производительность БД PostgreSQL. Но, в то же время, стоит учитывать особенности его обслуживания и требования к системе. Очень аккуратно применять к часто изменяемым данным.
Очень хорошая статья о GIN индексах https://habr.com/ru/companies/postgrespro/articles/340978/

Более подробно с примерами у меня в телеграмм

Спасибо за внимание!

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии3

ИЩЕМ ЗАМЕНУ КОФЕИНУ с помощью ChatGPT

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

Я попросил помощи у ChatGPT и он успешно создал очень сложную таблицу с легальными аналогами кофеина и даже с вычисляемым столбцом на основе НЕЧЁТКИХ критериев (если вы это сможете на SQL - Вы гений!), но плохо справился с сортировкой в этой таблице.

Внимание: ниже изображение, ссылки некликабельные. Я ничего не продаю.

Это изображение, ссылки некликабельные,
Это изображение, ссылки некликабельные,

В первом цифровом столбце не удалось отсортировать числа по убыванию. Пытался примерно 15-20 минут. Пробовал разные промпты и пояснения. Это странно.

Этот инструмент (ChatGPT) отлично понимает команды манипуляции таблицей, в данном пример я попросил создать таблицу на основе данных с крупных магазинов, указал какие столбцы нужны и какая в них должна быть информация, указал порядок столбцов, в том числе относительный, типа столбец с такими данным добавь перед таким-то столбцом.

ChatGPT смог создать СВОДНЫЙ столбец на основе ранее созданных столбцов.Это столбец со взвешенными суммами весов веществ в других столбцах и коэффициенты взвешивания ОН сам нашел и нашел весьма точно.

Причем для каждого продукта ОН смог найти состав веществ по определенным критериям и перечислил их, создав отдельный столбец. Не все вещества, а только по определенным фильтрам (только такие, которые не являются кофеином, но оказывают воздействие, сходное с действием кофеина. Попробуйте самостоятельно без ИИ запрограммировать такой запрос на SQL с учетом нечеткого критерия схожести воздействия и еще определите коэффициент похожести для создания взвешенной суммы масс веществ в порции БАД.

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

Теги:
Всего голосов 8: ↑4 и ↓4+1
Комментарии4

Топ вопросов на собеседованиях по SQL. Что вам точно нужно знать для получения оффера?

Знание SQL — мастхэв при работе с базами данных в большинстве современных компаний. У нас в Сравни дата-специалисты используют SQL, взаимодействуя с множеством технологий и инструментов, от Snowflake, Greenplum и ClickHouse до Superset. При найме стажёров в наши технические команды, тестовое задание в большинстве случаев включает в себя проверку знаний по SQL.

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

Чтобы помочь вам с этим, наш дата-инженер Владимир Шустиков подготовил цикл из 5 видео, в которых рассмотрел ключевые вопросы об SQL на собеседованиях. Материал составлен по мотивам прохождения десятков собеседований в ИТ-команды компаний. С его помощью можно не только подготовиться к интервью (как морально, так и практически), но и проверить себя: сопоставить свои знания про SQL с тем, что на самом деле ожидают от специалиста. 

Полезно будет дата-инженерам, аналитикам, а также бэкенд-разработчикам. 

Каждое видео посвящено отдельному блоку вопросов по SQL:

1. Топ вопросов на собеседовании по SQL — порядок выполнения запроса, виды команд, типы данных

2. Топ вопросов на собеседовании по SQL — логические и физические виды JOIN, оконные функции, EXPLAIN

3. Топ вопросов на собеседовании по SQL — NULL, Агрегация

4. Топ вопросов на собеседовании по SQL — задачи на JOIN, различие между TRUNCATE, DROP, DELETE

5. Топ вопросов на собеседовании по SQL — WHERE, HAVING, QUALIFY; подзапросы и CTE; сочетания запросов

Смотрите, углубляйте свои знания в SQL, получайте офферы!

ТГ-канал нашего инженерного сообщества Sravni Tech

Теги:
Всего голосов 16: ↑14 и ↓2+12
Комментарии1

Всем привет! Совсем недавно в ИТ-инфополе снова активно заговорили о супераппах и их развитии.

Что такое суперапп?

Суперапп — это мобильное приложение, объединяющее множество сервисов и функций в одном месте. 

В России ярким примером успешного супераппа служит Яндекс Go. Самым известным представителем в мире является китайский WeChat, которым пользуется около миллиарда человек и в котором собраны практически все необходимые сервисы для жизни.

Сегодня хочу поделиться своим взглядом на аналитику в подобных сервисах. Начнем с положительных аспектов. 

1️⃣ Неоспоримым преимуществом является синергия и обширная база пользователей. Даже новым фичам и продуктам внутри супераппа практически не стоит беспокоиться о том, откуда взять трафик. Например, “Самокаты” были запущены сразу в рамках Яндекс Go, поскольку там уже находилась целевая аудитория этого сервиса.

2️⃣ Супераппы генерируют море данных о самых разных аспектах жизни пользователей, и для аналитика это – рай! У вас будет возможность анализировать поведение пользователей в комплексе, выявлять скрытые взаимосвязи и находить инсайты, которые невозможно получить, работая в компании, специализирующейся на одном узком направлении. Это просто кладезь для персонализации, настройки рекомендаций и CRM-коммуникаций. 

3️⃣ Расширение границ. Супераппы позволяют попробовать себя в разных сферах и бизнесах, оставаясь в одной компании. Даже работая в одной команде, для выполнения ряда задач необходимо погружаться в контексты бизнесов других команд, а если захочется сменить сферу, достаточно просто ротироваться.

Но есть и другая сторона.

1️⃣ Бешеная конкуренция за ресурсы. Пиксели на экране супераппа не бесплатны. Вашей команде придется часто толкаться локтями с коллегами и доказывать, что ваш продукт достоин быть первым в выпадающем списке, не скрываться за скроллом и т.д. Аналитикам регулярно нужно доказывать эффективность каждого сервиса в рамках приложения. И порой это скатывается в бюрократию, приводящую к топтанию на месте. 

2️⃣ Сложность атрибуции эффектов. В рамках супераппа каждая команда хочет оценивать своё влияние, и здесь перед аналитиком встает логичная задача: как и к кому атрибуцировать активность пользователей. На рынке существует много практик (last/first click, position-based и т. д.), но внедрить и обосновать конкретную методологию — крайне непростая задача, а спрогнозировать и доказать долгосрочное влияние, чтобы положить его в цели/бюджеты... ну, вы поняли)

3️⃣ Всегда необходимо учитывать влияние новых решений на другие продукты и сервисы, входящие в экосистему супераппа. Например, оценивать, как размещение точки входа в ваш продукт на главной странице повлияет на остальные продукты, и в случае негативного влияния предоставить аргументы и цифры, нивелирующие его. Это требует включения “helicopter view” — понимания взаимосвязией сервисов, ключевых метрик, процессов и инструментов на уровне всей платформы.


А что вы думаете, какой опыт интереснее и ценнее: в больших мультикатегорийных сервисах или в командах, сфокусированных на одном сервисе/продукте?

Еще больше про аналитику в td data dreamen

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

В конце прошлого года Группа Arenadata выпустила обновления ряда своих продуктов.

Новые релизы:

  • Arenadata DB (ADB) — v6.27.1.59;

  • Arenadata DB Backup Manager (ADBM) — v2.3.2;

  • Arenadata DB Control (ADBC) — v4.11.0;

  • Arenadata Streaming (ADS) — v3.6.2.2.b1;

  • Arenadata Catalog (ADC) — v0.8.0;

  • Arenadata Cluster Manager (ADCM) — v2.5.0.

Обновления компонентов Arenadata Cluster Manager (ADCM):

  • Arenadata Monitoring (ADM) — v4.1.0;

  • Arenadata Enterprise Tools (ADET) — v2024121800.

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

⛓ Текст обзора и ссылки на полное описание релизов здесь.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Учим SQL с помощью «Игры в кальмара». Вышел занимательный учебник, где нужно стать частью Организации Squid Game и помогать в подготовке Игр с помощью SQL.

Вы только что были приняты на работу в качестве Data Scientist в таинственную организацию Squid Game. Фронтмен, управляющий Squid Games, пообещал вам полностью удаленную работу. Но, как это обычно бывает в индустрии, вас подставили и обманули. Оказалось, что роль больше связана с аналитикой продуктов на SQL, а работа не полностью удаленная, а гибридная: 5 дней в офисе, 2 дня удаленно. Вы даже не успели пожаловаться на эту работу, как фронтмен приставил к вашей голове пистолет и начал требовать ответы на различные бизнес‑вопросы. Вы должны написать SQL‑запросы, чтобы ответить ему — иначе пуля.

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Представляем YDB DWH компонент для аналитической обработки данных в СУБД Яндекса

В YDB появилась новая функциональность: теперь СУБД Яндекса поддерживает работу со сложными аналитическими запросами (OLAP). Благодаря этому компании смогут не только хранить и обрабатывать в YDB сотни терабайт транзакционных данных, но и выполнять над этими данными запросы и создавать системы для поддержки принятия решений — корпоративные хранилища данных.

Система горизонтально масштабируется за счёт шардирования — автоматического партиционирования по объёму и нагрузке, — а также обеспечивает быстрое выполнение запросов благодаря массивно‑параллельной архитектуре (МРР).

Аналитическая функциональность компонента YDB DWH включает колоночные таблицы с консистентным хранением данных и управление смешанной нагрузкой. В платформу СУБД Яндекса также входит движок выполнения запросов со спиллингом данных на диск, стоимостный оптимизатор, федеративные SQL‑запросы к внешним источникам данных (S3, PostgreSQL, Greenplum, Oracle, Microsoft SQL), что позволяет создавать корпоративные хранилища данных. В планах реализация поддержки SQL-диалекта PostgreSQL для интеграции как в OLAP‑, так и в OLTP‑сценарии.

Платформа распространяется по коммерческой лицензии. Её можно и установить в собственной инфраструктуре (on‑premise), и использовать как управляемый сервис в Yandex Cloud.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии5

Подборка для аналитиков по работе с SQL

Собрали статьи, которые будут интересны начинающим аналитикам. Если вы только начинаете знакомство с SQL или хотите освежить знания, эта подборка для вас.

Типы данных SQL — что о них нужно знать начинающему аналитику. Разбираем, какими они бывают и как с ними работать.

Таблицы в SQL: типы и операции — различные типы таблиц и основные операции, которые можно выполнять над ними.

SQL-запросы — основные команды для управления базами данных.

Оконные функции в SQL — что это и как использовать.

Основные ошибки SQL — список распространённых ошибок в работе с запросами баз данных SQL и лучших практик, о которых забывают некоторые пользователи. Рассказываем, как найти ошибки и исправить их.

Потренироваться и решить 70 задач в тренажёре можно на бесплатном курсе «Основы работы с базами данных и SQL».

Теги:
Рейтинг0
Комментарии0

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

Чтобы изменить такую объектную модель, например, добавить или удалить атрибут, нужно внести изменения в схему базы данных, то есть выполнить DDL‑операцию. Она сопровождается блокировками таблиц и увеличением времени простоя при работе с данными. Кроме того, при увеличении числа атрибутов можно превысить ограничение на количество колонок в таблице. Например, в Postgres их можно создать не более 1600.

Эти проблемы можно устранить, используя хранение данных в формате JSON. Основные преимущества такого подхода:

  • отказ от фиксированной структуры таблиц;

  • гибкость без необходимости изменения схемы.

Обращение к динамическим полям может осложниться при работе с Hibernate до версии 6.2. Более ранние версии не позволяют обращаться к полям внутри JSON на уровне HQL, что ограничивает возможности фильтрации и сортировки. Поэтому оптимальный вариант — использовать Native SQL. Hibernate позволяет регистрировать SQL‑функции, чтобы вызывать их из HQL‑запросов. Пример регистрации такой функции для Postgres приведен ниже:

registerFunction("jsonQuery",
    new SQLFunctionTemplate(StandardBasicTypes.STRING,
        "jsonb_path_query_first(?1, ?2)::varchar"));
  • Первый параметр — колонка в БД, внутри которой хранится JSON, выполняющий запрос.

  • Второй параметр — запрос в виде JSON Path, который позволяет добраться до определенных полей.

Пример структуры JSON и использования на ней SQL-функции в запросе:

{
  "CPU_Brand": "Intel",
  "CPU_Model": "Xeon 8380",
  "RAM_Size_GB": 64
}
SELECT obj.id
FROM userObject obj
WHERE jsonQuery(obj.json, '$.CPU_Brand') = 'Intel'

При работе с более сложными вещами, например, фильтрация объектов с вложенными данными, SQL Server требует применения конструкций CROSS APPLY и openjson.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии3

Пишем эффективные аналитические запросытретья лекция курса в МГТУ им. Баумана

Третья лекция нашего курса «Deep dive into SQL and DWH» прошла 21 ноября — делимся видеозаписью!

Дата-архитектор Павел Ковалёв рассказал о внутреннем устройстве систем Greenplum и Clickhouse и возможностях, которые они предоставляют с точки зрения оптимизации запросов.

Посмотреть запись можно здесь:

Оставшиеся два занятия курса пройдут в формате очной практики. Видеозаписи трёх прошедших лекций доступны в отдельном плейлисте.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Пишем эффективные аналитические запросывторая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Вторая лекция прошла 14 ноября; предлагаем посмотреть её видеозапись.

Внутри — обзор инструментов построения DWH/Data Lake, в том числе: Hadoop, Spark, Trino, Databricks, Amazon Athena, Amazon Redshift и Google BigQuery.

Посмотреть можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса будет посвящена техникам оптимизации аналитических SQL-запросов и состоится уже в ближайший четверг, 21 ноября, с 17:25 до 19:00.

Присоединяйтесь в зуме!

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

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

Пишем эффективные аналитические запросы: первая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Первая лекция прошла 7 ноября — предлагаем посмотреть её видеозапись.

Внутри лекции:

  • Обзор основных понятий курса (OLTP и OLAP, хранилище данных, его базовые слои, архитектуры обработки данных и т.д.)

  • Устройство DWH — на примере компании Сравни

  • Основы оптимизации аналитических SQL-запросов

  • Как решать проблемы с неэффективными запросами: практические кейсы

Посмотреть запись можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса, посвященная архитектурному обзору инструментов для построения DWH, пройдёт уже в ближайший четверг, 14 ноября, с 17:25 до 19:00. Присоединяйтесь в онлайне!

***

Больше информации о наших лекциях, митапах, статьях и других полезных материалах про ИТ, в тг-канале Sravni Tech.

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

Привет! Я — Ося, разработчик в Инновационном Центре «Безопасный транспорт», ваш виртуальный проводник в мир технологий и разработки. В блоге рассказываю, как решаю сложные задачи и делюсь знаниями. Здесь мы будем разбираться в коде, обсуждать подходы к проектам и актуальные тренды в IT. Пишу о разработке, больших данных и инновационных технологиях.

Я — робот-осьминог и талисман ИЦ, который иллюстрирует разносторонность и многозадачность нашей команды. Мои 8 щупалец представляют различные направления работы, а 3 сердца обеспечивают высокую эффективность. Отсутствие скелета позволяет гибко адаптироваться к изменениям, а более 1000 рецепторов на щупальцах помогают мне воспринимать малейшие колебания в окружении.

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

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

Как обрабатывать 5 млн изменяющихся форм в минуту с SLI 99.99% — Кирилл Грищук

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

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

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/qHW9

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Сделал Неовим-плагин, для работы дбт-моделями. Пока реализованы несколько сценариев:

  • запуск модели;

  • полный перезапуск модели;

  • компилирование модели с выводом в новый буфер;

  • генерация yaml-описания модели с выводом в новый буфер;

  • отображение зависимостей модели в Телескопе.

Установка и доступные команды доступны в репозитории. Если есть пожелания и рекомендации — пишите в гит или телеграм.

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Чем дольше копаю тему статистического анализа производительности СУБД, тем больше удивляюсь - почему никто не занимался/не занимается использованием математических методов в DBA ? Статей и материалов практически - нет. По performance engineering - можно найти, по DBA в общем то тишина.

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

Это же так просто и в общем то лежит на поверхности - сделал изменение , собери статистику влияния и оцени характер полученных результатов по совокупности опытов. Нужно подчеркнуть - не картинки, не "кажется" , "наверное" , "скорее всего", "может быть" , а цифры. И цифры взятые не с потолка , а рассчитанные математически. И даже не надо ничего нового придумывать и изобретать - медиана, мода , стандартное отклонение , дисперсия , корреляция - 3й курс КАИ, если не ошибаюсь. Вполне достаточно , для получения объективных результатов анализа, а не гаданий и шаманских танцев с бубнами.

Почему DBA не используют математику ? Риторический вопрос ....

Великие - правы.
Великие - правы.

Теги:
Всего голосов 4: ↑1 и ↓30
Комментарии5

О способе оценки производительности отдельного SQL запроса .

В дополнении к теме:

Размышления о мониторинге производительности отдельного SQL запроса

Для возможного варианта решения задачи:

https://habr.com/ru/posts/833162/

если производительность отдельного SQL запроса в настоящее время не мониторится.

Предположение.

Для того, чтобы оценить производительность отдельного SQL запроса необходимо и достаточно получить отношение стоимости запроса (EXPLAIN ANALYSE) к актуальному времени выполнения запроса .

Важное следствие и ограничение:

Данную оценку производительности можно получить только на данный конкретный момент времени при данном конкретном состоянии СУБД в целом.

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

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

Теги:
Всего голосов 4: ↑1 и ↓30
Комментарии3

Друзья! У Петра вышло продолжение серии обзорных статей про ClickHouse — open-source OLAP базу данных, ориентированную на колонки. В новой статье наш DevOps-инженер рассказывает про особенности репликации в этой СУБД.

Из этой части вы узнаете:

  • как работают сервисы координации Zookeeper и ClickHouse Keeper;

  • по какой причине может произойти падение репликации;

  • почему не следует очищать Keeper вручную.

Чтобы вспомнить, о чём Пётр рассказывал в первой части — нажмите сюда.

А чтобы ознакомиться с новой частью — сюда.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

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