Pull to refresh
4
1
Send message

Индексы в PostgreSQL — 1

Reading time17 min
Views436K

Предисловие


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

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

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Total votes 104: ↑103 and ↓1+102
Comments59

Как избавиться от дублей в базе данных (на примере MS SQL)

Reading time10 min
Views17K

Всем привет! Меня зовут Евгений, я занимаюсь разработкой и проектированием в Ozon. Больше всего работаю с MS SQL и C#, но попадаются и другие СУБД и языки программирования.

Ozon как продукт быстро растёт: во втором квартале этого года мы доставляли больше миллиона посылок в день. Для обработки такого объёма заказов мы используем разные языки и платформы: .NET (C#), Go, MS SQL Server и PostgreSQL.

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

Я расскажу об одном таком случае, когда наша команда потратила много времени и сил, но всё-таки нашла оптимальный способ решения проблемы дублирования данных.

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

Читать далее
Total votes 40: ↑39 and ↓1+58
Comments45

Как мы использовали расширенную статистику Postgres и ускорились в 2850 раз

Reading time9 min
Views13K

В этом переводе к старту курса по Fullstack-разработке на Python напоминаем о том, насколько важно знать технологии в деталях, грамотно применять их и планировать работу в целом. Цифра 2850 в заголовке — не преувеличение: ранее занимавший две минуты запрос в базе данных компании Affinity сегодня выполняется за 42 миллисекунды. Подробности, как всегда, под катом. А если вам нужен план развития навыков с большим количеством практики, вы можете обратить внимание на наши курсы.

Читать далее
Total votes 21: ↑18 and ↓3+19
Comments5

Теория графов. Часть третья (Представление графа с помощью матриц смежности, инцидентности и списков смежности)

Reading time4 min
Views86K

Пытаюсь объяснить, как представлять матрицы смежности, инцидентности и списки смежности (инцидентности). И немного говорю о взвешенном графе.

Залетай
Total votes 6: ↑5 and ↓1+6
Comments19

Опасные «вкусняшки». Ядовитые лесные ягоды. Памятка для детей и взрослых

Reading time14 min
Views89K
Почитали читатели мои статьи про ядовитые растения и внезапно озаботились дикорастущими ягодами. Ведь ухватить растение желающих намного меньше, чем попробовать незнакомую ягоду яркой расцветки. Я решил отреагировать, и представить вашему вниманию шорт-лист ядовитых лесных ягод (исчерпывающий?). По всем вопросам, в т.ч. с фотографиями незнакомых растений — обращаться в тг-канал LAB-66

Красна ягодкА, да на вкус горькА
Total votes 47: ↑42 and ↓5+51
Comments142

Теория графов. Термины и определения в картинках

Reading time5 min
Views198K

В этой статье мы познакомимся с основными терминами и определениями Теории графов. Каждый термин схематично показан на картинках.

Граф - это топологичекая модель, которая состоит из множества вершин и множества соединяющих их рёбер. При этом значение имеет только сам факт, какая вершина с какой соединена.

Теория графов
Total votes 17: ↑15 and ↓2+16
Comments8

Методы укладки Gephi. Force Atlas и Force Atlas 2

Reading time4 min
Views3.5K

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

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

Рассмотрите свои варианты с точки зрения целостности. Конечная цель создать граф, который не только понятен, но и позволяет рассказать убедительную историю. Если при достижении этих целей макет выглядит впечатляюще, даже лучше! Однако любое прочтение литературы и поиск в интернете быстро покажет, что многие графы выглядят впечатляюще, но не передают смысла данных, и они настолько плотны, что их невозможно прочитать. Не становитесь жертвой создания, чего-то впечатляющего, ради красивой картинки - всегда помните, что вы используете средство просмотра графов, и делаете все возможное, чтобы показать данные чётко. Теперь, когда мы определили приоритеты, мы можем перейти к рассмотрению различных компоновок Gephi.

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Графы большие и маленькие: интеллектуальное решение проблемы выбора представления

Reading time14 min
Views9.9K
(Этюд для программистов или заявка на Интернет-поиск нового типа)



Программа, делающая из мухи слона (далее программа МС), показала, что неориентированный граф существительных с заданным количеством букв хоть и содержит тысячи вершин, но при этом довольно «тощий» (т.е. имеет сравнительно не много ребер) и до полного графа ему далеко (см. Пример 1). Вслед за Чарлзом Уэзереллом (Charles Wetherell), автором широко известной книги «Этюды для программистов», выбрал жанр этюда, чтобы представить различные способы представления таких графов. (И сделать из этого выводы для автоматизации выбора представления – вплоть, может быть, до Интернет-поиска нового типа).

Start for word length 8
6016 words loaded from dictionary file: ..\Dictionary\ORF3.txt
Graph was made: edges number = 871


Пример 1. Характеристики графа существительных длиной 8 букв.
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

Как формируются зарплаты с точки зрения экономики и почему программисты столько получают

Reading time4 min
Views55K

Всем же интересно про зарплаты? Давайте про зарплаты

Меня зовут Алексей и я работаю в Райффайзенбанке техлидом. Последние 12 лет я нон-стоп нанимаю технических специалистов и меня всегда интересовал зарплатный гэп между айтишниками и не-айтишниками. Судя по дискуссиям в интернете — разница в зарплатах волнует многих. Так получилось, что в качестве хобби я интересуюсь экономикой. Поэтому когда моих знаний стало хватать для понимания причин такого разрыва, то в голове сразу же щелкнули шестеренки, картина мира обрела гармонию и я получил заслуженную порцию дофамина.

Под катом я рассказываю о том, как формируется зарплата (особенно программиста) с точки зрения экономики.

Читать далее
Total votes 58: ↑50 and ↓8+54
Comments399

Вертебро-базилярная недостаточность — болезнь программиста с тысячью лиц

Reading time13 min
Views25K


Наш организм куда сложнее любой компьютерной программы. И если даже при работе с кодом бывает трудно определить истинную причину того или иного бага, то что тогда говорить о «неполадках» в человеческом теле? Именно поэтому банальный совет «если чувствуете недомогание, обратитесь к врачу» никогда не потеряет своей актуальности, ведь один и тот же симптом может быть следствием абсолютно разных патологий, и только опытный специалист способен выявить истинную причину его возникновения. Впрочем, не будем голословными, а лучше рассмотрим конкретный пример.

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

Однако в то же время все перечисленные симптомы, столь непохожие друг на друга, характерны и для вертебро-базилярной недостаточности (ВБН), а причиной развития данного недуга может оказаться искривление шейного отдела позвоночника, вызванное неправильной осанкой при длительной работе за компьютером. Что же это за болезнь и как не допустить ее развития? Об этом мы и расскажем в сегодняшнем материале.
Читать дальше →
Total votes 39: ↑37 and ↓2+48
Comments24

Шаблоны GRASP: Controller (контроллер)

Reading time3 min
Views13K
Привет, Хабр! Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Специально к старту нового набора на курс «Архитектура и шаблоны проектирования» я продолжаю серию своих публикаций про шаблоны GRASP.





Введение


Описанные в книге Craig'а Larman'а «Applying UML and patterns, 3rd edition», GRASP'овские паттерны являются обобщением GoF'овских паттернов, а также непосредственным следствием принципов ООП. Они дополняют недостающую ступеньку в логической лестнице, которая позволяет получить GoF'овские паттерны из принципов ООП. Шаблоны GRASP являются скорее не паттернами проектирования (как GoF'овские), а фундаментальными принципами распределения ответственности между классами. Они, как показывает практика, не обладают особой популярностью, однако анализ спроектированных классов с использованием полного набора GRASP'овских паттернов является необходимым условием написания хорошего кода.

