Pull to refresh
303
19.1
Андрей Климковский @klimkovsky

CEO of NEANE Records

Send message

Первые блогеры: как дневники поселились в интернете

Reading time8 min
Views12K

Что такое блог?

Определение в энциклопедическом словаре 2009 года гласит, что это «сетевой журнал, или дневник событий в Интернете, содержащий регулярно добавляемую информацию личного характера, которую владелец блога (блоггер) предоставляет пользователям сети». Уже тогда это определение изрядно устарело. Блогеры эпохи расцвета русскоязычного ЖЖ второй половины нулевых писали не только «информацию личного характера», но и множество текстов на самые разнообразные темы, от глобальной политики и до каких-нибудь проблем биологии галапагосских черепах.
Читать дальше →
Total votes 30: ↑24 and ↓6+32
Comments14

Что в действительности кроет в себе страшная цифра одиннадцать — история Windows 11

Reading time8 min
Views30K

Привет, Хабр. Мы продолжаем наш ежедекадный блог, рассказывающий о нововведениях в операционной системе Windows. Список предыдущих статей приведён здесь: [Что в действительности кроет в себе страшная цифра восемь]

Если в те стародавние времена, когда я описывал нововведения Windows 8, я был немного расстроен тем, что Microsoft очень подробно и внятно рассказывали о нововведениях в последних версиях ОС, в то врем как Хабра была полна флейма, то сейчас всё происходит по-другому. Как-то так даже Microsoft перестали рассказывать о том, что же на самом деле нового происходит в мире Windows и как это выглядит.

Не бойтесь, я сижу на новой винде и могу вам рассказать всё как есть.

Давайте, занырнём и посмотрим...
Total votes 68: ↑55 and ↓13+62
Comments146

Блокировки в PostgreSQL: 1. Блокировки отношений

Reading time14 min
Views90K
Два предыдущих цикла статей были посвящены изоляции и многоверсионности и журналированию.

В этом цикле мы поговорим о блокировках (locks). Я буду придерживаться этого термина, но в литературе может встретиться и другой: замóк.

Цикл будет состоять из четырех частей:

  1. Блокировки отношений (эта статья);
  2. Блокировки строк;
  3. Блокировки других объектов и предикатные блокировки;
  4. Блокировки в оперативной памяти.

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

Индексы:

  1. Механизм индексирования;
  2. Интерфейс метода доступа, классы и семейства операторов;
  3. Hash;
  4. B-tree;
  5. GiST;
  6. SP-GiST;
  7. GIN;
  8. RUM;
  9. BRIN;
  10. Bloom.

Изоляция и многоверсионность:

  1. Изоляция, как ее понимают стандарт и PostgreSQL;
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Журналирование:

  1. Буферный кеш;
  2. Журнал предзаписи — как устроен и как используется при восстановлении;
  3. Контрольная точка и фоновая запись — зачем нужны и как настраиваются;
  4. Настройка журнала — уровни и решаемые задачи, надежность и производительность.


Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments11

Что заморозили на feature freeze 2019. Часть I. JSONPath

Reading time9 min
Views7.2K

После комитфеста 2019-03 произошла заморозка функциональности (feature freeze). У нас это почти традиционная рубрика: о прошлогодней заморозке мы уже писали. Теперь итоги 2019: что из нового войдет в PostgreSQL 12. В этой части обзора, посвященной JSONPath, используются в том числе примеры и фрагменты из доклада «Postgres 12 в этюдах», который прочитал Олег Бартунов на Saint Highload++ в СПБ 9 апреля сего года.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments7

MVCC-1. Изоляция

Reading time25 min
Views132K
Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то».

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

Ориентироваться я буду на тех, кто уже имеет определенный опыт использования PostgreSQL и хотя бы в общих чертах представляет себе, что к чему. Для совсем новичков текст будет тяжеловат. Например, я ни слова не скажу о том, как установить PostgreSQL и запустить psql.

Вещи, о которых пойдет речь, не сильно меняются от версии к версии, но использовать я буду текущий, 11-й «ванильный» PostgreSQL.

