За свою относительно недолгую профессиональную деятельность я прошел пять собеседований на должность веб-разработчика. В статье я проанализирую разные подходы к этому процессу и поделюсь своим мнением насчет оптимального варианта.
Читать полностью »
Рубрика «mysql» - 41
Добрый день, Вы на собеседование? Садитесь…
2013-01-29 в 21:35, admin, рубрики: javascript, mysql, php, web-разработка, собеседование, метки: web-разработка, собеседованиеРаскрываем магию MySQL или о строгости и мягкости MySQL
2013-01-21 в 8:20, admin, рубрики: mysql, php, хитрости, метки: mysql, хитрости Очень часто в интернете встречаюсь со статьями, в которых приводят кучу примеров с якобы странным поведением MySQL по сравнению с другими БД. Чтобы стало понятно, о чём я говорю, приведу несколько примеров:
1. Деление на ноль возвращает NULL вместо ошибки
2. Выход за диапазон допустимых значений неявно приводит число к допустимому значению, а не к ошибке и откату транзакции
3. Вставка неверного типа данных также приводит к неявному преобразованию и успешному выполнению операции
Таких примеров я могу привести огромное число, но цель статьи не сделать очередное собрание высосанных из пальца примеров, а объяснить, почему происходит то или иное действие. Вся эта мистика MySQL давно описана в документации и легко объяснима, в чём вы сможете убедиться сами, прочитав статью до конца.
Для меня эта первая статья на хабре, поэтому я старался писать дотошно подробно. Уверен, что она будет полезна всем, кто работает с MySQL. Большую помощь в написании статьи оказала подготовка к сдаче на сертификат разработчика MySQL, а точнее книга «MySQL Certification Study Guide».
Итак, мой друг, начнём!
Читать полностью »
Может ли MemSQL помочь Zynga вернуть былой успех?
2013-01-19 в 9:02, admin, рубрики: MemSQL, mysql, nosql, Vertica, Zynga, Администрирование баз данныхКомпания Zynga развернула у себя MemSQL кластер из 100 серверов. MemSQL — разработка команды двух бывших сотрудников Facebook, — может и не избавит Zynga от всех проблем, но она однозначно может помочь компании поднять доходы и поспособствовать появлению новых типов игр.
Разработчик социальных игр Zynga не могла похвастаться невероятными успехами после выхода на IPO, и новая база данных имеет шанс оказаться первым шагом к тому, чтобы это исправить. По крайней мере, она может открыть для компании некоторые недоступные раньше возможности, такие как выдача контекстной рекламы и рекомендаций в реальном времени и более продвинутые форматы многопользовательских игр.
MemSQL — это база данных от небольшой компании в Сан-Франциско, созданной Эриком Френкилем (Eric Frenkiel) и Никитой Шамгуновым, двумя бывшими сотрудниками Facebook. База данных, первый релиз которой увидел свет в июне прошлого года, хранит все данные в памяти, используя lock-free структуры данных, и компилирует запросы в машинный код, что позволяет вставлять и обновлять данные с очень высокой скоростью, и одновременно с этим выполнять тяжелые OLAP запросы на живых данных.
Со слов Эрика Френкиля, базой данных сегодня пользуются такие компании как JPMorgan Chase, Hitachi и NY Life.
Читать полностью »
Какие запросы попали в QUERY CACHE
2013-01-10 в 6:48, admin, рубрики: mysql, plugin, метки: mysql, plugin Все мы знаем про то, что QUERY CACHE
бывает очень полезен, если вам необходимо оптимизировать часто повторяющиеся запросы к базе данных, при условии низкого числа DML операций (если вы совсем не знакомы с данной функциональностью, перевод официальной документации по настройке этой структуры базы данных можно почитать тут). При настройке параметров кэширования запросов на сервере часто встает вопрос, а что же именно содержится в QUERY CACHE
'е на данный момент. Поиск ответа на этот вопрос в свое время поставил меня в тупик. Единственный дельный ответ, который я посчитал в то время абсолютно верным, я нашел тут. Ответ гласил буквально следующее:
there is no way to find what queries are now cached
т.е. данного способа не существует. Лишь спустя некоторое время я понял, что это совсем не так, и существует вполне легальный способ получения содержимого данной структуры БД без патчинга исходных кодов. Этот способ — написание небольшого плагина для INFORMATION_SCHEMA
.
Читать полностью »
PHP класс для удобной и безопасной работы с MySQL
2013-01-08 в 15:51, admin, рубрики: mysql, mysqli, php, placeholder, prepared statements, информационная безопасность, метки: mysqli, placeholder, prepared statements, sql-injection После написания статьи про защиту от инъекций я взялся за написание класса, реализующего изложенные в ней идеи.
А точнее, поскольку ключевой функционал уже использовался в рамках рабочего фремворка, я занялся выделением его в самостоятельный класс. Пользуясь случаем, хочу поблагодарить участников PHPClub-а за помощь в исправлении нескольких критических ошибок и полезные замечания. Ниже я постараюсь описать основные особенности, но сначала небольшой
В двух словах, класс строится вокруг набора функций-хелперов, позволяющих выполнять большинство операций с БД в одну строку, обеспечивая при этом полную защиту от инъекций.
При его написании я следовал трем базовым принципам:
- Безопасность
- Удобство и краткость кода приложения
- Универсальность, портабельность и простота освоения
Остановлюсь чуть подробнее на каждом из пунктов.
Читать полностью »
MySQL: разрушаем стереотипы
2012-12-26 в 18:49, admin, рубрики: bugs, mysql, юмор, метки: bugs, mysql, юмор В последнее время часто стал натыкаться на различные рассуждения людей, по поводу того, что MySQL — это плохо, это очень плохо — потому что… а вот дальше идут описания различных фич MySQL, которые четко документированы, но пользователь их просто не знает. Кто-то добавляет в БД данные без валидации и удивляется почему они сохранились в неверном формате, а кто-то описывает кучу особенностей myIsam движка, и на этих основаниях делает вывод, что MySQL это отстой — который невозможно использовать в реальных проектах. Всю документацию прочитать невозможно, и да — я с этим абсолютно согласен, но поверьте у нас есть куча других недокументированных и не менее интересных особенностей. Давайте начнем с малого, к примеру докажем, что NULL равно нулю.
Читать полностью »
На написание этого поста меня вдохновил мой друг Грег Янгблад, который показал мне на прошлой неделе одну интересную загадку в MySQL.
Читать полностью »
Продуктивная работа с MySQL в командной строке
2012-12-21 в 15:46, admin, рубрики: cli, linux, mysql, mysql clientДаже если Вы используете GUI-инструменты для работы с MySQL, однажды Вам предстоит столкнуться с командной строкой. Поэтому полезно знать некоторые трюки, которые облегчают работу.
Примечание: эти команды работают только для Unix/Linux.
Читать полностью »
Черные дыры при разработке Веб проекта
2012-12-17 в 16:27, admin, рубрики: benchmark, javascript, mysql, php, Веб-разработка, метки: benchmark, javascript, mysql, PHPРечь пойдет о PHP,JavaScript и MySQL как стартовой точке. Я также приведу некоторые цифры тестов производительности и потери времени, которые могут убить проект, на примере одного из продуктов, которые мне пришлось недавно вскрыть на предмет поиска проблемных мест, и покажу как можно в три шага убить проект.
Предисловие.
Недавно мне была поставлена задача, помочь найти проблемы в одном из веб проектов, созданных как обычно на PHP+MySQL, и все это кроме того завернуто в Symfony Framework. База данных начала сильно расти, так-как люди собирали эвенты поведения (допустим автопарка) которые вливались буквально каждые 5 минут. Естественно таблица эвентов выросла, и дабы MySQL с ней хоть как то справлялась, ее разбили на партиции. В итоге все это сводилось к разного рода выборкам и отчетам, т.е. аналитике. В итоге, даже простая выборка за период, плюс небольшой подсчет, занимали от 11 сек и выше. Видимо поэтому и было принято решение, ограничивать выбираемый период в днях.
Веб-контроль Raspberry Pi GPIO
2012-12-14 в 18:37, admin, рубрики: gpio, mysql, php, Raspberry Pi, веб-контрольДоброго времени суток! В этом посте я хочу показать, как управлять электроникой через Интернет используя Raspberry Pi. Выглядеть это будет примерно вот так.
Краткое описание:
- Серверная программа, которая работает на Raspberry Pi, для того чтобы читать переменные
- Базы данных MySQL для хранения переменных
- Веб-страница Apache2, для того чтобы контролировать переменные