Как стать автором
Обновить
3.79

MySQL *

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

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

Возможности PostgreSQL для тех, кто перешел с MySQL

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

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


Мы рады сообщить, что подготовка к PG Day'17 Russia идет полным ходом! Мы опубликовали полное расписание предстоящего мероприятия. Приглашаем всех желающих прийти и похоливарить с Антоном лично



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


Почему вообще возникла идея такого доклада? Дело в том, что PostgreSQL сейчас явно хайповая технология, и многие переходят на эту СУБД. Иногда — по объективным причинам, иногда — просто потому что это модно.


Но сплошь и рядом складывается такая ситуация, когда какой-нибудь условный программист Вася вчера писал на MySQL, а сегодня вдруг начал писать на Посгресе. Как он будет писать? Да в целом также, как и раньше, используя лишь самый минимальный набор возможностей новой базы. Практика показывает, что проходят годы, прежде чем СУБД начинает использоваться более менее полноценно.

Читать дальше →
Всего голосов 59: ↑58 и ↓1+57
Комментарии139

Как получить оффер в день собеседования. Часть вторая, для PHP-разработчика

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


Привет, Хабр! Меня зовут Павел Мурзаков, я – PHP-тимлид в Badoo, и сегодня я расскажу вам о новой возможности получить предложение по работе в Лондоне за один день. Как вы, возможно, знаете, недавно в Москве прошло рекрутинговое мероприятие Badoo по поиску мобильных разработчиков. Оно оказалось очень успешным – мы предложили работу в Лондоне восьми ребятам и надеемся скоро увидеть их в составе нашей мобильной команды.


И, чтобы не отставать от наших iOS- и Android-команд (ведь их теперь на восемь человек больше!), мы решили ответить достойно и провести аналогичное мероприятие, на котором рассчитываем найти server-side-коллег нашим новым мобильным разработчикам!

Читать дальше →
Всего голосов 98: ↑94 и ↓4+90
Комментарии86

«Если вы хотите, чтобы ваши баги исправили, пишите наиболее аккуратные тест-кейсы» — Света Смирнова о поиске багов MySQL

Время на прочтение12 мин
Количество просмотров5.5K
Главная героиня нашего сегодняшнего интервью редко нуждается в представлении. Света Смирнова, инженер технической поддержки Percona, является экспертом по диагностике неполадок и оптимизации производительности MySQL, активным членом российского и международного Open Source сообщества, регулярным спикером на крупных профильных мероприятиях, автором одной из наиболее актуальных книг по MySQL — «MySQL Troubleshooting». На предстоящем летнем PG Day'17 Russia Света проведет интенсивный учебный курс по отладке производительности MySQL и прочитает лекцию, посвященную отладке репликации.

Накануне PG Day, мы побеседовали со Светой о тонкостях процесса репортинга и устранения багов в MySQL, последних тенденциях и трендах в мире популярных форков, истории внедрения функциональности поддержки JSON и подготовили подборку материалов, блогов и книг, полезных для всех специалистов, работающих с MySQL.

Эксклюзивно для PG Day, специальный раздел учебного курса будет посвящён Performance Schema. С её помощью можно отлаживать хранимые процедуры, отслеживать, где используется оперативная память сервера MySQL, просматривать текущие переменные отдельно для каждого соединения, отлаживать запросы, диагностировать блокировки и многое другое. Света расскажет, как настраивать Performance Schema и правильно выбирать входящие в нее инструменты для ваших задач.



Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

MySQL 8, Postgres NoSQL, Tarantool Винил, CockroachDB, ClickHouse, и все-же, почему Uber ушел от Postgresql?

Время на прочтение1 мин
Количество просмотров22K
17 июня в Москве, Измайлово пройдет конференция Devconf::Storage

Базы данных становятся все чудесатее и чудесатее. Традиционные RDBMS становятся NoSQL, а новые движки становятся кластерными, распределенными и колоночными.

Олег Бартунов, известный разработчик Postgres, хочет рассказать чем их база лучше MongoDB при работе с JSON, а его коллега Иван Панченко — о том, как писать для постгреса на perl, python и javascript.
Антон Околелов расскажет как перейти с MySQL, чтобы ощутить мощь Postgres, а другой докладчик, Алексей Копытов расскажет почему Uber сделал точно наоборот, и ушел с Postgres на MySQL.
Читать дальше →
Всего голосов 75: ↑63 и ↓12+51
Комментарии51

20 бесплатных утилит и 89 скриптов для мониторинга и управления базами данных

Время на прочтение2 мин
Количество просмотров34K
Ты сидишь — база растёт, идёшь — база растёт, спишь, ешь или делаешь ещё много всего, а база всё растёт и растёт. Кто-то очень умный сказал, что единственное, что в нашей жизни постоянно — это изменения. Главное — правильно на них реагировать. Любая нештатная ситуация с базой данных происходит именно из-за таких изменений. К сожалению, не всегда есть возможность вложиться в расшитую золотом и усыпанную драгоценными камнями в 60 карат промышленную систему мониторинга. И это заставляет прибегнуть к бесплатным или условно-бесплатным решениям. В статье я собрал 20 бесплатных утилит от компании IDERA (и не только), которые могут некисло помочь закрыть некоторые вопросы с мониторингом и управлением MS SQL, MySQL и Oracle. Поехали!

halyava_sir.jpg
Впитать знания
Всего голосов 22: ↑16 и ↓6+10
Комментарии13

Лекции Технопарка. Базы данных (весна 2017)

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


Всем жаждущим знаний предлагаем ознакомиться с новыми лекциями Технопарка, посвящённым базам данных. Курс ведёт Артём Навроцкий, ведущий программист в Allods Team.


Список лекций:


  1. Введение
  2. Модификация и выборка данных
  3. Выборка данных (продолжение)
  4. Транзакции. Триггеры и хранимые процедуры
  5. Индексы и производительность
  6. Оптимизация запросов. Оптимизация структуры данных
  7. Репликация, полнотекстовый поиск, JSON
  8. Сохранность данных
Всего голосов 44: ↑44 и ↓0+44
Комментарии6

Чек-лист по выживанию сайта

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


В последнее время я как-то подозрительно часто наблюдаю примитивнейшие однотипные и довольно легко решаемые проблемы на самых разных web-проектах. Разные базы, разные языки, разные сферы деятельности и схемы монетизации. Всех их объединяет одно — лозунг «бизнес не дает переписать». Продолжающийся или только-только оконченный этап рапид-разработки растущего и агрессивно отжимающего у конкурентов долю рынка проекта родил огромную кучу т.н. «говнокода». Сомнительные архитектурные решения либо уже приносят кучу проблем, либо обещают их в будущем, но работают. Поток новых требований не дает времени навести порядок даже в инфраструктуре, не говоря уже о коде. Если вам такая ситуация знакома — добро пожаловать под кат поностальгировать, поучиться чему-то новому и/или поучить нас. Кому поржать, а кому и поплакать.

«Это все только для хайлода» — скажет вдумчивый и прозорливый читатель. Плох тот веб-проект, который не мечтает стать популярным хайлодом.

Читать дальше →
Всего голосов 86: ↑74 и ↓12+62
Комментарии189

Делаем GraphQL API на PHP и MySQL. Часть 3: Решение проблемы N+1 запросов

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

В этой, третьей по счету, статье о создании GraphQL сервера с graphql-php я расскажу о том как бороться с проблемой N+1 запросов.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии15

Делаем GraphQL API на PHP и MySQL. Часть 2: Мутации, переменные, валидация и безопасность

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

Не так давно я написал статью о том, как сделать свой GraphQL сервер на PHP с помощью библиотеки graphql-php и как с его помощью реализовать простое API для получения данных из MySQL.

