В этой заметке речь пойдет об альтернативном драйвере для доступа к СУБД MySQL, через PHP. Имя ему — MySQL Native Driver.
В PHP существуют три API для работы с MySQL: mysql, mysqli и PDO. Все три реализованы в виде расширений на языке C.
Самым старым из этих API является mysql. Это расширение появилось еще в PHP 3 и отлично поддерживало версии MySQL младше 4.1 (version < 4.1). Со старшими версиями (>=4.1) есть некоторые сложности. API mysql просто не поддерживает некоторые возможности новых версий MySQL’а.
Затем появилось расширение mysqli (вероятно, mysql improved). Это API поддерживает все новые возможности СУБД MySQL. Плюс к этому mysqli позволяет использовать ОПП синтаксис наряду с процедурным. Расширение mysqli поставляется с PHP начиная с версии 5.
Третье API называется PDO (PHP Data Objects). В общем смысле это не только API к MySQL, но и некий слой абстракции от конкретной СУБД. Как уже было сказано, PDO поставляется как расширение к PHP. Так вот вместе с этим расширением поставляются драйвера для конкретных СУБД: начиная от SQLite и заканчивая Oracle.
Эти API объединяет то, что они используют одинаковую библиотеку для непосредственного общения с MySQL. Они используют стандартную клиентскую библиотеку MySQL (libmysql). Библиотека эта написана на C, и к слову используется не только для клиентских приложений на PHP, но и для Perl, C/C++, Ruby и т.п.
Так вот, уже давно (кажется с начала 2007) имеется возможность использовать MySQL Native Driver (mysqlnd). Что это такое? Концептуально это замена libmysql. И не задаром он «Native» (родной, встроенный), так как всей своей реализацией тесно переплетён с PHP (на уровне языка C, разумеется) и распространяется в соответствии с лицензией PHP.
Собственно прелесть в том, что начиная с PHP5.3/6 mysqlnd приходит на замену libmysql. При этому API никоим образом не будут затронуты, и для разработчика процесс перехода обещает быть прозрачным – весь написанный ранее код с использованием API mysql, mysqli и PDO будет работать как часы.
Схематически, это выглядит так:

Преимущества MySQL Native Driver происходят из его природы, тесно связанной с внутренностями PHP. mysqlnd использует некоторые встроенные в PHP функции, что не может не повлиять на производительность.
В любом случае изучение внутренностей MySQL Native Driver равно как и его преимуществ достойны отдельной заметки или даже статьи.
Я же надеюсь, что данная вводная заметка о MySQL Native Driver будет хоть немного вам полезна.
В PHP существуют три API для работы с MySQL: mysql, mysqli и PDO. Все три реализованы в виде расширений на языке C.
Самым старым из этих API является mysql. Это расширение появилось еще в PHP 3 и отлично поддерживало версии MySQL младше 4.1 (version < 4.1). Со старшими версиями (>=4.1) есть некоторые сложности. API mysql просто не поддерживает некоторые возможности новых версий MySQL’а.
Затем появилось расширение mysqli (вероятно, mysql improved). Это API поддерживает все новые возможности СУБД MySQL. Плюс к этому mysqli позволяет использовать ОПП синтаксис наряду с процедурным. Расширение mysqli поставляется с PHP начиная с версии 5.
Третье API называется PDO (PHP Data Objects). В общем смысле это не только API к MySQL, но и некий слой абстракции от конкретной СУБД. Как уже было сказано, PDO поставляется как расширение к PHP. Так вот вместе с этим расширением поставляются драйвера для конкретных СУБД: начиная от SQLite и заканчивая Oracle.
Эти API объединяет то, что они используют одинаковую библиотеку для непосредственного общения с MySQL. Они используют стандартную клиентскую библиотеку MySQL (libmysql). Библиотека эта написана на C, и к слову используется не только для клиентских приложений на PHP, но и для Perl, C/C++, Ruby и т.п.
Так вот, уже давно (кажется с начала 2007) имеется возможность использовать MySQL Native Driver (mysqlnd). Что это такое? Концептуально это замена libmysql. И не задаром он «Native» (родной, встроенный), так как всей своей реализацией тесно переплетён с PHP (на уровне языка C, разумеется) и распространяется в соответствии с лицензией PHP.
Собственно прелесть в том, что начиная с PHP5.3/6 mysqlnd приходит на замену libmysql. При этому API никоим образом не будут затронуты, и для разработчика процесс перехода обещает быть прозрачным – весь написанный ранее код с использованием API mysql, mysqli и PDO будет работать как часы.
Схематически, это выглядит так:

Преимущества MySQL Native Driver происходят из его природы, тесно связанной с внутренностями PHP. mysqlnd использует некоторые встроенные в PHP функции, что не может не повлиять на производительность.
В любом случае изучение внутренностей MySQL Native Driver равно как и его преимуществ достойны отдельной заметки или даже статьи.
Я же надеюсь, что данная вводная заметка о MySQL Native Driver будет хоть немного вам полезна.