This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно сопоставление регулярных выражений на конечных автоматах
🤪14👍5🤔2🤓2
10 лучших методов масштабирования баз данных:
1. Индексация: cоздание индексов для часто запрашиваемых столбцов для ускорения поиска данных
2. Вертикальное масштабирование: обновление сервера базы данных, использование более мощного процессора, ОЗУ или хранилища для обработки возросшей нагрузки.
3. Кэшировнаие: хранение часто используемых данных в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика
4. Шардинг: распределение данных по нескольким серверам, разделение БД на более мелкие независимые фрагменты, что обеспечивает горизонтальное масштабирование и повышение производительности.
5. Репликация : Создание нескольких копий (реплик) базы данных на разных серверах, что позволяет распределять запросы на чтение между репликами и повышать доступность.
6. Оптимизация запросов: тонкая настройка SQL-запросов, исключение дорогостоящих операций и эффективное использование индексов для повышения скорости выполнения и снижения нагрузки на базу данных.
7. Пул подключений: сокращение накладных расходов на открытие/закрытие соединений с базой данных за счет повторного использования существующих соединений, что повышает производительность при интенсивном трафике.
8. Декомпозиция БД: разделение больших таблиц на более мелкие, более управляемые части (разделы), каждая из которых содержит подмножество столбцов из исходной таблицы.
9. Денормализация: хранение данных в избыточном, но структурированном формате, чтобы минимизировать сложные соединения данных и ускорить рабочие нагрузки с интенсивным чтением.
10. Представления: предварительное вычисление и сохранение результаты сложных запросов в виде отдельных таблиц, чтобы избежать дорогостоящих пересчетов, снизить нагрузку на базу данных и улучшить время отклика.
1. Индексация: cоздание индексов для часто запрашиваемых столбцов для ускорения поиска данных
2. Вертикальное масштабирование: обновление сервера базы данных, использование более мощного процессора, ОЗУ или хранилища для обработки возросшей нагрузки.
3. Кэшировнаие: хранение часто используемых данных в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика
4. Шардинг: распределение данных по нескольким серверам, разделение БД на более мелкие независимые фрагменты, что обеспечивает горизонтальное масштабирование и повышение производительности.
5. Репликация : Создание нескольких копий (реплик) базы данных на разных серверах, что позволяет распределять запросы на чтение между репликами и повышать доступность.
6. Оптимизация запросов: тонкая настройка SQL-запросов, исключение дорогостоящих операций и эффективное использование индексов для повышения скорости выполнения и снижения нагрузки на базу данных.
7. Пул подключений: сокращение накладных расходов на открытие/закрытие соединений с базой данных за счет повторного использования существующих соединений, что повышает производительность при интенсивном трафике.
8. Декомпозиция БД: разделение больших таблиц на более мелкие, более управляемые части (разделы), каждая из которых содержит подмножество столбцов из исходной таблицы.
9. Денормализация: хранение данных в избыточном, но структурированном формате, чтобы минимизировать сложные соединения данных и ускорить рабочие нагрузки с интенсивным чтением.
10. Представления: предварительное вычисление и сохранение результаты сложных запросов в виде отдельных таблиц, чтобы избежать дорогостоящих пересчетов, снизить нагрузку на базу данных и улучшить время отклика.
👍10✍3❤2👨💻1
Типы индексов базы данных
[1.] Кластерный индекс (clustered index)
◾️ Физически переупорядочивает строки данных на основе ключа индекса.
◾️ По одному индексу на таблицу
◾️ Значительно ускоряет запросы по диапазону (например, поиск всех заказов между датой X и Y) и запросы по индексированным столбцам
◾️ Может замедлить изменение данных (вставку, обновление, удаление) из-за переупорядочения.
[2.] Некластеризованный индекс (non-clustered index)
◾️ Создает отдельную структуру с указателями на строки данных, отсортированные по ключу индекса.
◾️ Допускается несколько индексов для одной таблицы.
◾️ Эффективно для поиска равенства (например, поиска клиента с идентификатором 123).
◾️ Может использоваться для индексов покрытия, где все требуемые столбцы включены в индекс.
[3.] Уникальный индекс
◾️ Гарантирует, что все значения в столбце или комбинации столбцов являются уникальными.
◾️ Могут быть кластеризованными или некластеризованными.
◾️ Предотвращает дублирование значений, обеспечивая целостность данных.
◾️ Часто используется для альтернативных ключей (кроме первичного ключа), которые должны быть уникальными.
[4.] Фильтрованный индекс (Filtered Index)
◾️ Индексирует только подмножество строк на основе предиката фильтра.
◾️ Улучшает производительность для запросов, которые часто фильтруют по указанному условию.
◾️ Уменьшает размер индекса по сравнению с индексацией всей таблицы.
[5.] Полнотекстовый индекс (Full-Text Index)
◾️ Обеспечивает эффективный поиск в текстовых данных (например, документах, статьях) на основе ключевых слов и фраз.
◾️ Использует специализированные алгоритмы индексации и поиска (например, инвертированные индексы).
Поддерживает такие лингвистические функции, как стемминг и тезаурус.
[6.] Композитный индекс (Composite Index)
◾️ Индекс, созданный по нескольким столбцам.
◾️ Может быть кластеризованным или некластеризованным.
◾️ Оптимизирует запросы, которые фильтруют или сортируют по нескольким столбцам.
◾️ Порядок столбцов в определении индекса имеет решающее значение для производительности.
[7.] Индекс покрытия/покрывающий индекс (Covering Index)
◾️ Включает все столбцы, необходимые для запроса, в сам индекс, избегая необходимости доступа к базовой таблице.
◾️ Может быть некластеризованным.
◾️ Значительно ускоряет запросы, которым нужны только данные из индексированных столбцов.
[8.] Индекс с включенными столбцами (Index with Included Columns)
◾️ Аналогично покрывающему индексу, но включает только неключевые столбцы.
◾️ Некластеризованные.
◾️ Может улучшить производительность запроса, если дополнительные столбцы используются часто.
[9.] XML-индекс
◾️ Индексирует XML-данные для эффективного выполнения запросов с использованием XPath или специфичных для XML функций.
◾️ Доступно в базах данных, поддерживающих типы данных XML.
◾️ Позволяет запрашивать определенные элементы или атрибуты в XML-документах.
[10.] Частичный индекс (Partial Index)
◾️ Индексирует только подмножество строк, которые соответствуют определенному условию.
◾️ Аналогично отфильтрованным индексам, но с большей гибкостью в определении условий фильтрации.
◾️ Может улучшить производительность запросов для узкоспециализированных вариантов использования.
[11.] Индекс битовой карты (Bitmap Index)
◾️ Эффективно индексирует столбцы с низкой кардинальностью (несколько уникальных значений).
◾️ Сохраняет битовые карты, указывающие, какие строки содержат определенное значение.
[1.] Кластерный индекс (clustered index)
◾️ Физически переупорядочивает строки данных на основе ключа индекса.
◾️ По одному индексу на таблицу
◾️ Значительно ускоряет запросы по диапазону (например, поиск всех заказов между датой X и Y) и запросы по индексированным столбцам
◾️ Может замедлить изменение данных (вставку, обновление, удаление) из-за переупорядочения.
[2.] Некластеризованный индекс (non-clustered index)
◾️ Создает отдельную структуру с указателями на строки данных, отсортированные по ключу индекса.
◾️ Допускается несколько индексов для одной таблицы.
◾️ Эффективно для поиска равенства (например, поиска клиента с идентификатором 123).
◾️ Может использоваться для индексов покрытия, где все требуемые столбцы включены в индекс.
[3.] Уникальный индекс
◾️ Гарантирует, что все значения в столбце или комбинации столбцов являются уникальными.
◾️ Могут быть кластеризованными или некластеризованными.
◾️ Предотвращает дублирование значений, обеспечивая целостность данных.
◾️ Часто используется для альтернативных ключей (кроме первичного ключа), которые должны быть уникальными.
[4.] Фильтрованный индекс (Filtered Index)
◾️ Индексирует только подмножество строк на основе предиката фильтра.
◾️ Улучшает производительность для запросов, которые часто фильтруют по указанному условию.
◾️ Уменьшает размер индекса по сравнению с индексацией всей таблицы.
[5.] Полнотекстовый индекс (Full-Text Index)
◾️ Обеспечивает эффективный поиск в текстовых данных (например, документах, статьях) на основе ключевых слов и фраз.
◾️ Использует специализированные алгоритмы индексации и поиска (например, инвертированные индексы).
Поддерживает такие лингвистические функции, как стемминг и тезаурус.
[6.] Композитный индекс (Composite Index)
◾️ Индекс, созданный по нескольким столбцам.
◾️ Может быть кластеризованным или некластеризованным.
◾️ Оптимизирует запросы, которые фильтруют или сортируют по нескольким столбцам.
◾️ Порядок столбцов в определении индекса имеет решающее значение для производительности.
[7.] Индекс покрытия/покрывающий индекс (Covering Index)
◾️ Включает все столбцы, необходимые для запроса, в сам индекс, избегая необходимости доступа к базовой таблице.
◾️ Может быть некластеризованным.
◾️ Значительно ускоряет запросы, которым нужны только данные из индексированных столбцов.
[8.] Индекс с включенными столбцами (Index with Included Columns)
◾️ Аналогично покрывающему индексу, но включает только неключевые столбцы.
◾️ Некластеризованные.
◾️ Может улучшить производительность запроса, если дополнительные столбцы используются часто.
[9.] XML-индекс
◾️ Индексирует XML-данные для эффективного выполнения запросов с использованием XPath или специфичных для XML функций.
◾️ Доступно в базах данных, поддерживающих типы данных XML.
◾️ Позволяет запрашивать определенные элементы или атрибуты в XML-документах.
[10.] Частичный индекс (Partial Index)
◾️ Индексирует только подмножество строк, которые соответствуют определенному условию.
◾️ Аналогично отфильтрованным индексам, но с большей гибкостью в определении условий фильтрации.
◾️ Может улучшить производительность запросов для узкоспециализированных вариантов использования.
[11.] Индекс битовой карты (Bitmap Index)
◾️ Эффективно индексирует столбцы с низкой кардинальностью (несколько уникальных значений).
◾️ Сохраняет битовые карты, указывающие, какие строки содержат определенное значение.
👍10❤2🔥1🤯1
Microsoft тестирует возможность установки Windows 11 в разделы диска с альтернативной файловой системой ReFS.
При чистой установке Windows с помощью файла ISO или прямой загрузке с помощью USB пользователь на этапе установки может выбрать в том числе тип файловой системы.
Возможность выбора типа файловой системы при разметке накопителя обнаружена в тестовой сборке с номером 27823 (Canary).
ReFS (Resilient File System) – файловая система, разрабатываемая Microsoft в качестве альтернативы NTFS. ReFS была представлена в 2012 г. и должна была стать альтернативой NTFS, переняв у нее все лучшее и отсеяв сложное. Например, в отличие от NTFS, ReFS не поддерживает короткие имена файлов, шифрование и сжатие на уровне файлов, а также жесткие ссылки и квоты. В то же время ReFS отличается более высокой надежностью, при этом в значительной степени сохраняет совместимость с возможностями NTFS
https://www.windowslatest.com/2025/03/27/windows-11-setup-will-let-you-choose-between-ntfs-and-refs-when-clean-installing/
При чистой установке Windows с помощью файла ISO или прямой загрузке с помощью USB пользователь на этапе установки может выбрать в том числе тип файловой системы.
Возможность выбора типа файловой системы при разметке накопителя обнаружена в тестовой сборке с номером 27823 (Canary).
ReFS (Resilient File System) – файловая система, разрабатываемая Microsoft в качестве альтернативы NTFS. ReFS была представлена в 2012 г. и должна была стать альтернативой NTFS, переняв у нее все лучшее и отсеяв сложное. Например, в отличие от NTFS, ReFS не поддерживает короткие имена файлов, шифрование и сжатие на уровне файлов, а также жесткие ссылки и квоты. В то же время ReFS отличается более высокой надежностью, при этом в значительной степени сохраняет совместимость с возможностями NTFS
https://www.windowslatest.com/2025/03/27/windows-11-setup-will-let-you-choose-between-ntfs-and-refs-when-clean-installing/
🤔6🙏3👏2👍1
Основные аспекты кэширования, которые следует учитывать:
Сценарии использования:
- Развертывание решения в памяти
- При работе с высоконагруженными системами
- Когда данные не обновляются часто
Техники кэширования:
- Cache aside
- Write-through
- Read-through
- Write-around
- Write-back
Алгоритмы удаления из кэша:
- Least Recently Used (LRU)
- Least Frequently Used (LFU)
- First-in First-out (FIFO)
- Random Replacement (RR)
Ключевые метрики:
- Коэффициент попадания в кэш
- Задержка
- Пропускная способность
- Коэффициент аннулирования (Invalidation Rate)
- Использование памяти
- использование ЦП
- Использование сети
Другие вопросы:
- Предварительная загрузка наиболее запрашиваемых данных при холодном пуске
- Время жизни (TTL)
Сценарии использования:
- Развертывание решения в памяти
- При работе с высоконагруженными системами
- Когда данные не обновляются часто
Техники кэширования:
- Cache aside
- Write-through
- Read-through
- Write-around
- Write-back
Алгоритмы удаления из кэша:
- Least Recently Used (LRU)
- Least Frequently Used (LFU)
- First-in First-out (FIFO)
- Random Replacement (RR)
Ключевые метрики:
- Коэффициент попадания в кэш
- Задержка
- Пропускная способность
- Коэффициент аннулирования (Invalidation Rate)
- Использование памяти
- использование ЦП
- Использование сети
Другие вопросы:
- Предварительная загрузка наиболее запрашиваемых данных при холодном пуске
- Время жизни (TTL)
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно алгоритмы балансировки нагрузки
👍7❤3🔥2
Типы ключей в базах данных
Primary key (Первичный ключ)
Уникальный идентификатор для каждой записи в таблице. Он не может быть равен NULL и должен быть уникальным для всей таблицы
Foreign key (Внешний ключ)
Поле в таблице, которое создает ссылочную связь между двумя таблицами. Оно используется для установления отношения между таблицами
Composite key (Составной ключ)
Комбинация двух или более столбцов, используемых в качестве первичного ключа, когда ни один отдельный столбец не достаточен для однозначной идентификации записи
Alternate key (Альтернативный ключ)
Уникальный идентификатор для записи, который не является первичным ключом. Его можно использовать в качестве вторичного ключа при поиске данных в таблице
Candidate key (Ключ-кандидат)
Уникальный идентификатор для записи в таблице, которая потенциально может использоваться в качестве первичного ключа
Surrogate key
Уникальный идентификатор для записи в таблице, обычно присваивается базой данных, а не самим пользователем
#database #sql
Primary key (Первичный ключ)
Уникальный идентификатор для каждой записи в таблице. Он не может быть равен NULL и должен быть уникальным для всей таблицы
Foreign key (Внешний ключ)
Поле в таблице, которое создает ссылочную связь между двумя таблицами. Оно используется для установления отношения между таблицами
Composite key (Составной ключ)
Комбинация двух или более столбцов, используемых в качестве первичного ключа, когда ни один отдельный столбец не достаточен для однозначной идентификации записи
Alternate key (Альтернативный ключ)
Уникальный идентификатор для записи, который не является первичным ключом. Его можно использовать в качестве вторичного ключа при поиске данных в таблице
Candidate key (Ключ-кандидат)
Уникальный идентификатор для записи в таблице, которая потенциально может использоваться в качестве первичного ключа
Surrogate key
Уникальный идентификатор для записи в таблице, обычно присваивается базой данных, а не самим пользователем
#database #sql
👍8🔥4🍾2
Media is too big
VIEW IN TELEGRAM
Стереотипы о программистах на различных языках согласно AI
😁30💩20🥰1👏1🤔1😢1
Схематически компиляция кода на C++ в exe-файл с помощью компилятора Microsoft Visual C++
#cpp
#cpp
👍11🍓6🔥3
Секционирование базы данных (partitioning) и Шардинг
Секционирование базы данных применяется для управляемости, а шардинг для масштабируемости.
Секционирование базы данных
Предполагает разделение данных на сегменты (разделы) для более удобного управления или группировки связанных данных.
Часто используется в рамках одной системы и прозрачно для приложения.
Шардинг
Предполагает разделение данных по нескольким базам данных или серверам для распределения нагрузки и горизонтального масштабирования.
Каждый сегмент работает независимо, и часто приложению требуется логика для направления запросов на нужный сегмент, если только система хранения данных не поддерживает перенаправление
Секционирование базы данных применяется для управляемости, а шардинг для масштабируемости.
Секционирование базы данных
Предполагает разделение данных на сегменты (разделы) для более удобного управления или группировки связанных данных.
Часто используется в рамках одной системы и прозрачно для приложения.
Шардинг
Предполагает разделение данных по нескольким базам данных или серверам для распределения нагрузки и горизонтального масштабирования.
Каждый сегмент работает независимо, и часто приложению требуется логика для направления запросов на нужный сегмент, если только система хранения данных не поддерживает перенаправление
👍8❤1🔥1
2 апреля 2025 года Роскомнадзор рекомендовал владельцам российских интернет-ресурсов отказаться от использования включённого по умолчанию расширения TLS ECH CDN-сервиса компании Cloudflare, так как оно обходит ограничения доступа к запрещённой в РФ информации.
В регуляторе сначала не пояснили, какое именно расширение имеется в виду, а также непонятно, где его надо отключить. Но потом появилсь дополнительная информация по этой ситуации.
«Американская компания CloudFlare, поставщик услуг CDN, включила в октябре 2024 года применение по умолчанию на своих серверах расширение TLS ECH (Encrypted Client Hello). Эта технология — средство обхода ограничений доступа к запрещенной в России информации. Его использование нарушает российское законодательство и ограничивается техническими средствами противодействия угрозам (ТСПУ)», — говорится в сообщении РКН.
«Рекомендуем владельцам информационных ресурсов отключить расширение TLS ECH или, что правильнее, использовать отечественные CDN‑сервисы, которые обеспечивают надёжное и безопасное функционирование ресурсов и защиту от компьютерных атак», — добавили в ведомстве.
https://www.interfax.ru/digital/1017951
В регуляторе сначала не пояснили, какое именно расширение имеется в виду, а также непонятно, где его надо отключить. Но потом появилсь дополнительная информация по этой ситуации.
«Американская компания CloudFlare, поставщик услуг CDN, включила в октябре 2024 года применение по умолчанию на своих серверах расширение TLS ECH (Encrypted Client Hello). Эта технология — средство обхода ограничений доступа к запрещенной в России информации. Его использование нарушает российское законодательство и ограничивается техническими средствами противодействия угрозам (ТСПУ)», — говорится в сообщении РКН.
«Рекомендуем владельцам информационных ресурсов отключить расширение TLS ECH или, что правильнее, использовать отечественные CDN‑сервисы, которые обеспечивают надёжное и безопасное функционирование ресурсов и защиту от компьютерных атак», — добавили в ведомстве.
https://www.interfax.ru/digital/1017951
Интерфакс
РКН рекомендует отказаться от обходящего блокировки расширения сервиса Cloudflare
Роскомнадзор (РКН) рекомендовал владельцам российских интернет-ресурсов отказаться от использования включённого по умолчанию расширения CDN-сервиса компании CloudFlare, так как оно обходит ограничения доступа к запрещённой в РФ информации."Американская компания…
🤡30🤣16👍2🥰2🖕2👏1