• Индексы в 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
            • 12,3k
            • 8
          • Ежедневная работа с Git

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

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


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

            Далее очень много букв случайным образом превратились в пост.
          • Жизнь разработчика (в картинках)

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

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



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



              Читать дальше →
            • Исследуем базы данных с помощью T-SQL

              • Перевод
              Как dba и консультант по оптимизации производительности SQL Server в Ambient Consulting, я часто сталкиваюсь с необходимостью анализа узких мест производительности на экземплярах SQL Server, которые вижу первый раз в жизни. Это может быть сложной задачей. Как правило, у большинства компаний нет документации по их базам данных. А если есть, то она устарела, или же её поиск занимает несколько дней.

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

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

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

              Ну, хватит слов, давайте я покажу скрипты!
              Читать дальше →
            • Задачник.NET

                Этот пост предназначается всем любителям платформы .NET и языка C#. Думаю, многие встречали на просторах сети разнообразные задачки на понимание тех или иных особенностей платформы или языка. Я большой любитель подобных задачек и головоломок. Они помогают глубже понять определённые области и повысить собственные программистские навыки. Однажды я решил сделать подборку подобных задачек, чтобы можно было показывать другим людям и обсуждать нюансы работы с .NET/C#. Когда задачек накопилось достаточное количество, появилась новая мысль — оформить мою подборку в виде книжки. Вашему вниманию предоставляется текущий вариант этого сочинения под названием «Задачник.NET».

                Cover
                Читать online
                Скачать PDF-версию
                Исходные коды на GitHub
                Читать дальше →
              • Управленческие инструменты: Почему заказчики требуют дурацкие отчеты?

                  На одной из конференций произошел комичный случай. Подходит слушательница:

                  — Александр, есть такой вопрос: Как нам повысить уровень доверия в отношениях с заказчиком?

                  — А что сейчас не так с уровнем доверия?

                  — Ну, у нас есть команда, есть менеджер. И мы хотим, чтобы заказчик доверял команде и общался только с менеджером. А он лезет напрямую к инженерам…

                  — А чем это плохо? Человек сразу получает ответы на свои вопросы, быстрые коммуникации и все такое.

                  — Понимаете… Мы ему джуниор инженеров продаем как синьор инженеров… И нам не хотелось бы, чтобы он обнаружил этот факт.


                  Напомню изначальную постановку вопроса: “Как нам повысить уровень доверия в отношениях с заказчиком?”

                  Вот о заказчиках сегодня и поговорим. А точнее, о простом инструменте, который:
                  • Поможет осознать, где находятся ваши отношения с заказчиком
                  • Покажет, почему формы отчетов иногда бывают такие идиотские
                  • Возможно, поможет понять причины “неадекватного” поведения заказчика


                  Читать дальше →
                • Как правильно лгать с помощью статистики


                    Существуют три вида лжи: ложь, наглая ложь и статистика (источник)

                    Есть такой замечательный жанр — "вредные советы", в котором детям дают советы, а дети, как известно, всё делают наоборот и получается всё как раз правильно. Может быть и со всем остальным так получится?

                    Статистика, инфографика, big data, анализ данных и data science — этим сейчас кто только не занят. Все знают как правильно всем этим заниматься, осталось только кому-то написать как НЕ нужно этого делать. В данной статье мы именно этим и займемся.


                    Hazen Robert "Curve fitting". 1978, Science.

                    Структура статьи:
                    1. Введение
                    2. Предвзятая выборка (Sampling bias)
                    3. Правильно выбираем среднее (Well-chosen average)
                    4. И еще 10 неудачных экспериментов, про которые мы не написали
                    5. Играем со шкалой
                    6. Выбираем 100%
                    7. Скрываем нужные числа
                    8. Визуальная метафора
                    9. Пример качественной визуализации
                    10. Заключение и дальнейшее чтение

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