Как стать автором
Обновить
56.05
Рейтинг

SQL *

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

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

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

Блог компании Postgres Professional PostgreSQL *SQL *

Август в релизном цикле PostgreSQL месяц особенный. Еще не вышла официально 15-я версия, но уже закончился первый коммитфест 16-й версии. И мы можем посмотреть на самые интересные изменения.


Собираем сервер из исходного кода и вперед!


\dconfig server_version

List of configuration parameters
   Parameter    |  Value  
----------------+---------
 server_version | 16devel
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 3K
Комментарии 2

Новости

Перенос данных из Oracle в PostgreSQL: секционирование, временные таблицы и инструменты

Блог компании Postgres Professional PostgreSQL *SQL *

Поскольку тема «переезда» c СУБД Oracle на СУБД Postgres не теряет актуальности, продолжаем наш цикл о миграции. Это вторая статья о переносе данных из Oracle в Postgres (первая доступна по ссылке). На этот раз мы подробнее остановимся на секционировании и временных таблицах, а такжe рассмотрим существующий инструментарий для конвертации данных и сокращения времени простоя.

IOT-таблицы в Oracle

В СУБД Oracle есть так называемые IOT-таблицы, Index-Organized Tables. В обычных таблицах данные хранятся в любом порядке. IOT-таблицы хранят данные в структуре B-tree, которая логически отсортирована в порядке, указанном в полях первичного ключа. Данные лежат в листьях индекса и при его обходе и извлечении данных последние будут упорядочены. Стоит отметить, что этот порядок сохраняется. После добавления, обновления или удаления записей данные всё равно будут упорядочены.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.7K
Комментарии 10

Пять советов по исправлению перекошенных соединений в Apache Spark

Блог компании FirstVDS SQL *Серверная оптимизация *Apache *
Перевод

Соединения (Joins) являются одними из наиболее фундаментальных преобразований в типичной процедуре обработки данных. Оператор Join позволяет коррелировать, обогащать и фильтровать два входных набора (пакета / блока) данных (Datasets).
Обычно два входных набора данных классифицируются как левый и правый на основе их расположения по отношению к пункту/оператору Join.
По сути, соединение работает на основе условного оператора, который включает логическое выражение, основанное на сравнении между левым ключом, полученным из записи левого блока данных, и правым ключом, полученным из записи правого комплекса данных. Левый и правый ключи обычно называются соединительными ключами (Join Keys). Логическое выражение оценивается для каждой пары записей из двух входных наборов данных. На основе логического вывода, полученного в результате оценки выражения, условный оператор включает условие выбора — для отбора либо одной из записей (из пары), либо комбинированной записи (из записей, образующих пару).
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 385
Комментарии 0

Как реализовать магию Sqoop для загрузки данных через Spark

Блог компании билайн бизнес SQL *Big Data *Хранение данных *Hadoop *

Очень часто приходится слышать, что Sqoop — это серебряная пуля для загрузки данных большого объёма с реляционных БД в Hadoop, особенно с Oracle, и Spark-ом невозможно достигнуть такой производительности. При этом приводят аргументы, что sqoop — это инструмент, заточенный под загрузку, а Spark предназначен для обработки данных.

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

Первичное сравнение технологий

В нашем примере будем рассматривать загрузку данных из таблиц OracleDB.

Рассмотрим случай, когда нам необходимо полностью перегрузить таблицу/партицию на кластер Hadoop c созданием метаданных hive.

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

PostgreSQL Antipatterns: где скаляру в GiST место?

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *

В PostgreSQL есть "волшебный" тип индекса GiST, который позволяет быстро искать разные сложные вещи - от интервалов до массивов и даже реализовывать полнотекстовый поиск.

Про его внутреннее устройство и возможности подробно рассказывал Егор Рогов, а я в статье "PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»" показал, как с помощью расширения btree_gist он позволяет решать типовые бизнес-задачи.

Одной из таких задач является поиск отрезков внутри сегмента со скалярным идентификатором. И если для btree очевидно, что поле с меньшей кардинальностью должно стоять в индексе раньше - индекс от этого и меньше и быстрее (см. "DBA: находим бесполезные индексы"), то так ли это однозначно для btree_gist?

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

Языковая модель GPT-3 умеет объяснять код — рассказываем, как это можно использовать

Блог компании МойОфис Python *JavaScript *SQL *Искусственный интеллект
Перевод

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

На этот вопрос в своей новой статье отвечает британский разработчик Саймон Уиллисон* — директор по архитектуре Eventbrite и один из создателей веб-фреймворка Django. Среди различных вариантов применения языковой модели GPT-3 Уиллисон особенно подчеркивает ее способность объяснять, что делает код. По словам специалиста, в этом GPT-3 поразительно эффективна, поскольку явно обучалась на огромном количестве исходного кода.

Под катом — наш перевод материала, в котором автор демонстрирует недавние примеры из своей практики: объяснение кода на Python, JavaScript, SQL, а также работу в рамках GPT-3 с математическими формулами.

*Обращаем ваше внимание, что позиция автора не всегда может совпадать с мнением МойОфис.

Читать далее
Всего голосов 57: ↑54 и ↓3 +51
Просмотры 4.7K
Комментарии 7

PostgreSQL 15: Часть 5 или Коммитфест 2022-03

Блог компании Postgres Professional PostgreSQL *SQL *
Эта статья о мартовском коммитфесте завершает серию о принятых изменениях в PostgreSQL 15.

