Подтвердить что ты не робот

Почему база данных не полностью поддерживает стандарты ANSI или ISO SQL?

Если бы я проектировал нефтеперерабатывающий завод, я бы не ожидал, что материалы от разных поставщиков не будут соответствовать опубликованным стандартам тонким, но важным образом. Трубопроводы, клапаны и другие компоненты от одного поставщика будут поставляться с фланцами и толщиной стенок по стандартам ANSI, равно как и те же детали от любого другого поставщика. Поэтому обеспечивается совместимость и безопасность системы.

Почему же тогда общие базы данных настолько разборчивы в отношении того, какие части стандартов они придерживаются, и почему не существует 100% стандартов, совместимых с системами? Являются ли стандарты "сломанными", недостаточными или слишком сложными для разработки?

Принимая это к заключению; какова точка ANSI (или ISO), определяющая стандарты для SQL?

Изменить: Список различий между обычными базами данных

4b9b3361

Ответ 1

В индустрии программного обеспечения у вас есть некоторые стандарты, которые действительно являются стандартами, то есть продукты, которые не соответствуют им, просто не работают. Спецификации файлов относятся к этой категории. Но тогда у вас также есть "стандарты", которые больше похожи на рекомендации: они могут быть определены как стандарты с пошаговыми определениями, но регулярно выполняются только частично или со значительными различиями. Веб-разработка полна таких "стандартов", как HTML, CSS и "ECMAScript", где разные поставщики (т.е. Веб-браузеры) реализуют стандарты по-разному.

Вариант вызывает головные боли, но стандартизация по-прежнему обеспечивает преимущества. Представьте, что вообще не было стандарта HTML, и каждый браузер использовал свой собственный язык разметки. Аналогичным образом, представьте, если не было стандарта SQL, и каждый поставщик базы данных использовал свой собственный полностью проприетарный язык запросов. Было бы гораздо больше блокировки вендора, и разработчикам было бы гораздо труднее работать с более чем одним продуктом.

Итак, нет, ANSI SQL не соответствует той же цели, что и стандарты ANSI в других отраслях. Но тем не менее это служит полезной цели.

Ответ 2

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

  • совместимость с тем, что у них уже есть.
  • производительности
  • цена
  • Поддержка ОС

чтобы назвать лишь несколько факторов.

То же самое относится к языкам программирования - очень немногие (если есть) компиляторы поддерживают каждую отдельную функцию существующих стандартов ANSI C и С++.

Относительно того, зачем беспокоиться о стандарте, большинство поставщиков в конечном итоге приносят стандартную поддержку на борту. Например, большинство поставщиков поддерживают более или менее все SQL89. Это позволяет поставщику отмечать (относительно неважный) флажок на своем спецификационном листе, а также разрешать людям, таким как я, заинтересованным в написании портативного кода, чтобы сделать это, хотя и пришлось отказаться от множества колоколов и свистов.

Ответ 4

Действительно, стандарт ANSI SQL часто не соблюдается. Просто прочитайте SO: большинство потоков SQL никогда не ссылаются на стандарт, тогда как, например, обсуждения сетевых протоколов часто включают фактическую цитату, главу и стих соответствующего RFC.

Я всегда подозревал, что одной из причин является тот факт, что стандарт SQL не является свободно распространяемым. Просто получить это не тривиально. Различные неофициальные копии плавают вокруг.)

Другая причина в том, что это очень сложный текст и плохо организованный. Он использует странный словарь (например, "authID" вместо "user" ). Вам нужны книги, чтобы понять стандарт ( "Руководство по стандарту SQL", C.J. Date, Hugh Darwen - Addison-Wesley).

Ответ 5

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

Ответ 6

Mimer SQL поддерживает большую стандартную поддержку, но это довольно неизвестно. Он находится в производстве на нескольких крупных площадках, в основном в Швеции. Но я думаю, что многие сайты мигрируют к другим.

Подробные сведения о поддержке:

  • SQL-99
  • SQL-2003
  • PSM
  • Триггеры базы данных и функции в соответствии с SQL: 1999
  • Поддержка двоичных и символьных объектов (BLOB/CLOB/NCLOB) в соответствии с SQL: 1999
  • транзакции с несколькими базами данных (двухфазная фиксация), соответствующая стандарту Open Group XA
  • Поддержка Java ME CDC Foundation Profile и Java ME CLDC/MIDP

Ответ 7

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

11 сентября у полиции и пожарных были частные беспроводные сети для общения между их людьми. Но, угадайте, что? Эти две системы не были взаимно совместимыми. Таким образом, были ненужные задержки в передаче информации от одного вида слуги общественной безопасности другому.

Если вы вернетесь достаточно далеко, вы можете найти время в Нью-Йорке, где около половины электрической сети было DC, в пользу Эдисона, а другая половина была AC, одобренной Westinghouse.

Стандарты иногда возникают сами по себе и называются стандартами де-факто. Чаще всего стандарты должны устанавливаться органом, специально уполномоченным на то, чтобы это произошло. Что касается стандартов SQL, некоторые из крупнейших поставщиков предваряют стандарт. Чтобы соответствовать стандарту, они должны были бы использовать инженерные расходы, которые не приносят пользу существующей клиентской базе. Хуже того, они могут оказаться несовместимыми с их собственным предыдущим продуктом.

Полное соответствие стандарту SQL может все же произойти, но это маловероятно. Даже если это так, есть время задержки между эволюцией нового стандарта SQL и его соблюдением.

Ответ 8

IMHO, поставщики БД продвигают стандарты ANSI SQL, чтобы включить новые функции и конструкции в свою область гораздо больше, чем ANSI, сообщая поставщикам БД "один истинный способ".

Рынок БД обусловлен функциями, масштабируемостью и стоимостью. Коммерческий приоритет - отказаться от технического преимущества (т.е. Разбиения на разделы, поворота, UPSERT, репликации), ожидая, что ANSI ратифицирует синтаксис. К тому времени, когда это было сделано, уже существует значительная установка проприетарного синтаксиса.

Таким образом, большинство поставщиков БД значительно улучшили свою основную поддержку "ANSI SQL" за последние несколько лет. (SQL Server с SELECT FROM INFORMATION_SCHEMA и соединениями ANSI Oracle фактически работает, а также родные соединения в CBO)

Ответ 10

Настоящая причина: большинство "разработчиков" - клиент-ориентированные кодеры, поэтому не понимают и не заботятся о правилах д-ра Кодда 12. Именно поэтому MySql, который не является реляционной базой данных каким-либо значительным образом, часто встречается в разработке webKiddie. Такие разработчики хотят только рудиментарного анализа SELECT, UPDATE, DELETE. Они избегают ограничений любого рода, предпочитая "делать это в приложении". Реакционные заявки 1960 года - это то, что вы получаете.

Ответ 11

Большинство из них довольно совместимы. Но здесь плохие новости, стандарты ИМО порождают посредственность. Поставщики хотят, чтобы вы были заперты в своих расширениях, и часто есть веская причина для нестандартных вещей. Реально, насколько вы можете сбрасывать Oracle для SQL Server или наоборот? Если вы не создадите продукт, который ваши cusotmers могут использовать против других баз данных, вы, как предприятие, вряд ли замените DB. Слишком больно.

Ответ 12

Обычно компании обычно используют одного поставщика, чтобы избежать поддержки джунглей различных и, возможно, несовместимых систем. Кроме того, гораздо дешевле обучать своих разработчиков/системных инженеров использованию одних инструментов для разработчиков баз данных, чем в трех разных наборах инструментов. Позже, эта компания может затем расти достаточно большой, чтобы купить некоторые из ее конкурентов. Это означало бы другой совершенно другой набор инструментов, который вам нужно было бы управлять, интегрировать и т.д.

Это много работы.

Представьте себе, что вместо этого у вас есть уровень переносимости, так что вам действительно все равно, что ниже. Это будет намного лучше.

Ответ 13

Это классика - и вот ответ.

Никто не умрет, если ваша реализация SQL не соответствует стандарту ANSI, тогда как люди могут умереть на нефтеперерабатывающем заводе, если стандарты не соблюдаются.