Pull to refresh
40
Karma
0
Rating
Александр Максименко @the_unbridled_goose

PostgreSQL Developer / DBA

  • Followers 33
  • Following 29

Сопоставление типов данных Oracle с PostgreSQL

OraclePostgreSQL
Translation
Один из самых первых и распространенных вопросов в процессе миграции базы данных с Oracle на PostgreSQL — «Как типы данных Oracle сопоставимы с типами PostgreSQL?».

Простой ответ заключается в том, что они очень совместимы и легко сопоставляются. В приведенной ниже таблице показано сравнение и сопоставление типов данных Oracle с PostgreSQL для наиболее распространенных типов Oracle. Эти базовые типы данных лишь поверхностно демонстрируют то, что может сделать PostgreSQL, — она ​​имеет очень богатую систему типов и поддерживает настраиваемые типы. В состав встроенных типов входят JSON, массивы, UUID, IP-адреса, геометрические типы, перечисления и многое другое.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Views14K
Comments 5

О влиянии full-page writes

PostgreSQL
Translation
Настраивая postgresql.conf, Вы могли заметить, что там есть параметр full_page_writes. Имеющийся рядом с ним комментарий гласит что-то о частичной записи страниц и люди, как правило, оставляют его в состоянии on — что не плохо, это я и объясню далее в данной статье. Тем не менее, очень полезно понимать что full_page_writes делает, так как влияние на работы системы может быть значительным.

В отличие от моего прошлого поста про настройку чекпоинтов, этот не является пособием о том, как надо настраивать сервер. Здесь не так много всего того, что Вы могли бы настроить, на самом деле, но я покажу Вам как некоторые решения на уровне приложения (к примеру, выбор типов данных) могут взаимодействовать с записью полных страниц.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Views5.9K
Comments 3

Сравнение схем Postgres и сопутствующие проблемы с представлениями

PostgreSQL
Translation
Сравнение схем двух или более различных баз данных Postgres является распространенной задачей, но она может стать более каверзной, если эти базы работают на разных версиях Postgres'а. Быстрым и каноническим способом сравнить схемы является использование одной и той же программы pg_dump для взаимодействия с каждой базой со --schema-only параметром. Этот метод работает великолепно, но имеются некоторые подводные камни, особенно при копировании представлений.

image
(Фото сделано Philippe Vieux-Jeanton)
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Views6.6K
Comments 0

PostgreSQL 9.6: Параллелизация последовательного чтения

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

image

Читать дальше →
Total votes 33: ↑33 and ↓0+33
Views26K
Comments 8

Производительность приложений на основе PostgreSQL: явные и скрытые задержки

PostgreSQL
Translation
Если вы пытаетесь оптимизировать производительность Вашего основанного на PostgreSQL приложения, Вы наверняка пользуетесь базовыми инструментами: EXPLAIN (BUFFERS, ANALYZE), pg_stat_statements, auto_explain, log_statement_min_duration, и т.д.

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

Но задумывалились ли Вы о задержках в сети? Игроки знают о ней, но имеет ли это отношение к Вашему серверу с приложением?

image

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Views11K
Comments 3

JSON и PostgreSQL 9.5: с еще более мощными инструментами

PostgreSQL
Translation
PostgreSQL 9.5 представил новый функционал, связанный с JSONB, значительно усиливающий его уже имеющиеся NoSQL характеристики. С добавлением новых операторов и функций, теперь стало возможно с легкостью изменять данные, хранящиеся в JSONB формате. В этой статье будут представлены эти новые операторы с примерами, как им можно использовать.

С добавлением типа данных JSON в версии 9.2, PostgreSQL наконец-то начал поддерживать JSON нативно. Несмотря на то что с выходом этой версии стало возможно использовать PostgreSQL как «NoSQL» базу данных, не так много можно было сделать на самом деле в то время из-за нехватки операторов и интересных функций. С момента выхода 9.2 версии, поддержка JSON значительно улучшалась в каждой следующей версии PostgreSQL, выливаясь сегодня в полное преодоление изначальных ограничений.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Views32K
Comments 8

Использование Java массивов для вставки, получения и изменения PostgreSQL массивов

PostgreSQLJava
Translation
Tutorial
Массивы являются мощным средством программирования, часто используемом разработчиками, как в Java так и PL / PgSQL. Интерфейсы потенциально могут стать сложнее, например, когда два из них пытаются и общаются друг другом. В этом разделе рассматривается, как можно написать простой код, который использует java.sql.Array интерфейс для вставки, извлечения, и обновления массивов в PostgreSQL.

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

CREATE TABLE city_example (
country TEXT, 
cities TEXT[]
);

Теперь мы будем использовать JDBC интерфейс для добавления, получения и изменения данных в этой таблице.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Views12K
Comments 1

Пять способов пагинации в Postgres, от базовых до диковинных

PostgreSQL
Translation
Вас может удивить тот факт, что пагинация, распространенная, как таковая, в веб приложениях, с легкостью может быть реализована нерационально. В этой статье мы испробуем различные способы пагинации на стороне сервера и обсудим их удобство при использовании в PostgreSQL. Статья поможет Вам понять, какая техника более уместна в Вашей ситуации, в том числе некоторые Вы, возможно, не видели прежде, а именно те, которые полагаются на физическую кластеризацию и сборщика статистики базы данных.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Views45K
Comments 33