Теперь я хочу рассказать о том как заставить ваш GraphQL сервер работать с мутациями, а также постараюсь ответить на самые распространенные вопросы в комментариях к предыдущей статье, показав как использовать валидацию данных и затрону тему безопасности самих запросов.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии16

Корпоративный телефонный справочник с картой

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

Всем привет! Хочу поделиться корпоративным телефонным справочником с картой офиса. Удобен для ориентирования в большой организации. Особенно будет полезен новым сотрудникам, которые еще не запомнили кто из коллег где сидит.


screenshot

Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии31

Практическая оптимизация MySQL: измерять, чтобы ускорять

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


Петр Зайцев (Percona)


Сегодня мы поговорим о производительности.

Мы посмотрим на то, как подойти правильно к оптимизации MySQL, а также посмотрим на некоторые практические подходы к этому делу. Почему я считаю, что это важно? Дело в том, что когда у вас есть специфическая проблема, вы хотите, например, спросить: «А какой же мне установить размер кэша в MySQL?». Такой вопрос всегда можно ввести в Google или Yandex, и получить на него разумный ответ. Но как получить ответ об общем, о схеме анализа и оптимизации MySQL? Это куда более сложно.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии2

Делаем GraphQL API на PHP и MySQL. Часть 1: Установка, схема и запросы

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

В последнее время я все чаще и чаще слышу про GraphQL. И в интернете уже можно найти немало статей о том как сделать свой GraphQL сервер. Но почти во всех этих статьях в качестве бэкенда используется Node.js.

Я ничего не имею против Node.js и сам с удовольствием использую его, но все-таки большую часть проектов я делаю на PHP. К тому же хостинг с PHP и MySQL гораздо дешевле и доступнее чем хостинг с Node.js. Поэтому мне кажется не справедливым тот факт, что об использовании GraphQL на PHP в интернете практически нет ни слова.

В данной статье я хочу рассказать о том, как сделать свой GraphQL сервер на PHP с помощью библиотеки graphql-php и как с его помощью реализовать простое API для получения данных из MySQL.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии40

Нахождение похожих имен средствами MySQL+PHP

Время на прочтение20 мин
Количество просмотров15K
Тема, озвученная в заголовке статьи, не нова. На просторах Интернета можно найти множество вопросов, как ее реализовать, а вот ответов несколько меньше. И не редко они сводятся к советам использовать продукты сторонних разработчиков, например, Sphinx. Но зачастую в использовании таких громоздких надстроек нет необходимости.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии23

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

Сравнение производительности железного сервера и облака Amazon

Время на прочтение6 мин
Количество просмотров14K
Сегодня разработчики не представляют себе высоконагруженную систему без базы данных. Этот способ хранения информации становится культовым. Мы привыкли работать с базой данных каждый день, но все же есть тёмные пятна. Одно из них – производительность. Написано множество статей о настройке, оптимизации базы данных и т.д. Они полезны, если у вас уже есть база данных (БД) и её производительности недостаточно. Но эти статьи не помогут, если вам нужно запустить базу данных в облачных сервисах, таких как AWS, Azure, Rackspace и т.д.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии10

Как искать в DataGrip

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


В работе с любым инструментом важно легко находить то, что нужно. В DataGrip ищут:

Объекты базы данных: таблицы, представления, функции, колонки и т. д.
— Сами данные.
Код, например кусок кода в скрипте или исходнике объекта.
Другое: настройки, действия, файлы.

Разберемся, как не потеряться в IDE и своих базах данных.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии9

Инфраструктура Twitter: масштаб

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

Обзор парка Twitter


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

Наше текущее распределение оборудования показано ниже:


Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии5

Релиз DataGrip 2017.1

Время на прочтение5 мин
Количество просмотров18K
Привет! Обсуждение DataGrip началось уже в комментариях к анонсу новой IntelliJ IDEA, давайте продолжим здесь. Расскажу, что нового в DataGrip 2017.1.

image

Будет много текста и картинок. Вкратце, вот что мы добавили:
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии27

Делаем быстрый поиск по турам на основе ClickHouse

Время на прочтение12 мин
Количество просмотров22K
В этой статье мы рассмотрим способы создания поиска по базе туров (тур из себя представляет набор из отеля и перелета) и рассмотрим две опции — ClickHouse и MySQL (два движка — InnoDB и MyISAM).

В чем сложность поиска по турам


Туроператоры (TezTour, TUI, Natalie Tours, etc) продают свои путевки неочевидным, на первый взгляд, способом:

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

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

Несмотря на то, что общее количество туров (комбинаций) исчисляется сотнями миллионов, на каждый фиксированный набор параметров (город вылета, тип размещения, страна) приходятся, в худшем случае, десятки миллионов вариантов. Но даже по такому количеству туров не так просто осуществлять поиск, потому что нужно найти записи, которые удовлетворяют свободным критериям, которые задают пользователи, и сортировка может быть более-менее произвольной (как правило, сортировка делается по цене, но это не единственный возможный критерий). В этой статье мы рассмотрим упрощенную архитектуру реалтайм-поиска по турам на основе MySQL и ClickHouse, без учета стопов (сленговый термин, который означает, что по каким-то вариантам закончились номера или места в самолете, и такие туры нужно исключить из выдачи). Мы научимся делать поиск быстрым и уметь показывать результаты с сортировкой по любым полям.
Читать дальше →
Всего голосов 43: ↑37 и ↓6+31
Комментарии19

А ты хто такой? Эволюция протоколов аутентификации MySQL и MariaDB в лицах

Время на прочтение5 мин
Количество просмотров8.8K
замок на старом сейфе В далекие времена, до фейсбука и гугла, когда 32 мегабайта RAM было дофига как много, security была тоже… немножко наивной. Вирусы выдвигали лоток CD-ROM-а и играли Янки Дудль. Статья «Smashing the stack for fun and profit» уже была задумана, но еще не написана. Все пользовались telnet и ftp, и только особо продвинутые параноики знали про ssh.

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

Michael Widenius (или просто Monty) явно был знаком с параноидальными безопасниками не понаслышке, чего стоит один такой момент (из исходников, global.h):

/* Paranoid settings. Define I_AM_PARANOID if you are paranoid */
#ifdef I_AM_PARANOID
#define DONT_ALLOW_USER_CHANGE 1
#define DONT_USE_MYSQL_PWD 1
#endif

Так что неудивительно, что пароли в MySQL открытым текстом не передавались никогда. Передавались случайные строки на основе хешей. А конкретно, первый протокол аутентификации (цитируется по mysql-3.20, 1996) работал так:
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии24

Репликация из MySQL в Tarantool

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

image


Привет, Хабр! Сегодня поделюсь с вами статьёй, написанной по мотивам моего доклада на Tarantool Meetup. Маленькая история, почему в компании Мамба стали использовать Tarantool. Почему мы занялись репликацией из MySQL в Tarantool? Первая причина в том, что в какой-то момент нужно было начинать переходить на MySQL 5.7, но в нём отсутствует handler socket, который активно используется на наших серверах в MySQL 5.6. Мы даже связались с командой Percona, и они подтвердили, что 5.6 — это последняя версия c handler socket.


Вторая причина — мы начали пробное использование Tarantool, и скорость работы нам понравилась: мы просто сравнили memcache и Tarantool как key/value-хранилище, получив прирост производительности — с 0,6 до 0,3 мс на одинаковом железе. В относительном выражении Tarantool в два раза быстрее, в абсолютном выражении это не так круто, но всё же. И третья причина — желание полностью сохранить текущую структуру: есть MySQL Server Master и его Slave’ы, ничего переписывать не хотелось, хотелось оставить максимально близко к той архитектуре, что есть сейчас. Как бы нам сделать так, чтобы вместо Slave’ов MySQL 5.6, на которых используется handler socket, применить что-то другое и полностью не переписывать всю огромную архитектуру?

Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии12

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