SQL - это сборка для баз данных?

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
894
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

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

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

Al W 15.01.2009 11:08

Я написал код сборки и рассматривал SQL как язык ассемблера db. Почему? Потому что это родной язык для БД.

Joshua 25.01.2009 00:09

Нет, однако вы могли бы сказать, что SQL - это C баз данных. Оба они ориентированы на данные процедурные и императивные, и, а не на объектно-ориентированные. И поскольку C легче моделировать объекты и функциональность на более высоких языках, но, в конце концов, C является базой для измерения производительности.

Процедурные и императивные? Нет, если вы правильно напишете. Хорошо написанный SQL должен быть декларативным и основанным на наборах.

Greg Beech 15.01.2009 10:49
Ответ принят как подходящий

Точно нет.

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

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

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

@chadmyers - Я не вижу от вас ответа, в чем суть. Хотите уточнить? (обратите внимание, что в моем ответе было написано перед обновление вопроса, поэтому, если вы думаете, что он не отвечает на обновление, я буду рад уточнить, почему ORM не выше уровня, чем простой старый SQL)

Greg Beech 25.01.2009 19:02

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

Не верьте этой чуши.

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

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

+1 SQL семантически близок к реляционной алгебре - теоретической модели, лежащей в основе технологии РСУБД. Он специально разработан для решения поставленной задачи и является отличным примером широко используемого предметно-ориентированного языка.

ConcernedOfTunbridgeWells 15.01.2009 12:14

За исключением того, что люди не используют его таким образом, они используют его для написания процедурной логики if / then, которая не предназначена для SQL.

chadmyers 25.01.2009 09:44

Я слышал много сук о несоответствии импеданса между реляционными и объектно-ориентированными за последние годы.

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

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

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

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

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

Это в следующем смысле: ORM предоставляет высокоуровневый предметно-ориентированный API, который генерирует операторы SQL, точно так же, как высокоуровневый язык создает предметно-зависимые API-интерфейсы и генерирует операторы машинного языка.

То есть:

  • Orm - это уровень выше SQL
  • И HLL - это уровень выше сборки

Однако я не имею в виду, что люди перестанут использовать SQL и предпочтут ORM, точно так же, как люди перестали использовать сборку и предпочитают HLL.

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

Mark Brittingham 25.01.2009 00:33

@Mark: используя вашу терминологию, сборка «равна» HLL или «подчинена»? Но это правда, что я смотрю на это с точки зрения программиста.

ChrisW 25.01.2009 02:37

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

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

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

Сравним написание распараллеленного SQL с написанием распараллеленного ассемблера.

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

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

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

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

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

Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением.

Seki 30.08.2012 15:52

@Seki посмотри на РПГ и приходи снова.

stesch 02.09.2012 01:55

Другие вопросы по теме