Как стать автором
Обновить
303
40.6
Андрей Климковский @klimkovsky

CEO of NEANE Records

Отправить сообщение

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

Время на прочтение8 мин
Количество просмотров12K

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

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

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

Время на прочтение8 мин
Количество просмотров30K

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

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

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

Давайте, занырнём и посмотрим...
Всего голосов 68: ↑55 и ↓13+62
Комментарии146

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

Время на прочтение14 мин
Количество просмотров88K
Два предыдущих цикла статей были посвящены изоляции и многоверсионности и журналированию.

В этом цикле мы поговорим о блокировках (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. Настройка журнала — уровни и решаемые задачи, надежность и производительность.


Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии11

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

Время на прочтение9 мин
Количество просмотров7.2K

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

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

Время на прочтение25 мин
Количество просмотров131K
Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

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

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

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

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

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

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

Ну, поехали.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии35

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

Время на прочтение4 мин
Количество просмотров7.8K
Спешу поделиться хорошей новостью: жизнь авторов статей про PostgreSQL и их читателей стала немного лучше.

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

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

Вышел PostgreSQL 11

Время на прочтение4 мин
Количество просмотров27K


Специальный выпуск 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 по умолчанию: этот вариант команды теперь не перезаписывает все строки таблицы и, следовательно, работает быстро.

Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии31

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

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

Читать дальше →
Всего голосов 101: ↑88 и ↓13+75
Комментарии48

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

Время на прочтение5 мин
Количество просмотров11K
image

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

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

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

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

Время на прочтение4 мин
Количество просмотров10K


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

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

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

Время на прочтение5 мин
Количество просмотров21K
Сегодня, 29 сентября 2016 года, вышел новый релиз PostgreSQL, получивший номер 9.6. В нём содержится много весьма полезных фич, и нельзя не рассказать о них, тем более что вклад нашей компании в этот релиз существенен. Поэтому в этой статье мы расскажем о тех разработках Postgres Pro, которые вошли в сегодняшний релиз.
Читать дальше →
Всего голосов 61: ↑59 и ↓2+57
Комментарии16

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

Время на прочтение7 мин
Количество просмотров8.6K


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

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

Если эта тема вам интересна, прошу под кат.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии18

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

Время на прочтение5 мин
Количество просмотров43K

Свершилось!


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

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

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

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

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

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

Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии4

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

Время на прочтение12 мин
Количество просмотров653K

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

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

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

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров21K
Вдохновление написать данный пост про ракетную технику пришло от интереснейших тем про «незаметные сложности ракетной техники». И если не ошибаюсь, то вопрос про «зажигалки» в темах не рассматривался. Пишу первый раз, возможно тема банальная, но мне показалась интересной.

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

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



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

Расширение pg_variables

Время на прочтение10 мин
Количество просмотров11K

Расширение pg_variables


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


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


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

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии3

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

Время на прочтение5 мин
Количество просмотров14K


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

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

Время на прочтение6 мин
Количество просмотров34K

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


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

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии11

PostgreSQL в Azure. Часть 1

Время на прочтение7 мин
Количество просмотров6.8K

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


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


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

Информация

В рейтинге
144-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность