• Индексы в PostgreSQL — 1

      Предисловие


      В этой серии статей речь пойдет об индексах в PostgreSQL.

      Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

      В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.

      Индексы


      Индексы в PostgreSQL — специальные объекты базы данных, предназначенные в основном для ускорения доступа к данным. Это вспомогательные структуры: любой индекс можно удалить и восстановить заново по информации в таблице. Иногда приходится слышать, что СУБД может работать и без индексов, просто медленно. Однако это не так, ведь индексы служат также для поддержки некоторых ограничений целостности.
      Читать дальше →
    • Junior FPGA Design Engineer: как стать?

        Всем привет!

        Иногда начинающие разработчики не очень хорошо представляют, какую литературу надо читать для серьезного изучения того или иного языка.

        Разработка под FPGA (ПЛИС) — это не просто какой-то язык. Это очень объемная область, с огромным количеством подводных камней и нюансов.

        В этой статье вы найдете:
        • список тем, которые должен освоить начинающий разработчик под FPGA
        • рекомендуемую литературу по каждой из тем
        • набор тестовых вопросов и лабораторных работ
        • классические ошибки новичков (и советы по исправлению)

        Добро пожаловать под кат!
        Читать дальше →
      • Как перезагрузить сервер?

          Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.

          Как перезагрузить сервер? — Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.

          Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута — и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.

          В этой статье: что мешает серверу перезагрузиться и как ему помочь.

          Начнём с теории ребута.

          При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов — systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе — sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил — потерял.

          Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.
          Читать дальше →
        • Полный список флагов трассировки Microsoft SQL Server

            Microsoft SQL Server Флаги Трассировки


            Полный список Microsoft SQL Server флагов трассировки (359 флагов трассировки на текущий момент).


            ПОМНИТЕ: Будьте предельно осторожны с флагами трассировки, проверяйте их влияние в первую очередь в тестовой среде.

            Читать дальше →
            • +9
            • 14,3k
            • 8
          • Ежедневная работа с Git

            • Tutorial
            Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

            Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
            • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
            • будет ли менеджер и заказчик удовлетворён этим процессом?
            • будет ли легко работать разработчикам?
            • смогут ли новички быстро включиться в процесс?
            • можно ли процесс относительно легко и быстро изменить?


            Конечно, я попытаюсь рассказать обо всём по-порядку, начиная с основ. Поэтому, эта статья будет крайне полезна тем, кто только начинает или хочет разобраться с git. Более опытные читатели, возможно, найдут для себя что-то новое, укажут на ошибки или поделятся советом.

            Далее очень много букв случайным образом превратились в пост.
          • Обзор систем для ведения домашней бухгалтерии

              При отборе программ для обзора для меня немаловажным требованием является отсутствие синхронизации с каким-либо внешним сервисом (да, я параноик) и наличие версии для айфона. Сравнительная таблица прошарена в гуглдоксах.

              Если не оговорено отдельно, под «айфоном» подразумеваются все iOS-устройства. Комментарии к каждой программе я старалась давать по существу и для тех пунктов, которые не отражены в сравнительной таблице. Если в поле таблицы стоит звёздочка, то к данному значению есть комментарии в обзоре.

              Общий момент — те программы, которые обновляют курс валют автоматически, делают это с finance.yahoo.com.
              Читать дальше →
            • Курс молодого Desire'вода

              image
              Написать подобную статью меня сподвигнул тот факт, что для человека, влившегося в стройные ряды Desire'водов, информация об платформе Android очень уж фрагментирована. С одной стороны платформа для всех Android устройств одна, с другой стороны для каждого устройства есть свои нюансы и тонкости. Кроме того информации на таких форумах как 4pda.ru и forum.xda-developers.com очень много, но как правило она размазана по всем темам. Приходится продираться сквозь сотни страниц в попытках извлечь ценные частицы информации.
              Читать дальше →
            • Жизнь разработчика (в картинках)

                Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

                Когда я показываю босу, что окончательно пофиксил баг



                Когда проджект-менеджер входит в офис



                Читать дальше →
              • Ускорение загрузки Windows for fun and profit

                  image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

                  Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
                  Под катом много однообразных картинок и немножко унылого текста
                • Создание приложения в стиле Android

                  Часто, интерфейс даже очень популярных Android-приложений спроектирован кое-как и складывается впечатление, что большинство разработчиков даже не слышало о User Interface Guidelines. Но следование рекомендациям не очень сложно, а иногда даже позволяет экономить время на разработку. Для того, чтобы показать, что это действительно так, я предлагаю пройтись по нескольким ключевым элементам проектирования интерфейса приложения на примере слегка продвинутого «Hello World».
                  Статья расчитана на начинающих Android-разработчиков. Исходный код можно скачать по ссылке в конце, а пояснения будут касаться:
                  • Создания всплывающего меню
                  • Проектирования окна настроек
                  • Работы с Nine-patch graphics

                  Читать дальше →