Преди няколко години трябваше да напиша машина за превод; захранвате го с един набор sql и той се превежда на диалекта на текущо свързания двигател. Моят двигател работи на Postgres (известен още като PostgreSql), Ingres, DB2, Informix, Sybase и Oracle - о, и ANTS. Честно казано, Oracle е най-малко любимият ми (повече за това по-долу)... За ваше съжаление, mySql и SQL Server не са в списъка (по това време нито един от тях не се смяташе за сериозна RDBMS - но времената се променят).
Без оглед на качеството или производителността на двигателя - и лекотата на правене и възстановяване на резервни копия - ето основните области на разлика:
- типове данни
- ограничения
- невалидни
- запазени думи
- нулева семантика (вижте по-долу)
- семантика на кавички (единични кавички, двойни кавички или едно от двете)
- семантика на завършване на оператор
- семантика на функциите
- обработка на дата (включително постоянни ключови думи като 'сега' и формати за вход/изход)
- дали са разрешени вградени коментари
- максимални дължини на атрибута
- максимален брой атрибути
- семантика на връзката/парадигма за сигурност.
Без да ви отегчавам с всички данни за конверсията, ето извадка за един тип данни, lvarchar:
oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)
Най-голямата сделка от всичко, според мен, е нулевата обработка; Oracle Мълчаливо преобразува празните входни низове в нулеви стойности. ...Някъде, преди много време, прочетох запис, който някой беше направил за "Седемнадесетте значения на нула" или нещо подобно и истинската идея е, че нулевите стойности са много ценни и разликата между нулев низ и празен низ е полезно и нетривиално! Мисля, че Oracle направи огромна грешка в това; никой от другите няма това поведение (което някога съм виждал).
Вторият ми най-малко фаворит беше ANTS, защото за разлика от всички останали, те ПРИЛОЖИХА глупавите правила за перфектен синтаксис, които абсолютно никой друг не прави, и макар че може да са единствената DB компания, която осигурява перфектно придържане към стандарта, те също са кралска болка в дупето за писане на код.
Далеч моят любим е Postgres; много е бърз в ситуации от _реалния_свят_, има страхотна поддръжка и е с отворен код / безплатен.