Предыдущие статьи посвящены первым четырем коммитфестам: 2021-07, 2021-09, 2021-11, 2022-01.

На момент публикации уже доступна вторая бета-версия PostgreSQL 15. Все приведенные ниже примеры легко попробовать самостоятельно.
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 3.6K
Комментарии 1

Разбор тестового задания в Тиньков [SQL]

MySQL *PostgreSQL *SQL *Data Mining *Microsoft SQL Server *

Недавно нам прилетело большое тестовое задание от Тиньков-Банка на должность аналитика данных. Там очень много задач, но сегодня мы разберем несколько — остановимся на мелочах и обратим внимание на тонкие моменты.

И, конечно, попишем SQL-запросы!

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 9.9K
Комментарии 60

Быстрая выгрузка результатов опроса из 1С-Битрикс и как передать в Excel произвольное количество столбцов SQL-запросом

SQL *1С-Битрикс *

Статья направлена на решение проблемы "зависания" выгрузки результатов опросов при использовании модуля Vote 1С-Битрикс в случае, если в опросе много вопросов или ответов. Так-же в статье реализована выгрузка в Excel SQL-запроса при заранее неизвестном количестве полей, т.е. каждое поле формируется динамически.

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

Создание и наполнение PostGIS при использовании Docker

PostgreSQL *SQL *OpenStreetMap *Геоинформационные сервисы *Визуализация данных *
Из песочницы
Tutorial

Пошаговая инструкция о том, как установить и использовать расширение PostGIS для PostgreSQL в Docker.

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 1.8K
Комментарии 6

Self-hosted EXPLAIN: наглядно и безопасно

Блог компании Тензор PostgreSQL *SQL *Администрирование баз данных *Визуализация данных *

С момента первой же хабрапубликации о возможностях нашего сервиса визуализации планов запросов PostgreSQL explain.tensor.ru (а было это уже больше 2 лет назад) пользователи задавали резонный вопрос: "Все у вас круто, но у нас в запросах и планах есть коммерческая инфа, которую отправлять куда-то наружу низзя... Можно как-то ваш сервис развернуть на своей площадке?"

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

Читать далее
Всего голосов 32: ↑32 и ↓0 +32
Просмотры 4.3K
Комментарии 9

Перенос данных с Oracle на PostgreSQL: основные этапы, несовпадающие типы и форматы данных

Блог компании Postgres Professional PostgreSQL *SQL *

В настоящее время тема миграции с СУБД Oracle на СУБД PostgreSQL (и разработанную на её основе СУБД Postgres Pro) является очень актуальной. В этой области у команды Postgres Professional накоплен многолетний опыт, которым мы решили поделиться. На основе наших материалов для внутреннего обучения мы подготовили серию статей для Хабра о миграции данных в PostgreSQL из «оракловой» базы.

Также на близкие темы можно посмотреть следующие доклады и мастер-классы.

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 7.7K
Комментарии 0

Пишем на Rust расширение для SQLite, чтобы научить его работать с файлами Excel

SQL *C *SQLite *Rust *
Перевод
Tutorial

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

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

Исходный код на GitHub

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 4.4K
Комментарии 0

SQL HowTo: наперегонки со временем

Блог компании Тензор PostgreSQL *Программирование *SQL *Администрирование баз данных *

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

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

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 3.9K
Комментарии 2

Вакцинирование продом

Блог компании «Ингосстрах» Oracle *SQL *
Из песочницы

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

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

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 8.1K
Комментарии 8

Синхронизируем приложения с помощью Advisory Locks (postgresql). Что это, зачем, и нюансы работы с pgBouncer

Блог компании Karuna Разработка веб-сайтов *PostgreSQL *Программирование *SQL *


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


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


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


Для решения подобных проблем в PostgreSQL есть так называемые необязательные блокировки (advisory locks), т.е. локи, которые берутся, исходя из логики приложения, а не автоматики хранения/выдачи данных в БД.

Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 3.4K
Комментарии 14

Как сделать таск-трекер под себя на low-code конструкторе

Ненормальное программирование *Анализ и проектирование систем *SQL *SaaS / S+S *Управление проектами *

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

Читать далее
Всего голосов 34: ↑33 и ↓1 +32
Просмотры 6.9K
Комментарии 24

PostgreSQL Antipatterns: куда крутить NULLS

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *

Периодически приходится разбирать случаи внезапного промаха запроса мимо "вроде бы подходящего" индекса - а все дело оказывается в чуть-чуть не той сортировке.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 4K
Комментарии 13

Пейджинг страниц в соцсетях

Perl *MySQL *SQL *

Для пагинации страниц используют смещение (OFFSET) и курсорную пагинацию (по ID), как более быструю. Тем не менее есть ещё один малоизвестный вид пагинации по меткам страниц (MARKS). Она является разновидностью курсорной пагинации, но использует не идентификатор, а ряд полей перечисленных в ORDER BY SQL-запроса.

Читать далее
Всего голосов 7: ↑2 и ↓5 -3
Просмотры 2.8K
Комментарии 32

Decorrelating Subqueries

SQL *Microsoft SQL Server *
Перевод

По материалам статьи Craig Freedman: Decorrelating Subqueries

В статье про скалярные подзапросы было несколько примеров, в которых оптимизатор мог переписать запрос с коррелированным подзапросом как запрос с соединением. Например, можно было видеть, как представленный ниже простой подзапрос с «in»:

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 863
Комментарии 0

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