О полезности индексов по выражениям

PostgreSQL
Translation
На обучающих занятиях по PostgreSQL, и на продвинутом, и на базовом курсах, я часто сталкиваюсь с тем фактом, что обучающиеся практически ничего не знают о том, насколько мощными могут быть индексы по выражениям (если они вообще знают об их существовании). Так что позвольте мне сделать для Вас небольшой обзор.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Views14K
Comments 8

Как определить каким файлам на диске соответствуют PostgreSQL таблицы

PostgreSQL
Translation
Иногда вам нужно определить какому файлу на диске соответствует таблица. У вас имеется путь, полный цифр, такой как base/16499/19401 и вы хотите разобраться в нем. Вы можете смотреть на сообщение об ошибке, которое упоминает имя файла, например:

ERROR:  could not read block 11857 of relation base/16396/3720450: read only 0 of 8192 bytes
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Views14K
Comments 0

Эмуляция безопасности строк в PostgreSQL 9.4

PostgreSQL
Translation
В PostgreSQL 9.5 появится декларативная безопасность строк. Вы можете задать правила для таблиц и сделать их выполнение автоматическим, к примеру, позволяя пользователю joe видеть только строки, у которых в поле owner стоит значение joe.

Это отличный инструмент и он уже давно должен был появиться. Этого не было сделано в PostgreSQL 9.4, зато было сделано с помощью автоматически обновляемых представлений security_barrier. Они и функции LEAKPROOF формируют фундамент, на котором и построена безопасность строк. Вы можете использовать эти составляющие части без поддержки декларативной политики для достижения безопасности строк в 9.4.

Ранее я уже обсуждал security_barrier представления. Этот пост содержит в себе примеры того, как может произойти утечка информации из представления и как security_barrier представления предотвращают такие утечки. Я предположу, что Вы знакомы с принципами, изложенными в оставшейся части статьи и не буду повторно устраивать демонстрацию того, как происходят утечки информации из представлений и т.д.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Views7.1K
Comments 0

Как работают в PostgreSQL security_barrier представления

PostgreSQLSQL
Translation
Вы могли заметить, что в PostgreSQL 9.2 была добавлена поддержка для security_barrier представлений. Я смотрел в этот код с прицелом на добавление поддержки автоматического обновления для них, как части развивающейся работы по защите на уровне строк для проекта AXLE, и я подумал что попробую объяснить как они работают.

Роберт уже объяснил в чем польза таких представлений и от чего они защищают (кроме того, это еще обсуждалось в "Что нового в PostgreSQL 9.2"). Сейчас же я хотел бы перейти к тому, как они работают и обсудить как security_barrier представления взаимодействуют с автоматически обновляемыми представлениями.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Views6.7K
Comments 0

Postgres NoSQL лучше, чем MongoDB?

PostgreSQLNoSQLMongoDB
Translation
В целом, системы управления реляционными базами данных были задуманы как «один-размер-подходит-всем решение для хранения и получения данных» на протяжении десятилетий. Но растущая необходимость в масштабируемости и новые требования приложений создали новые проблемы для традиционных систем управления РСУБД, включая некоторую неудовлетворенность подходом «один-размер-подходит-всем» в ряде масштабируемых приложений.

Ответом на это было новое поколение легковесных, высокопроизводительных баз данных, созданных для того, чтобы бросить вызов господству реляционных баз данных.
Читать дальше →
Total votes 69: ↑41 and ↓28+13
Views70K
Comments 72

Проектирование в PostgreSQL документо-ориентированного API: Комплексные запросы (Часть 4)

JavaScriptPostgreSQLSQL
Translation
Хранение документов в Postgres немного проще, теперь у нас есть серьезные процедуры сохранения, возможность запускать полнотекстовый поиск, и некоторые простые процедуры поиска и фильтрации.

Это только половина истории, конечно же. Рудиментарные поиски могут служить нуждам приложения, но они никогда не будут работать в долгой перспективе, когда нам надо будет задавать более глубокие вопросы.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Views5.7K
Comments 0

Проектирование в PostgreSQL документо-ориентированного API: Находя искомое (Часть 3)

JavaScriptPostgreSQLSQL
Translation
В частях первой и второй этой небольшой серии статей, я показал различные способы сохранения документа и последующего обновления его поискового поля. Кроме того, я показал как транзакционно сохранять множество документов. В этой статье я буду рассматривать варианты выполнения запросов.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Views5.9K
Comments 0

Проектирование в PostgreSQL документо-ориентированного API: Полнотекстовый поиск и сохранение многих документов(Часть 2)

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

Давайте сделаем это.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Views9.5K
Comments 0

Проектирование в PostgreSQL документо-ориентированного API (Часть 1)

JavaScriptPostgreSQLSQL
Sandbox
Данная статья является переводом, оригинальная статья находится вот здесь, автор Rob Conery.

Postgres, как многие знают, поддерживает JSON как тип хранения данных, а с выходом 9.4, Postgres теперь поддерживает хранение JSON в виде jsonb — бинарного формата.

Это прекрасные новости для тех, кто хочет шагнуть дальше простого «хранения JSON как текста». jsonb теперь поддерживает индексирование с использованием GIN индекса, а также имеет специальный оператор запросов, который позволяет получить преимущества GIN индекса.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Views16K
Comments 4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity