www.infocom.ua
Всеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхИнфоком Дата-Центр
О проектеУслуги и ценыПоддержкаКонтакты

 

 

Портирование кода из 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:  Внешние программы.



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

Локальное оглавление.

На главную страничку.

Инфоком, 2001
Дизайн: Климентовская Юлия

io.ua