Первый цикл посвящен вопросам, связанным с изоляцией и многоверсионностью, и план его таков:

  1. Изоляция, как ее понимают стандарт и PostgreSQL (эта статья);
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Ну, поехали.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments35

Подсветка синтаксиса PostgreSQL

Reading time4 min
Views7.8K
Спешу поделиться хорошей новостью: жизнь авторов статей про PostgreSQL и их читателей стала немного лучше.

Как знают все хаброписатели, для оформления исходного кода используется специальный тег <source>, который подсвечивает синтаксис. Не секрет также, что подсветка не всегда получается идеальной, и тогда авторы (которым не все равно, как выглядят их статьи) вынуждены заниматься самодеятельностью — расцвечивать свой код с помощью <font color=...>.

Особенно печально все было с PostgreSQL, поскольку подсветка охватывала более или менее стандартный SQL и категорически не понимала специфики нашей СУБД. Шло время, Алексей boomburum старательно исправлял мои font-ы на source (а я — обратно), пока не стало очевидно, что подсветку надо чинить. Наконец Далер daleraliyorov подсказал выход: добавить поддержку PostgreSQL в библиотеку highlightjs, которой пользуется Хабр. И вот — готово, встречайте.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments5

Вышел PostgreSQL 11

Reading time4 min
Views27K


Специальный выпуск POSTGRESSO, посвященный выходу официального релиза версии 11.


На улице PostgreSQL праздник. После четырех beta вышла PostgreSQL 11 General Availability, то есть официальная версия. В анонсе есть даже приветственное слово Брюса Момджана: «готовя этот релиз, сообщество особенно заботилось о добавлении функциональности, необходимой для работы с очень большими базами данных. Доказано, что PostgreSQL хорошо работает с транзакционными нагрузками, а теперь новая версия — PostgreSQL 11 — облегчит разработчикам еще и создание приложений для Big Data».

В release notes выделяют

  • секционирование:
    • добавлено секционирование по хешу;
    • PRIMARY KEY, FOREIGN KEY, индексы (см. ниже на эту тему) и триггеры;
    • секция по умолчанию для записей, вышедших за границы созданных секций;
    • UPDATE по ключу секционирования теперь может автоматически перемещать запись в соответствующую секцию;
    • PostgreSQL научился исключать ненужные секции (partition pruning) во время исполнения запросов SELECT;
  • распараллеливание:
    • теперь можно параллельно создавать индекс в случае B-tree;
    • при CREATE TABLE… AS, CREATE MATERIALIZED VIEW и в некоторых случаях запросов с UNION;
    • улучшена производительность в параллельных HASH JOIN и SEQUENTIAL SCAN;
  • появились хранимые процедуры, и в них возможно управление транзакциями;
  • JIT-компиляция фрагментов запросов, выигрыш на вычислении выражений;
  • оконные функции теперь поддерживают все фреймовые опции SQL:2011 стандарта, в том числе расстояния по RANGE у PRECEDING/FOLLOWING, режим GROUPS, возможность исключения строк из фрейма;
  • появились покрывающие индексы [не покрывающие, а инклюзивные, строго говоря — прим. POSTGRESSO], использующие выражение INCLUDE при CREATE INDEX;
  • из раздела «разное»: ALTER TABLE… ADD COLUMN c значениями NOT NULL по умолчанию: этот вариант команды теперь не перезаписывает все строки таблицы и, следовательно, работает быстро.

Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments31

Внутренние тени в CSS

Reading time2 min
Views368K
Обычные тени легко реализовать с помощью box-shadow или text-shadow. Но как быть, если необходимо сделать внутренние тени? В этой статье описывается, как сделать такие тени с помощью всего нескольких строчек кода.

Читать дальше →
Total votes 101: ↑88 and ↓13+75
Comments48

Как работают ИТ-специалисты. Иван Панченко, Postgres Professional

Reading time5 min
Views11K
image

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

Будет интересно выяснить, что их объединяет, в чем они противоречат другу другу. Возможно, их ответы помогут выявить какие-то общие закономерности, полезные советы, которые помогут многим из нас.

Сегодня наш гость — Иван Панченко, заместитель генерального директора Postgres Professional. У него свой подход к руководству и противоречивое отношение к обеденному перерыву. А некоторые книги по программированию он читает почти как художественную литературу.
Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments1

