Библиотека сайта rus-linux.net
Портирование кода из mSQL в MySQL
- Портирование кода из mSQL в MySQL
Перенос прикладных программ mSQL в MySQL относительно прост.
Сначала выполните скрипт msql2mysql (поставляется вместе с MySQL) над вашим источником. Он оттранслирует имена функций mSQL в имена функций MySQL. Но он не будет корректировать типы параметров или изменять число параметров в функциях MySQL, которые нуждаются в дополнительных параметрах.
Замечания:
- MySQL использует структуру данных MYSQL как тип для соединения с базой данных (mSQL использует int).
- mysql_connect получает указатель на структуру MYSQL как параметр. Вы можете определять его глобально или использовать malloc, чтобы его получить.
- mysql_connect получает 2 дополнительных параметра (логин и пароль пользователя). По умолчанию, они установлены в NULL.
- mysql_error получает параметр типа MYSQL.
MySQL поставляется с портированными версиями тестовых программ mSQL insert_test.c и select_test.c. Хорошая идея сравнить их с их mSQL эквивалентами. Это должно дать Вам хорошее начало для понимания, что Вы будете должны сделать для портирования mSQL программы в MySQL. Это также даст Вам некоторые мысли о том, что Вы должны делать, чтобы написать свою MySQL программу.
Чем отличается реализация протокола клиент/сервер в MySQL от своего аналога в mSQL?
Имеются значительные различия. Среди них:
- Буфер сообщений может содержать много строк результатов.
- На стороне сервера размер буфера сообщений динамически подстраивается по мере необходимости для больших запросов пользователя.
- Все пакеты пронумерованы, для синхронизации пакетов.
- Все столбцы представлены в ASCII, длина столбцов и длины строк представлены с помощью двоичного кодирования (1, 2 или 3 байта).
- MySQL может читать результаты без буферизации.
- Если одна запись/чтение занимает свыше 30 секунд, сервер закрывает соединение.
- Если соединение неактивно в течение 8 часов, сервер закрывает соединение.
Отличия между msql 2.0b7 и MySQL
- CREATE TABLE: MySQL: имеет опции для поля: UNSIGNED, ZEROFILL, имеет значение по умолчанию для не пустых полей. mSQL: опций не имеет. - Создание индексов: MySQL: Все индексы должны быть заданы в CREATE TABLE. mSQL: Индексы должны быть созданы отдельным оператором CREATE INDEX. (msql использует новый файл ключа для каждого индекса?) Индексы могут быть удалены оператором DROP INDEX - Для получения уникального идентификатора при вставке: MySQL: Используйте 'auto_increment' как определение типа столбца. Используемый индекс может быть получен после обновления функцией API mysql_insert_id(). mSQL: Создает структуру SEQUENCE для таблицы и использует функцию __seq для получения уникального индекса. - Групповые функции: MySQL: count(), avg(), min(), max() и sum(). min() и max() могут принимать строковые аргументы. count(*) оптимизирована для возвращения значения в случае одного столбца. mSQL: Нет. - Независимый от регистра поиск: MySQL: LIKE обязательно не зависит от регистра. Если возможно, MySQL использует индексы при условии, что подобный параметр не начинается с подстановочных знаков. mSQL: Использует CLIKE. - Поиск с регулярными выражениями. MySQL: Использует REGEXP or RLIKE mSQL: Использует RLIKE. - Какие различия в операторе WHERE: MySQL имеет скобки, Скоро он будет иметь полную функциональную поддержку оператора WHERE (это планируется для версии 3.21.X). - Имена столбцов: MySQL: Если имя столбца уникально, Вы не должны использовать полное имя. mSQL: При использовании более чем одной таблицы в SELECT, Вы должны использовать полное имя таблицы. - Псевдонимы: MySQL: Псевдонимы для таблиц и столбцов. mSQL: Псевдонимы для таблиц. - Insert/update с вычислениями: MySQL: Полная поддержка вычислений. В insert можно использовать значения предшествующих полей. mSQL: Только константы в insert и update. - Какие формулы могут использоваться в инструкции select: MySQL: См. руководство. mSQL: Никакие. - HAVING: MySQL: Поддерживается, но может использовать вычисление только на выбранных полях. Для select на расчетном значении, нужно использовать псевдоним столбца. ПРИМЕР: SELECT COUNT(*) AS id_count, id FROM groups GROUP BY id HAVING id_count > 10 mSQL: Не поддерживается вовсе. - Импорт и экспорт данных: MySQL: MySQL имеет соответствующие функциональные возможности, включая сервис для импорта данных посредством оператора LOAD DATA INFILE, что весьма ускоряет загрузку данных. mSQL: Внешние программы.
В заключение хочется попросить Вас, если Вам понравилась эта страничка или пригодилась изложенная здесь информация, послать благодарность автору. Это поможет мне вести статистику того, скольким людям пригодилось хоть что-то из моих трудов.