Обновить
32.52

MySQL *

Свободная реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Шифрование в MySQL: ротация Master Key

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

В преддверии старта нового набора на курс «Базы данных» продолжаем публиковать серию статей про шифрование в MySQL.

В предыдущей статье этой серии мы обсудили, как работает шифрование с главным ключом (Master Key). Сегодня, основываясь на полученных ранее знаниях, посмотрим на ротацию главных ключей.

Ротация главных ключей заключается в том, что генерируется новый главный ключ и этим новым ключом повторно шифруются ключи табличных пространств (которые хранятся в заголовках табличных пространств).

Давайте вспомним, как выглядит заголовок зашифрованного табличного пространства:

Читать далее

Шифрование в MySQL: использование Master Key

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

В преддверии старта нового набора на курс «Базы данных» продолжаем публиковать серию статей про шифрование в MySQL.

В предыдущей статье этой серии (Шифрование в MySQL: хранилище ключей) мы говорили о хранилищах ключей. В этой статье мы рассмотрим, как используется главный ключ (master key), а также обсудим достоинства и недостатки шифрования методом конвертов (envelope encryption). 

Читать далее

Шифрование в MySQL: хранилище ключей

Время на прочтение6 мин
Количество просмотров6.8K
В преддверии старта нового набора на курс «Базы данных» подготовили для вас перевод полезной статьи.





Прозрачное шифрование данных (Transparent Data Encryption, TDE) появилось в Percona Server for MySQL и MySQL довольно давно. Но задумывались ли вы когда-нибудь о том, как оно работает под капотом и какое влияние TDE может оказывать на ваш сервер? В этой серии статей мы рассмотрим, как TDE работает внутри. Начнем с хранения ключей, так как оно требуется для работы любого шифрования. Затем подробно рассмотрим как работает шифрование в Percona Server for MySQL/MySQL и какие дополнительные возможности есть в Percona Server for MySQL.
Читать дальше →

Как я Дота-лигу открывал. Часть 3

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


Читать сначала: Как я Дота-лигу открывал. Часть 1
Продолжение: Как я Дота-лигу открывал. Часть 2
Ответвление: Как я продолжил дело Дота-лиги

Год 2008-й, середина осени. В результате вооруженного переворота у меня отобрали лигу, и теперь я стал абсолютно свободен от каких-либо обязанностей. Мне больше не надо следить за ботами, за серверами, за лигой, за админами и думать над её развитием. Наконец-то я могу изучать интересные мне технологии! Я начал ковырять PHP, и придумывать следующий проект…
Читать дальше →

Перенос форума IPB в bbPress WordPress

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

Перенос форума Invision Power Board (Invision Community) на платформу Wordpress под bbPress

Как я переносил форум IPB на WP под bbPress. Танцы с бубном в конце недели. Все закончилось успешно, но не до конца...

Читать далее

Создание современного API на PHP в 2020 году

Время на прочтение5 мин
Количество просмотров19K
Итак, на примере этого API, я хочу показать современную PHP архитектуру для высоконагруженных проектов. Когда проект еще в самом начале, и не то, что бизнеслогика (взаимоотношения с базой данных) не прописана, но и сама бизнес модель не очень ясна, построение эффективной IT архитектуры может идти только одним путем: необходимо жестко разделить frontend и backend.

Что обычно делали в таких ситуациях два-три года назад? Брался монолитный фрейворк типа Laravel или Yii2, вся бизнес модель разбивалась, худо-бедно, на блоки, а эти блоки уже имплементировались как модули фреймворка. В итоге еще через 3 года получалась огромная не поворотная машина, которая сама по себе медленная, а становилась почти невыносимо медленной, в которой фронтенд рендится через бэкенд посредством классической MVC архитеркутуры (пользователь отправил запрос, контроллер его подхватил, вызвал модель, та в свою очередь чего-то там натворила с базой данных, вернула все контроллеру, а тот наконец-то вызвал вьювер, вставил туда данные из модели и отдал это все пользователю, который уже успел открыть очередную банку пива...). А… ну еще особо продвинутые ребята, они не просто вьюверели Tweeter Bootstrap, а во вьювер вкручивали на самом деле очень хорошие библиотеки типа JQuery или вместо вьювера использовали какой-нибудь фронтенд фреймворк. В итоге поддерживать такой БеЛаЗ становилось все сложнее, а ввести нового программиста в команду было очень сложно, ибо не все рождаются Энштейнами. Добавим сюда тотальное отсутствие документации разработчика (камменты в 9000 файлах почитаешь — там все есть!) и в итоге, смотря на это все, становилось по-настоящему грустно…
Читать дальше →

Сделайте свое приложение масштабируемым, оптимизировав производительность ORM

Время на прочтение5 мин
Количество просмотров3.6K
Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP».





Привет! Я Валерио, разработчик из Италии и технический директор платформы Inspector.dev.

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

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

Как это исправить?
Давайте узнаем!
Читать дальше →

История о физическом удалении 300 миллионов записей в MySQL

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

Введение


Привет. Я ningenMe, веб-разработчик.

Как сказано в названии, моя история — это история о физическом удалении 300 миллионов записей в MySQL.

Я заинтересовался этим, поэтому решил сделать памятку (инструкцию).

Начало — Alert


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

Обычно этот процесс завершается примерно в течение 1 часа, но в этот раз он не завершался 7 или 8 часов, и alert не переставал вылазить…
Читать дальше →

Создание резервной копии MySQL при помощи утилиты XtraBackup

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

Percona XtraBackup — это утилита для горячего резервного копирования баз данных MySQL. Во время создания резервной копии данных не происходит блокирования таблиц, ваша система продолжает работать без каких бы то ни было ограничений.

Главное преимущество XtraBackup заключается в том, что эта утилита подходит как для создания резервных копий высоко нагруженных серверов, так и для систем с низким количеством транзакций.

Читать далее

Настройка docker для django на mysql

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

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


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

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

Среда разработки PHP на базе Docker

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

Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7MySQL 8PostgreSQLMongoDB 4.2Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.

Читать далее

Сравнение схем двух баз данных

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

При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).

Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate.

Одним из таких решений, сочетающих бесплатность и удобство использования, является Compalex.

Читать далее

Как и почему в InnoDB появились индексы на основе В-дерева

Время на прочтение7 мин
Количество просмотров6.9K
Всем хорошо известно, что индексы на основе структуры данных В-дерево помогают нам быстрее читать и находить записи в таблицах. В сети можно найти огромное количество информации по этому поводу, но я постараюсь показать, с какими проблемами нам пришлось бы столкнуться без использования индексов на основе В-дерева, и почему выбрали эту структуру данных. И в качестве примера я возьму подсистему хранения InnoDB из MySQL.

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

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

Ближайшие события

Как собрать гибридное облако с помощью Kubernetes, которое может заменить DBaaS

Время на прочтение8 мин
Количество просмотров4.3K
Меня зовут Петр Зайцев, я генеральный директор, основатель Percona и хочу рассказать:

  • как мы от open source-решений пришли к Database as a Service;
  • какие существуют подходы к развертыванию баз данных в облаке;
  • как Kubernetes может заменить DBaaS, устранив зависимость от вендора и сохранив простоту СУБД как сервиса.

Статья подготовлена на основе доклада на @Databases Meetup by Mail.ru Cloud Solutions & Tarantool. Если не хотите читать, можно посмотреть:


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

DataGrip 2020.2: редактор больших значений, предпросмотр SQL при редактировании, новое отображение ячеек bool и другое

Время на прочтение6 мин
Количество просмотров9.6K
Привет! За последние четыре месяца мы выпускали фичи и между релизами, поэтому в этой статье о том, что нового появилось в DataGrip за это время. Она приурочена к нашему новому релизу: 2020.2. Получилось длинно, но, надеемся, полезно.


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

Применение оконных функций и CTE в MySQL 8.0 для реализации накопительного итога без хаков

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


Прим. перев.: в этой статье тимлид британской компании Ticketsolve делится решением своей весьма специфичной проблемы, демонстрируя при этом общие подходы к созданию так называемых accumulating (накопительных) функций с помощью современных возможностей MySQL 8.0. Его листинги наглядны и снабжены подробными объяснениями, что помогает вникнуть в суть проблематики даже тем, кто не погружался в неё столь глубоко.

Обычная стратегия для выполнения обновлений с использованием накопительных функций в MySQL — применение пользовательских переменных и паттерна UPDATE [...] SET mycol = (@myvar := EXPRESSION(@myvar, mycol)).

Этот паттерн плохо работает с оптимизатором (приводя к недетерминированному поведению), поэтому от него решили отказаться. В результате возникла некая пустота, поскольку (относительно) комплексную логику теперь сложнее реализовать (по крайней мере, с той же простотой).

В статье пойдет речь о двух способах ее реализации: с использованием оконных функций (канонический подход) и с помощью рекурсивных СТЕ (общих табличных выражений).
Читать дальше →

CPython библиотека «ВКФ» для машинного обучения

Время на прочтение14 мин
Количество просмотров3.1K
В предыдущей заметке автора был описан web-сервер для проведения экспериментов с ВКФ-методом машинного обучения, основанного на теории решеток. Как альтернатива использования web-сервера в настоящей заметке сделана попытка указать путь использования CPython-библиотеки напрямую. Мы воспроизведем рабочие сессии экспериментов с массивами Mushroom и Wine Quality из UCI репозитория данных для тестирования алгоритмов машинного обучения. Потом будут даны объяснения о форматах входных данных.


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

In2Sql: Плагин для Excel который помогает

Время на прочтение1 мин
Количество просмотров6.6K
Для тех кто работает с данными в Excel зачастую встает проблема управления подключениями внешних таблиц к реляционным источникам. Да, Excel предоставляет здесь полный инструментарий, но не обеспечивает уровень комфорта и завышает планку требований к знаниям пользователей.

Web-сервер машинного обучения «ВКФ-решатель»

Время на прочтение21 мин
Количество просмотров4.4K
Сейчас в глазах обычной публики машинное обучение прочно ассоциируется с различными вариантами обучения нейронных сетей. Если первоначально это были полносвязные сети, потом заместившиеся сверточными и рекуррентными, то теперь это стало совсем экзотическими вариантами типа GAN и LTSM-сетей. Кроме все больших объемов выборок, требуемых для их обучения, они еще страдают невозможностью объяснить, почему было принято то или иное решение. Но существуют и структурные подходы к машинному обучению, программная реализация одного из которых описана в настоящей статье.


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

Вставить массив numpy в базу данных MySQL через Python

Время на прочтение2 мин
Количество просмотров5.3K
Если Вы столкнулись с проблемой, что не можете нормально сохранить массив numpy в базу данных MySQL, то эта заметка для Вас! Оригинал поста опубликован в моем блоге.

Я выбрал для себя способ сохранения через модуль pickle. С помощью него Вы спокойно сохраните массив numpy любой размерности в blob-е базы MySQL.
Читать дальше →

Вклад авторов