Полный список шаблонов GRASP состоит из 9 элементов:

  • Information Expert
  • Creator
  • Controller
  • Low Coupling
  • High Cohesion
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations

В прошлый раз мы обсудили целых два принципа Low Coupling и High Cohesion. Сейчас я предлагаю рассмотреть еще один достаточно важный принцип GRASP, позволяющий установить правила обработки входящих системных событий. Ниже поговорим о том, что из себя представляет Controller.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments3

Недельный геймдев: #23 — 20 июня, 2021

Reading time4 min
Views2.2K

Из новостей на этой неделе: Weta Digital представили WetaM, прогресс по работе над Godot, Autodesk опубликовал список функций 3ds Max 2022.1, 3Dflow выпустили 3DF Zephyr 6.0, а выход Blender 3.0 хотят отложить на 2 месяца. Unity опубликовали первый в истории обзор сообщества ArtEngine, NVIDIA Omniverse запустили новый конкурс: Create with Marbles, который продлится до 30 июля.

Из интересностей: 3D-художник Quaternius поделился бесплатным паком низкополигональных космических кораблей, художник по визуальным эффектам Клинтон Джонс выпустил огромную подборку различных 3D-рендеров, присланных ему другими художниками.

Читать далее
Total votes 7: ↑5 and ↓2+5
Comments0

