Пересказ статьи Christopher Jones. The best of Relational and JSON — at the same time
Двойственные представления таблица-JSON в Oracle Database 23ai позволяют хранить данные в виде строк таблицы для получения преимуществ доступа SQL в реляционной модели, в то же время допуская доступ чтения и записи в виде документов JSON для
тех же самых данных. Они могут использоваться из таких языков, как Node.js и ODP.NET. В этой статье показывается, как использовать новые представления в Python.
Реляционная модель великолепна: вы можете избегать дублирования данных; гарантируется согласованность данных; вы имеете доступ посредством очень мощного и очень эффективного языка - SQL. Но от разработчиков требуется определить реляционную схему - таблицы, столбцы и типы данных - прежде, чем начать писать код. Не так легко предсказать будущее использование системы, которое может вызывать затруднения для выбранной схемы.
Вот почему вы так любите JSON. Объект JSON может содержать информацию для одного случая использования без необходимости использовать SQL для соединения таблиц. Доступ через простой запрос или единичное обращение к API базы данных. JSON имеет гибкую схему, поэтому, поскольку ваши случаи использования меняются в процессе жизненного цикла системы, вы можете легко модифицировать приложения. Но есть и недостатки: единственная иерархия может подходить лишь нескольким случаям использования. В данных могут оказаться дубликаты, что не только влияет на занимаемое пространство, но делает очень сложным поддержание согласованности. Более трудной становится оптимизация. Поэтому на первый взгляд простая модель может вызывать сложности в долгосрочной перспективе.
Продолжить чтение "Лучшее из двух подходов - реляционного и JSON - одновременно"
§ Изменения среди лидеров рейтинга
Рейтинг Участник (решенные задачи)
21 gennadi_s (179)
§ Лидеры недели
Участник w_sel all_sel select dml Всего Рейтинг
Belskiy V. (Gambit87) 13 56 21 0 21 976
DO R.M. (danchikPi) 3 9 5 0 5 2496
Vdovin S. (Rujan) 1 118 4 0 4 206
Блинов Р.К. (Blini) 2 47 4 0 4 1146
§ Претенденты на попадание в TOP 100
Рейтинг Участник (решенные задачи, время в днях)
137 Sa1avat (140, 151.500)
191 Tigra1 (126, 20.393)
206 Rujan (118, 359.116)
Продолжить чтение "Новости за 2025-08-23 - 2025-08-29"
Пересказ статьи Pradip Kharal. Full text search in postgresql
Полнотекстовый поиск или просто поиск текста - это процесс идентификации документов на естественном языке, которые удовлетворяют запросу, с дополнительной возможностью их сортировки по релевантности запросу. Хотя PostgreSQL содержит операторы ~, ~*, LIKE и ILIKE для текстовых типов данных, они не обладают многими существенными возможностями, а именно:
- Отсутствует лингвистическая поддержка.
- Не поддерживается упорядоченность результатов поиска.
- В целом выполняются медленно, т.к. отсутствует поддержка индексов.
Полнотекстовый индекс позволяет проиндексировать документы, поэтому мы можем быстро выполнять поиск текста. Этот процесс включает:
- Разбивка документов на токены.
- Преобразование токенов в лексемы.
- Хранение предварительно обработанных документов в оптимизированной для поиска форме.
Продолжить чтение "Полнотекстовый поиск в PostgreSQL"
Пересказ статьи Louis Davidson. DISTINCT and UNION: What happens when you use them together
В одном из ответов к ветке об использовании
SELECT * Aaron Cutshall заметил, что "еще одним из реальных убийц производительности является SELECT DISTINCT, особенно в сочетании с UNION. У меня есть целый список часто используемых скрытых «убийц» производительности!"
Я начал размышлять... Что происходит, когда вы используете их вместе? А когда вы используете UNION на множестве неуникальных строк, что происходит? Итак, я начал писать.
Продолжить чтение "DISTINCT и UNION: что произойдет, если использовать их вместе?"
§ Лидеры недели
Участник w_sel all_sel select dml Всего Рейтинг
Максимов И. (igor pupa) 12 64 24 8 32 643
Блинов Р.К. (Blini) 5 45 13 0 13 1184
Belskiy V. (Gambit87) 6 43 11 0 11 1178
Чвикова А.М. (Chvikova) 7 11 10 0 10 5482
Михайлов А.С. (RainBowAM) 3 58 5 0 5 803
Firsin A.A. (xlam) 4 10 5 0 5 5617
§ Претенденты на попадание в TOP 100
Рейтинг Участник (решенные задачи, время в днях)
137 Sa1avat (140, 151.500)
140 ChronoMorzh (130, 220.937)
203 Panzerkampfwagen (117, 241.643)
298 St.Constantine87 (85, 24.392)
310 _ORA_ (92, 402.854)
Продолжить чтение "Новости за 2025-08-16 - 2025-08-22"
Пересказ статьи Venky Rao. Postgresql: The simplicity
Предложение DISTINCT ON в PostgreSQL действительно является мощным средством для выборки уникальных записей на базе указанных столбцов. Давайте исследуем эту функциональность, используя учебную базу данных Northwind, и сравним ее с подходами в Oracle и SQL Server.
PostgreSQL DISTINCT ON
Для нахождения последнего заказа для каждого заказчика в базе данных Northwind, используя PostgreSQL:
SELECT DISTINCT ON (customer_id) customer_id, order_id, order_date
FROM orders
ORDER BY customer_id, order_date DESC;
Этот запрос извлекает самый последний заказ для каждого заказчика, упорядоченных по customer_id и order_date в убывающем порядке.
Продолжить чтение "PostgreSQL: простота"
Пересказ статьи Sudheer Gajula. PostgreSQL Async-IO using io_uring
Вышла бета-версия PostgreSQL 18.1, в которой появился асинхронный ввод-вывод, позволяющий увеличить его пропускную способность.
io_uring в linux поддерживает асинхронный ввод-вывод посредством разделяемых кольцевых буферов для принятия и выполнения задач.
io_uring
Ядро Linux имеет асинхронный интерфейс ввода-вывода, который называется io_uring. Два кольцевых буфера в разделяемой памяти, которые служат очередями между пространством пользователя и ядром, называются io_uring.
Очередь подачи заявок (SQ): асинхронные запросы ввода-вывода посылаются ядру пользовательским процессом посредством очереди подачи заявки.
Очередь выполнения заявок (CQ): ядро возвращает выход асинхронных операций ввода-вывода в пространство пользователя посредством очереди выполнения заявки.
Продолжить чтение "Использование io_uring для асинхронного ввода-вывода в PostgreSQL"
§ Популярные темы недели на форуме
Топик Сообщений Просмотров
101 (Learn) 5 8
105 (Learn) 4 9
97 (Learn) 3 10
97 (SELECT) 2 9
111 (Learn) 2 9
§ Авторы недели на форуме
Автор Сообщений
pegoopik 10
Nividimka 7
selber 3
Продолжить чтение "Новости за 2025-08-09 - 2025-08-15"
Пересказ статьи DbVisualizer. 5 Ways to Split Strings in PostgreSQL Complete Guide with Examples
Разбивка строк в PostgreSQL имеет важное значение в управлении и эффективном получении текстовых данных. PostgreSQL обладает мощными встроенными функциями, специально предназначенными для управления разбивкой строк, преобразования сложных текстов в организованные массивы или строки таблицы, тем самым упрощая манипуляцию и анализ данных.
Комплексные функции разбиения строк в PostgreSQL
1. SPLIT_PART()
Извлекает конкретные подстроки путем указания позиции после разбиения по разделителю.
-- Извлекает домен из почтового адреса
SELECT SPLIT_PART('john@example.com', '@', 2); -- 'example.com'
Идеально подходит для обработки адресов электронной почты, имен пользователей и расширений файлов.
Продолжить чтение "5 способов разбивки строк в PostgreSQL: полное руководство с примерами"
Пересказ статьи Arief JR. Optimize Your Database Step-by-Step Guide to Setting Up pgpool-II with PostgreSQL Master-Slave Configuration And Failover Implementation
Pgpool-II является ПО промежуточного уровня, которое находится между серверами PostgreSQL и клиентом баз данных PostgreSQL, обеспечивающего такие функции, как пул подключений, балансировку нагрузки, автоматическую отказоустойчивость, кэширование запросов и многое другое. Оно действует как прокси, обслуживая и распределяя клиентские подключения по множеству серверов баз данных PostgreSQL.
Вот обзор некоторых основных функций pgpool-II:
- Пул подключений: pgpool-II поддерживает пул установленных подключений к серверам PostgreSQL, снижая накладные расходы на создание и закрытие подключений для каждого запроса клиента. Это улучшает производительность путем минимизации времени установки соединения и использования ресурсов на сервере баз данных.
- Балансировка нагрузки: Распределяет клиентские соединения по множеству серверов PostgreSQL для равномерного распределения нагрузки. Это помогает улучшить масштабирование и производительность путем задействования ресурсов нескольких серверов.
- Автоматическая отказоустойчивость: pgpool-II может обнаруживать сбои серверов PostgreSQL и автоматически перенаправлять подключения на резервные серверы в случае отказа главного сервера. Это обеспечивает высокую доступность и отказоустойчивость приложений баз данных.
- Кэширование запросов: pgpool-II может кэшировать часто выполняемые запросы и их результаты, снижая рабочую нагрузку на серверы баз данных и улучшая время отклика для повторяющихся запросов.
- Параллельное выполнение запросов: Поддерживается распараллеливание выполнения запроса, обеспечивая распределение и параллельное выполнение запросов на множестве серверов PostgreSQL для более быстрой обработки запроса.
- Сторожевой таймер: pgpool-II включает функцию сторожевого таймера, который мониторит работоспособность и состояние серверов PostgreSQL и экземпляров pgpool-II, выполняяя по мере необходимости автоматизированные действия по отказоустойчивости и восстановлению для поддержания доступности системы.
Продолжить чтение "Оптимизируйте свою базу данных: пошаговое руководство по настройке pgpool-II с конфигурацией PostgreSQL Master-Slave и реализацией отказоустойчивости"
§ Изменения среди лидеров рейтинга
Рейтинг Участник (решенные задачи)
2 Kursist (240)
22 gennadi_s (178)
§ Лидеры недели
Участник w_sel all_sel select dml Всего Рейтинг
Новиков С.В. (@Ser589QA) 9 98 20 0 20 309
Noname N.N. (Artem74) 4 61 10 0 10 795
Pupkin (Kikimora) 3 18 5 0 5 4417
Продолжить чтение "Новости за 2025-08-02 - 2025-08-08"
Пересказ статьи mohyusufz. Boosting Performance: Optimizing PostgreSQL Functions
Хорошо оптимизированные функции могут значительно улучшить эффективность базы данных. В этой статье будут даны советы и предложены методы для обеспечения наиболее эффективной работы функций в PostgreSQL.
Как функции улучшают производительность
Функции могут улучшить производительность базы данных за счет:
- Сокращение сетевой задержки: Выполнение логики на стороне сервера уменьшает необходимость пересылки больших объемов данных по сети.
- Минимизация передачи данных: Функции могут обрабатывать данные на сервере и возвращать клиенту только необходимый результат.
- Кэширование планов выполнения: PostgreSQL кэширует планы выполнения для функций, уменьшая накладные расходы на повторяющиеся парсинг и построение плана.
Продолжить чтение "Повышение производительности: оптимизация функций PostgreSQL"
Пересказ статьи Steve Stedman. Removing Leading Zeros in SQL Server
При работе с данными в SQL server иногда возникает потребность удалить ведущие нули в строке. Эта задача является довольно общей, в частности, при работе с числовыми данными, которые хранятся в виде строк, как например ZIP-коды, коды товаров или другие форматированные числа. В этой статье мы рассмотрим несколько методов для удаления ведущих нулей в SQL Server.
Метод 1: использование функций CAST и CONVERT
Одним простым способом удаления ведущих нулей является преобразование строки в число, а затем обратно в строку. Этот подход хорошо работает, если вы знаете, что строка содержит только числовые символы.
Продолжить чтение "Удаление ведущих нулей в SQL Server"
§ Популярные темы недели на форуме
Топик Сообщений Просмотров
97 (Learn) 3 4
58 (DML) 2 3
190 (Learn) 2 5
47 (Learn) 2 6
§ Авторы недели на форуме
Автор Сообщений
Nividimka 4
selber 3
gennadi_s 2
Продолжить чтение "Новости за 2025-07-26 - 2025-08-01"
Пересказ статьи Jared Westover. Add Indexes to Improve SQL DELETE Performance
Вы добавляете индексы, чтобы ускорить запросы, но как насчет удаления данных? Говорили вам, что индексы замедляют удаление? Это объясняется тем, что чем больше копий данных разбросаны по индексам, тем больше данных должен удалить SQL Server при чистке. Но подтверждается ли это утверждение результатами тестов?
В этой статье мы исследуем важность индексов в улучшении операторов DELETE. Кроме того, многие разработчики полагают, что добавление внешнего ключа создает индекс, а это значит, что они обычно отсутствуют. Как можно определить, какие внешние ключи пропускают индексы? Не беспокойтесь, полезная DMV поможет обнаружить их. Начиная с сегодняшнего дня вы приобретете навыки ускорять ваши операторы DELETE.
Продолжить чтение "Добавьте индексы, чтобы улучшить производительность SQL DELETE"