ZSON: расширение PostgreSQL для прозрачного сжатия JSONB

Reading time4 min
Views10K


Недавно мы выложили на GitHub ZSON. ZSON — это расширение к PostgreSQL для прозрачного сжатия JSONB-документов. Сжатие осуществляется путем выделения строк, наиболее часто встречающихся в ваших документах, и построения словаря с этими строками. Притом строки могут быть не только ключами документа, но и значениями или, например, строками из вложенных массивов. В некоторых случаях ZSON позволяет уменьшить размер базы до двух раз и увеличить количество транзакций в секунду на 10%. В shared buffers документы хранятся в сжатом виде, за счет чего память тоже экономится.

Интересно? Читайте дальше, и вы узнаете, как пользоваться всем этим хозяйством на практике.
Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments30

Новый релиз PostgreSQL 9.6: вклад Postgres Professional

Reading time5 min
Views21K
Сегодня, 29 сентября 2016 года, вышел новый релиз PostgreSQL, получивший номер 9.6. В нём содержится много весьма полезных фич, и нельзя не рассказать о них, тем более что вклад нашей компании в этот релиз существенен. Поэтому в этой статье мы расскажем о тех разработках Postgres Pro, которые вошли в сегодняшний релиз.
Читать дальше →
Total votes 61: ↑59 and ↓2+57
Comments16

Примеры реальных патчей в PostgreSQL: часть 2 из N

Reading time7 min
Views8.7K


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

Сегодня мы рассмотрим примеры уже более серьезных патчей, устраняющих узкие места в коде, исправляющих достаточно серьезные баги, относительно крупные рефакторинги, и так далее. Как и ранее, основная цель статьи — не столько осветить изменения, принятые в PostgreSQL 9.6, сколько показать, что разработка open source проектов, в частности PostgreSQL, это интересно и не так сложно, как вам это может казаться.

Если эта тема вам интересна, прошу под кат.
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments18

PostgreSQL на русском всерьёз и надолго

Reading time5 min
Views43K

Свершилось!


PostgreSQL приходит в Россию

Наша компания официально завершила перевод документации PostgreSQL текущей версии на русский язык и в этой публикации мы хотим поведать, как это было. Мы также хотели бы рассказать о пути, который мы прошли для достижения этой цели (и какие направления мы перепробовали), но это, пожалуй, тема для отдельной статьи.

Перевод самого PostgreSQL на русский язык начался в далёком 2001 году, тогда вышла только версия postgresql 7.1, и в самом postgresql усилиями в том числе и наших разработчиков только появлялась возможность локализации сообщений (см. тут). Впервые перевод сообщений на русский был включён в версию 7.2, вместе с переводами на французский, немецкий, шведский, китайский и чешский.
Читать дальше →
Total votes 108: ↑106 and ↓2+104
Comments40

Java & PostgreSQL — встреча с Альваро Эрнандесом, Санкт-Петербург

Reading time2 min
Views4.2K
В среду, 6 июля, в 20:00, в питерском офисе компании Oracle состоится встреча JUG.ru с Альваро Эрнандесом, экспертом по PostgreSQL. Тема встречи — особенности взаимодействия Java с PostgreSQL.

Язык встречи — английский. Участие — бесплатное. Количество мест ограничено, необходима регистрация по ссылке.

Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments4

Как стать профессиональным веб-разработчиком: практическое руководство

Reading time12 min
Views653K

Дорога длинна и трудна, но интересна и полезна!

Статья задумывалась как практическое руководство для желающих стать профессиональным веб-разработчиком. Я уже более 20 лет пишу код для веба. Я ежедневно работаю с веб-разработчиками и помогаю им. В статье я опишу, что вам нужно выучить, когда вам нужно это выучить и где взять информацию (чаще всего даже бесплатно). Затем я дам совет по получению реального опыта, и что самое важное – по получению денег за написание кода.

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

Что нужно помнить:

1. Статью разрешается пролистывать

Руководство может помочь вам вне зависимости от вашего положения на дороге к профессиональной разработке. Прокрутите его к тому заголовку, который лучше всего описывает ваше сегодняшнее положение, и читайте оттуда. Если вы только начали этот путь, или пока размышляете об этом – последуйте совету Короля из «Алисы в стране чудес»:

