Рубрика «postgres» - 2

"Избыток индексов — это не оптимизация, а замаскированная проблема производительности."

"Избыток индексов — это не оптимизация, а замаскированная проблема производительности."

«Мы пожинаем wait_eventЧитать полностью »

Пришла задача перевода одного из наших приложений с базой данных Oracle в Postgres. Приложение написано на php использует базу данных только как хранилище данных, т.е. только таблицы, ключи, индексы, последовательности. Хранимых процедур нет. Вся бизнес логика, формирование запросов – внутри кода php. ORM в приложении не использовалось, запросы SQL формируются в коде.

Читать полностью »

Привет! Меня зовут Бромбин Андрей. За последние годы у меня накопилось достаточно материалов, практик и ошибок — иногда красивых, но всё же ошибок. Этого хватило, чтобы собрать маршрут до грейда Middle.

Это не «большая книга всего на свете для джуна» и не выдуманный субъективный маршрут. Мне удалось привлечь к созданию этой статьи ведущих разработчиков крупных российских компанийЧитать полностью »

Давайте знакомиться. Меня зовут Андрей Жуйков, я уже больше 15 лет в IT и успел поработать как в России, так и в Европе. Сегодня я занимаюсь темой, которая у одних вызывает скептическую усмешку, а у других — настоящий интерес: импортозамещение в России, особенно в области СУБД. Скажу сразу: всё ниже — это исключительно мой взгляд, основанный на практических кейсах. И именно об этом хочу с вами поговорить.

Читать полностью »

Как работают с реляционными СУБД в Java-приложениях

Для взаимодействий Java-приложений с реляционной БД существует несколько способов:

  • Нативные запросы, с помощью JDBC, Spring JDBC Template и т. д.;

  • JPQL/HQL;

  • Criteria API;

  • Spring Data репозитории.

Читать полностью »

Разбирая взаимоблокировки у клиента, я вспомнил, насколько опасным может быть использование SELECT FOR UPDATE при конкурентном доступе. В этом нет ничего нового, но я заметил, что многие не знают о режимах блокировки строк в PostgreSQL, и решил подробно описать, когда следует избегать SELECT FOR UPDATE.

SELECT FOR UPDATE используют, чтобы избежать потерянных обновлений

Читать полностью »

Проблема

В golang нет undefined/none, из-за чего структуры, функции обычные и переменные нельзя использовать гибко - нет синтаксического сахара, как в python. Есть значение nil, но оно тоже не дает понимания, было ли значение передано или нет, так как golang по умолчанию задает значения переменным или полям структуры, например:

дана структура

type Person struct {
Name string
Position string
}

person := Pesron{Name: "Robert"}

при получении поля выдается значение по умолчанию (поле Position)

fmt.Println(person.Name) // Robert
fmt.Println(person.Position) // пустая строка

Читать полностью »

Об индексах на столбцах с низкой кардинальностью

Ранее среди коллег по СУБД бытовало мнение, что не стоит использовать B-tree индексы на столбцах с малым количеством уникальных значений. Считалось, что планировщик почти никогда не будет использовать такие индексы, поскольку дешевле последовательно прочитать всю таблицу, чем использовать случайное чтение (Disk I/O) на индексе, а затем переходить по указанному TID (Tuple ID) в таблицу. В случае, если необходимо прочитать сначала большую долю индекса, а потом большую долю таблицы, то дешевле сразу прочитать таблицу, чем выполнять двойную работу.
Читать полностью »

Уже давно стали обыденными внедрения решений на платформе 1С:Предприятие на тысячу одновременных пользователей. Есть внедрения и более масштабные. И масштаб внедрений растёт. Поэтому мы решили убедиться, что платформа выдержит нагрузку нашего самого востребованного на крупных внедрениях решения 1C:ERP на 30 000 одновременно работающих пользователях.

Почему именно 30 000 пользователей, как мы измеряли производительность и как добились желаемой производительности – под катом.

Читать полностью »
Spring AI и retrieval augmented generation

Spring AI и retrieval augmented generation

Spring AIЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js