Является ли SQL сборкой для баз данных? - PullRequest
0 голосов
/ 15 января 2009

Говоря о hibernate и других ORM, евангелисты ORM говорят о SQL как о языке ассемблера для баз данных.

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

ОБНОВЛЕНИЕ: Аналогия, которую я имел в виду, означает SQL с сборкой , что ORM с C / Java / C # . Конечно, точная аналогия невозможна. Вопрос в том, будут ли в будущем разработчики более мощных компьютеров использовать только ORM (или как ORM) вместо SQL .

Ответы [ 13 ]

18 голосов
/ 15 января 2009

Абсолютно нет.

Язык ассемблера - это язык очень низкого уровня, где вы точно указываете процессору, что делать, в том числе какие регистры вы хотите использовать и т. Д.

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

Вы заметите, что платформа .NET недавно представила LINQ, которая представляет собой способ внедрения высокоуровневых SQL-подобных конструкций в такие языки, как C # и VB. Вместо того, чтобы быть похожим на ассемблер, довольно легко утверждать, что SQL работает на более высоком уровне абстракции, чем большинство основных языков программирования.

7 голосов
/ 15 января 2009

Я много слышал о несоответствии импедансов между реляционными и ОО в течение последних лет.

Мой ответ всегда заключался в том, что действительно существует очень большое несоответствие между импедансами - между неумолимым негибким «все есть объект и только объект» и удивительно гибкими и сложными «данными описываются вещи реального мира; эти данные могут быть объединены различными, пока неизвестными способами, чтобы получить математически доказуемые результаты ".

Оо не единственные фруктовые парни.

6 голосов
/ 15 января 2009

Нет, реляционная алгебра - это "код ассемблера" базы данных.

SQL - это «код C», читаемый и достаточно близкий к «аппаратному», чтобы превзойти все эти языки высокого уровня, если вы знаете, что делаете: -).

3 голосов
/ 15 января 2009

Нет, SQL сам по себе является уровнем абстракции высокого уровня, который (в основном) не зависит от базы данных.

2 голосов
/ 25 января 2009

SQL имеет некоторые общие черты с языком ассемблера:

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

Однако, в отличие от сборки, SQL является высокоуровневым, независимым от платформы языком. Также не существует стандарта ANSI / ISO для языка ассемблера.

1 голос
/ 25 января 2009

Давайте сравним написание распараллеленного SQL с написанием распараллеленного ассемблера.

Это способ написать параллельный SQL-оператор в Oracle:

select /*+ parallel (e, 4)  */ deptno,count(*)
from employees e
group by deptno

Теперь я хотел бы рассказать вам, как написать параллельный ассемблер, но я сильно сомневаюсь, что это так же просто, как добавить что-то вроде / + parallel (e, 4) / .

1 голос
/ 15 января 2009

Если вы выполняете только онлайн-обработку транзакций, вы используете только простые SQL-операторы. Hibernate может генерировать их для вас.

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

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

1 голос
/ 15 января 2009

Нет, нет, это не так. Люди, которые говорят, что никогда не кодировали сборку.

0 голосов
/ 25 января 2009

RPG - это язык ассемблера баз данных. : -)

0 голосов
/ 25 января 2009

этого никогда не произойдет. SQL - это действительно dsl, который определенно не ассемблер. Отображение реляционных БД на объектную модель полезно, но не единственное назначение БД, то есть там есть небольшая часть того, для чего используются базы данных, и поэтому sql всегда будет оставаться диалектом выбора для работы с БД!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...