Начните с начала, и продолжайте, пока не дойдёте до конца; и там уже остановитесь.
Читать дальше →
Total votes 49: ↑38 and ↓11+27
Comments129

Ракета в огне. Delta-IV Heavy — FireBall

Reading time4 min
Views21K
Вдохновление написать данный пост про ракетную технику пришло от интереснейших тем про «незаметные сложности ракетной техники». И если не ошибаюсь, то вопрос про «зажигалки» в темах не рассматривался. Пишу первый раз, возможно тема банальная, но мне показалась интересной.

11 июня 2016 года был произведен успешный пуск ракеты тяжелого класса Delta-IV Heavy c КА Orion9 (в рамках миссии NROL-37). Почему старт именно этой ракеты? Во-первых, потому что была запущена в очередной раз самая мощная действующая ракета, во-вторых, это был всего 9-й пуск Дельты Хэви, в-третьих, старты Дельты Хэви очень красивые и эффектные (низкая тяговооруженность, медленный подъем сквозь горящие клубы водорода).

Пуск РКН Delta-IV Heavy NROL-37:



Хоть пуск можно считать и рядовым, даже обычной рутиной, но я бы выделил старты данного типа ракет, у которых есть своя изюминка — так называемый Fireball — пламя разгорающихся паров водорода, сквозь которые стартует ракета. Хоть для наблюдателя это изюминка, для инженеров — это проблема, с которой необходимо бороться. А как это происходит написано ниже.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments96

Расширение pg_variables

Reading time10 min
Views11K

Расширение pg_variables


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


Решение обычно выглядит вполне прямолинейным — сначала получаем список, скажем, пользователей, потом для них строим требуемый результирующий набор; потом опять получаем список пользователей и строим второй набор; и все бы хорошо, если бы построение такого списка не оказывалось бы достаточно затратной операцией — и, таким образом, если на основании этого списка надо построить несколько результатов, то получается, что этот список надо получить несколько раз со всеми сопутствующими накладными расходами. Очевидным решением этой проблемы кажутся временные таблицы, и это действительно так; к сожалению, с ними связан ряд не самых приятных особенностей — для каждой временной таблицы требуется создавать файл (а при уничтожении таблицы — удалять его). Кроме того, эти таблицы, разумеется, не видны для процессов автовакуума и, следовательно, не очищаются автоматически, и по ним не собирается статистика. Что еще хуже, при наличии длительных активных транзакций может происходить неограниченный рост системного каталога; более того, кеш операционной системы заполняется данными о созданных файлах для временных таблиц, что ведет к общей деградации производительности.


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

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments3

PostgreSQL — не Rocket Science. Почем сейчас яйца?

Reading time5 min
Views14K


Постоянно натыкаюсь на высказывания из серии «PostgreSQL слишком сложная база для моего небольшого проекта, поэтому буду продолжать работать с MySQL».
В этой статье я хотел бы показать, что человеку, знающему MySQL, не составит абсолютно никакого труда начать разрабатывать под PostgreSQL
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments76

PostgreSQL: Случай в вакууме

Reading time6 min
Views34K

Один из наших клиентов, эксплуатирующий PostgreSQL под большой нагрузкой, столкнулся с проблемой, связанной с переполнением счетчика транзакций (xid wraparound), причем выхода из нее штатными средствами не существовало. Мы решили проблему с помощью хирургического вмешательства и выпустили патч, предотвращающий возникновение таких ситуаций в будущем.


В этой заметке мы расскажем, как и почему может произойти проблема и как ее не допустить.

Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments11

PostgreSQL в Azure. Часть 1

Reading time7 min
Views6.8K

Этой статьей мы начинаем цикл заметок об использовании PostgreSQL в Microsoft Azure.


Первая статья будет об установке и настройке кластера PostgreSQL:


  • Знакомство с ресурсами Azure
  • Управление через azure cli
  • Выбор подходящего хранилища
  • Сборка классической связки ведущий-ведомый в одной группе доступности
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments6
1

Information

Rating
288-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity