Таблица совместимости SQL (типы данных esp) - PullRequest
2 голосов
/ 09 ноября 2010

Итак ... бывает, я работаю над кодом, который ... в конечном итоге будет использоваться на разных серверах sql одновременно.

Хотя код SQL отличается в зависимости от сервера, типы данных и столбцы не различаются.

Поэтому мне нужно знать, какие типы данных являются общими (по крайней мере, для большинства) типов серверов SQL.

В качестве отправной точки у меня есть следующие типы:

byte, char, float, int, text, varchar, blob

Обратите внимание, что написание довольно важно, поскольку имя типа данных заканчивается в запросе как есть (например: хотя поддерживаются как int, так и integer, мне нужен общий).

Итак, вопрос в том, знает ли кто-нибудь диаграмму, сравнивающую совместимость между серверами sql? Или, может быть, кто-то, кто провел некоторые исследования в этой области?

Что касается предвзятости, я, очевидно, склонен к конкретной СУБД, поэтому нет необходимости в ответах, по которым СУРБД оказывается лучше. Давайте сосредоточимся на теме, хорошо?

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Я думаю, что вы в конечном итоге напишете конкретные, случайные операторы SQL для каждого типа сервера базы данных. Конечно, я сделал.

Я был в вашей ситуации, включая намерение написать независимый от базы данных код, но в долгосрочной перспективе он просто не работает. Одна база данных, например, не будет обрабатывать многобайтовые строки, в то время как другая будет требовать их (например, SQL Server CE), это заставит вас использовать, например, Varchar или NVarchar для столбцов. Некоторые базы данных будут поддерживать многобайтовые строки, но с ужасной производительностью. Один будет использовать VARCHAR2 (Oracle), а все остальные будут использовать VARCHAR. Один будет обрабатывать BLOB-объекты одним способом, а другой - другим. Не начинайте меня с типами данных даты.

Вместо того, чтобы находить магическое подмножество языка SQL и типов данных, которое работает во всех базах данных, вам было бы разумнее искать метод / библиотеку доступа к данным, которая может скрыть различия для вас (возможно, некоторую библиотеку ORM, которая позволяет вам создавать объекты БД и обращаться к ним?)

Как я уже сказал, я был (и остаюсь) в вашей ситуации с необходимостью поддержки нескольких баз данных, и лучшее решение для меня - написать оптимальный код для каждой базы данных, а не пытаться найти типы данных SQL и код, который работает во всех из них (я не смог, не до удовлетворительного уровня).

Кроме того, вы сможете повысить производительность каждой БД, если создадите отдельный текст SQL для каждой базы данных (т. Е. Параметры, связанные с производительностью, которые вы можете указать при создании таблицы Oracle, которые вообще не применяются при создании таблица в любой другой базе данных).

Я говорю: не боритесь с синтаксическими различиями в разных базах данных, вы не победите. Лучше смириться с этими различиями и использовать их в максимально возможной степени.

0 голосов
/ 09 ноября 2010

Я бы посмотрел стандартную спецификацию SQL ANSI и использовал указанные там типы данных. Книга , как эта , может вам помочь.

Все они имеют хорошую документацию, так что я бы просто прочитал их типы данных. Вероятно, будет иметь всю необходимую информацию. только другая информация , которую я мог найти раньше, довольно старая .

Надеюсь, это поможет.

Редактировать: Просто еще одна мысль ... вы можете использовать шаблон стратегии для своего SQL, так что не будет иметь значения, если он будет другим, вы можете использовать более продвинутые функции. Хотя таким образом у вас будет больше работы и больше поддержки: /

...