Несколько лет назад мне пришлось написать движок перевода; вы кормите его одним набором sql, и он переводится на диалект текущего подключенного движка. Мой движок работает на Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase и Oracle - о, и ANTS. Честно говоря, Oracle - мой наименее любимый (подробнее об этом ниже) ... К сожалению для вас, mySql и SQL Server нет в списке (в то время ни одна из них не считалась серьезной СУБД, но времена меняются).
Безотносительно к качеству или производительности двигателя - а также к простоте создания и восстановления резервных копий - вот основные отличия:
- * 1006 типов данных *
- Пределы
- 1010 * инвалиды *
- зарезервированные слова
- нулевая семантика (см. Ниже)
- семантика кавычек (одинарная кавычка, двойная кавычка "или любая из них)
- Семантика завершения оператора
- семантика функции
- обработка даты (включая постоянные ключевые слова, такие как «сейчас» и форматы функций ввода / вывода)
- разрешены ли встроенные комментарии
- максимальная длина атрибута
- максимальное количество атрибутов
- семантика соединения / парадигма безопасности.
Не скучая по всем данным конвертации, вот пример для одного типа данных, lvarchar:
oracle = varchar (% x) sybase = text db2 = "long varchar" informix = lvarchar postgres = varchar (% x) ants = varchar (% x) ingres = varchar (% x,% y)
Самая большая сделка, на мой взгляд, это нулевая обработка; Oracle SILENTLY преобразует пустые строки ввода в нулевые значения. ... Где-то, давным-давно, я читал рецензию, написанную кем-то о "Семнадцати значениях нуля", или что-то подобное, и реальная точка зрения в том, что нули очень ценны, и различие между пустой строкой и пустой строкой полезно и нетривиально! Я думаю, что Oracle допустил огромную ошибку в этом; ни у кого другого нет такого поведения (которое я когда-либо видел).
Моим вторым наименее любимым был ANTS, потому что, в отличие от всех остальных, они ПОДТВЕРЖДАЛИ глупые правила идеального синтаксиса, которых абсолютно никто не делает, и, хотя они могут быть единственной компанией БД, которая обеспечивает идеальное соблюдение стандарта, они также являются королевская боль в заднице, чтобы написать код.
Безусловно, мой любимый - Postgres; это очень быстро в ситуациях _real_world_, имеет отличную поддержку и с открытым исходным кодом / бесплатно.