Как написать пассивный доход: Пишем качественного трейд бота на JS (часть 1)

Reading time4 min
Views63K

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

Читать далее
Total votes 26: ↑14 and ↓12+8
Comments98

Как защититься от синдрома запястного канала? 

Reading time9 min
Views58K


Наряду с компьютерным зрительным синдромом, о котором мы уже рассказывали ранее, среди IT-специалистов распространен и другой весьма серьезный недуг — синдром запястного канала. В чем проявляется данное заболевание и можно ли предотвратить его развитие? Давайте разбираться. 

Причины и симптоматика синдрома запястного канала


Для начала давайте определимся с терминологией, дабы в дальнейшем не возникало путаницы. Туннельный синдром (или компрессионно-ишемическая невропатия) — это совокупность клинических проявлений, обусловленных сдавлением или ущемлением нерва в узком анатомическом пространстве, образованном плотными структурами, в роли которых выступают кости, сухожилия, связки или мышцы. 

Человеческий организм имеет огромное количество подобных мест: на одной лишь руке могут развиться 8 разных туннельных синдромов. Поэтому с медицинской точки зрения называть синдром запястного канала, о котором пойдет речь в сегодняшней статье, просто туннельным синдромом, без уточнения локализации патологического процесса, некорректно. Хотя справедливости ради стоит сказать, что именно карпальный туннельный синдром (так называют синдром запястного канала неврологи) является самой распространенной формой компрессионно-ишемической невропатии из всех существующих: его общая доля в популяции составляет около 5%, а ежегодный прирост заболеваемости достигает 3 случаев на каждую тысячу населения.
Читать дальше →
Total votes 62: ↑60 and ↓2+81
Comments63

Обезьяна по имени Человек Разумный. Моё первое интервью со Станиславом Владимировичем Дробышевским

Reading time28 min
Views14K

Самир Ефимов: Здравствуйте.

Станислав Дробышевский: Здравствуйте.

Самир Ефимов: Рад вас видеть. Стоит рассказать, что и как всё будет происходить. Это приветствие нашим подписчикам. Итак, поскольку наше сообщество (Фанерозой) развивается и расширяется, то и темы, о которых мы будем разговаривать, тоже начинают выходить за рамки мира животных и людей. Давно известно, что сообщество «Фанерозой» ведут три человека: Маргарита Маяк, Александр Яскин и я, Самир Ефимов.

Читать далее
Total votes 22: ↑20 and ↓2+30
Comments43

Векторные языки — SQL интерпретатор в 100 строк

Reading time16 min
Views10K

В предыдущей статье я описал векторные языки и их ключевые отличия от обычных языков. На коротких примерах я постарался показать, как эти особенности позволяют реализовывать алгоритмы необычным образом, кратко и с высоким уровнем абстракции. В силу своей векторной природы такие языки идеально присоблены для обработки больших данных и в качестве доказательства в этой статье я полностью реализую на векторном языке простой SQL интерпретатор. А чтобы продемонстрировать, что программист на векторном языке может писать на векторном языке на любом языке, я реализую тот же самый интерпретатор на Rust. Преимущества векторного подхода столь велики, что даже интерпретатор в интерпретаторе сможет обработать select с группировкой таблицы в 100 миллионов строк за полминуты.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments9

Психотронная тюрьма риторики: история о том, что мешает нам мыслить здраво

Reading time13 min
Views71K

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

Познакомился я с ними, когда работал академконсультантом в США: помогал получать высшее образование так, чтобы иметь хорошие оценки и не тратить слишком много денег. В колледжах США риторику изучают все гуманитарии на первом курсе, иногда даже технари. И так как всю риторику сводили именно к способам убеждения, мои клиенты из Ближнего Востока и Китая часто этим возмущались. И спрашивали меня, какой скрытый смысл в том, чтобы изучать такие очевидные вещи.

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

Я так много рассказывал об этом на кухнях и в чатах, что решил написать статью. А получился лонгрид с научными исследованиями, разбором влияния алгоритмических новостных лент, и безумным комиксом из мемов, который я делал 4 часа в Фигме. Поехали!

UPD Большое спасибо всем тем людям, что помогли мне исправить ошибки и очепятки! Только на Хабре так стремятся помочь, и это неоценимо.
Читать дальше →
Total votes 148: ↑135 and ↓13+169
Comments353

Information

Rating
1,708-th
Registered
Activity