Какие другие языки, отличные от SQL, в настоящее время используются для манипулирования базами данных? [Дубликат]

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

См. « Исключение NullReferenceException при проверке пользовательского AuthorizationAttribute » для несколько подробного примера.

74
задан Brendan Long 23 March 2010 в 03:46
поделиться

16 ответов

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

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

  • SchemeQL и CLSQL , которые, вероятно, являются наиболее гибкими из-за их наследия Лиспа, но они также выглядят намного больше, чем SQL, чем другие интерфейсы.
  • LINQ (в .Net)
  • ScalaQL и ScalaQuery (в Scala)
  • SqlStatement , ActiveRecord и многие другие в Ruby,
  • HaskellDB
  • ... список продолжается для многих других языков.

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

39
ответ дан Matt Joiner 4 September 2018 в 09:48
поделиться
  • 1
    Интересно. Это имеет смысл. – Brendan Long 23 March 2010 в 04:47
  • 2
    Правда, но в идеале был бы язык запросов, который хорошо работает как language . Тот факт, что SQL был сведен к протоколу, является свидетельством его слабости как языка. – user 5 April 2014 в 08:17
  • 3
    Урай Кен! Три года назад я боролся с растущим техническим долгом, возникшим в результате типичной корпоративной практики копирования экземпляров SQL-запроса много раз с небольшими изменениями, потому что в SQL нет такой вещи, как инкапсуляция или локальные методы в SQL. Я просмотрел ScalaQuery со своего поста (который теперь называется Slick) и переписал всю систему, и каждые 6 запросов становятся 1, только потому, что вы можете инкапсулировать и иметь локальные методы! Если кто-то страдает от ужасов SQL, посмотрите Scala Slick или Quill и подготовьтесь к просветлению! – ChoppyTheLumberjack 22 May 2017 в 19:41

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

Существуют базы данных объектов , такие как db4o , и есть похожие так называемые базы данных noSQL , которые относятся только к любому механизму хранения данных, который не полагается на SQL, но чаще всего открывается -source, такие как Cassandra , основанные на концепции Bigtable от Google.

Существует также ряд специальных продуктов для баз данных, таких как CDF, но вы, вероятно, вам не нужно беспокоиться о них - если вам это нужно, вы узнаете.

Ни один из них не эквивалентен SQL.

Это не значит, что они " лучше "или" хуже "- они просто не то же самое. Деннис Форбс написал отличную статью , недавно разбив ряд странных претензий на SQL. Он утверждает (и я согласен), что эти жалобы происходят в основном от людей и магазинов, которые либо выбрали неправильный инструмент для работы в первую очередь, либо неправильно используют свои SQL-СУБД (я больше не удивляюсь, когда я см. другую базу данных SQL, где каждый столбец является varchar(50), и нигде нет ни одного индекса или ключа.

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


Изменить - я был занят написанием своего ответа и не получил вопрос с нескольких минут. Сказав это, SQL по существу неотделима от СУБД. Если вы запустите продукт базы данных SQL, вы получите доступ к нему с помощью SQL, period.

Возможно, вы ищете абстракции по синтаксису; Linq to SQL, Entity Framework, Hibernate / NHibernate, SubSonic и множество других инструментов ORM предоставляют собственный SQL-подобный синтаксис, который не совсем соответствует SQL. Все они «скомпилируются» для SQL. Если вы запустите SQL Server, вы также можете написать CLR Functions / Procedures / Triggers, который позволяет писать код на любом языке .NET, который будет работать внутри базы данных; однако это не является заменой SQL, а больше расширением для него.

Я не знаю ни одного полного «языка», который вы можете сложить поверх базы данных SQL; если вы перейдете к другому продукту базы данных, вы, в конце концов, увидите SQL на трубе.

4
ответ дан Aaronaught 4 September 2018 в 09:48
поделиться
  • 1
    Я думаю, вы смешиваете реляционные базы данных с базами данных SQL. Нет особой причины, по которой реляционная база данных должна использовать SQL (за исключением того, что все ее используют). И да, я понимаю, что большинство продуктов базы данных используют только SQL. – Brendan Long 23 March 2010 в 04:09
  • 2
    @Brendan Long: Это правильно, реляционная база данных не использует для использования SQL. Однако это то, что используют реляционные базы данных do . Другие не-SQL-продукты, существующие сегодня, не являются реляционными базами данных. – Aaronaught 23 March 2010 в 04:10
  • 3
    Как насчет D и Quel? Они не кажутся очень популярными, но они существуют (и они используются для реляционных баз данных). – Brendan Long 23 March 2010 в 05:14
  • 4
    @Brendan Long: Quel, насколько я знаю, был заменен SQL. Впервые я слышал о D, и из статьи wiki, на которую я смотрел, кажется, что это не язык, а определенный набор функций, которые должен иметь язык БД. Хотя могут быть некоторые очень неясные реализации, я не думаю, что это существенно изменило что-то выше. Кроме того, я думаю, вы должны понимать, что, когда люди говорят «SQL Sucks», они не относятся к грамматике SQL, они (правильно или неправильно) относятся к SQL-реляционным базам данных. – Aaronaught 23 March 2010 в 05:23

Проблемы с SQL побудили меня подготовить черновик запросов, указанный SMEQL , в репозитории хранилища ссылок в Portland wiki . Комментарии Добро пожаловать. Он заимствует идеи функционального программирования и экспериментального языка IBM Business System 12. (Я изначально называл его TQL, но позже нашел это имя.)

2
ответ дан Brendan Long 4 September 2018 в 09:48
поделиться
  • 1
    работает ли SMEQL? Существует ли это вне C2? Есть ли программное обеспечение? – david.pfx 11 September 2014 в 06:49
  • 2
    Там также есть «BQL». - предложение superset SQL, которое может быть переписано SQL tech.pro/blog/1917/… – Nickolay 30 May 2015 в 15:36

SQL де-факто.

Рамки, которые пытаются защитить разработчиков от этого, в конечном итоге создали свой собственный язык (Hibernate HQL приходит на ум).

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

Учитывая, что ведущие поставщики баз данных, предоставляющие современные базы данных (Oracle и SQL Server) поддерживают SQL и вкладывают годы в механизмы оптимизации, и т. д., и все ведущие программы моделирования данных и программного обеспечения для управления изменениями заключаются в SQL, я бы сказал, что это самая безопасная ставка.

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

3
ответ дан codenheim 4 September 2018 в 09:48
поделиться
  • 1
    LINQ не является языком, предназначенным для защиты разработчиков от SQL, это синтаксис запроса, используемый для опроса коллекций, который может быть расширен для поддержки различных источников сбора. Базы данных SQL просто являются одним из этих источников. – Khanzor 23 March 2010 в 03:45
  • 2
    Хорошая точка, LINQ не является допустимым примером. Ред. – codenheim 23 March 2010 в 04:08

В мире .NET, хотя у него все еще есть чувство SQL-esque, LINQ-to-SQL позволит вам иметь хорошее сочетание обработки данных и SQL-данных в памяти. Это также упрощает много низкоуровневых данных, которые никто не хочет делать.

Если вы хотите увидеть тип базы данных совершенно другого мышления, взгляните на CouchDB

g0]. «Лучше», очевидно, является относительным требованием, и этот вид базы данных несовместимости «Лучше», но только в определенных сценариях.

1
ответ дан Jaxidian 4 September 2018 в 09:48
поделиться

Прямой ответ: я не думаю, что там есть серьезный соперник. DBase и его подделки (Foxpro, Codebase и т. Д.) Некоторое время были соперниками, но я думаю, что они в основном потеряли язык запросов к базе данных. Было много других продуктов баз данных, которые имели свой собственный язык запросов, таких как «Прогресс» и «Парадокс», а также несколько других, которые я использовал, имена которых я не помню и, безусловно, многие другие, о которых я никогда не слышал. Но я не думаю, что любой другой соперник даже приблизился к тому, чтобы получить нетривиальную долю рынка.

Как простое доказательство того, что существует различие между форматом базы данных и языком запросов, последняя версия из DBase, который я использовал - много лет назад, - предложил как «традиционный» язык запросов базы данных, так и SQL, оба из которых могут использоваться для доступа к тем же данным.

Side ramble: я бы не стал говорят, что SQL отстой, но у него много недостатков. Имея в виду многолетний опыт и задним числом, которые мы имеем сейчас, я уверен, что можно разработать лучший язык запросов. Но создание лучшего языка запросов и убеждение людей в его использовании - это две разные вещи. Было бы достаточно лучше убедить людей в том, что это стоит того, чтобы учиться. Люди потратили много лет своей жизни на изучение эффективного использования SQL. Даже если ваш новый язык проще в использовании, наверняка будет кривая обучения. И как бы вы перенести существующие системы с SQL на новый язык? И т. Д. Это можно сделать, конечно, так же, как C ++, C # и Java в значительной степени свергли COBOL и FORTRAN. Но для этого требуется сочетание технического превосходства и хорошего маркетинга.

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

7
ответ дан Jay 4 September 2018 в 09:48
поделиться
  • 1
    @Jay: одна возможная замена SQL может вообще не быть языком, специфичным для базы данных, используйте свой обычный язык программирования OO для сохранения данных. См. Мой ответ об объектных базах данных и ORM. Я бы не сказал, что ORM не получают некоторую долю рынка в настоящее время. – kriss 24 March 2010 в 00:28
  • 2
    Kriss: Я думал, что ORM не являются «языком запросов». а скорее то, что находится поверх языка запросов. Я полагаю, если это то, что вы используете для связи с базой данных, это можно считать языком запросов, и, возможно, я просто педантичен. Например, я помню много лет назад, когда читал, что COBOL и C не являются ДЕЙСТВИТЕЛЬНЫМИ компьютерными языками, что только ассемблеры являются настоящими компьютерными языками. COBOL и C - это просто вещи, которые переводится на компьютерный язык. Аргумент казался тогда и сейчас просто глупым.) Итак: Хорошо, я куплю это. – Jay 24 March 2010 в 14:27

SQL язык очень эффективен, а системы управления реляционными базами данных были и остаются огромным успехом. Но есть класс приложений, который требует очень высокой масштабируемости и доступности, но не обязательно высокой степени согласованности данных (в конечном итоге важна последовательная согласованность). Разнообразные системы получают лучшую производительность и масштабирование, чем СУБД, ослабляя потребность в полноценных транзакциях, совместимых с ACID. Они были названы «NoSQL», но, как указывают другие, это неправильное название: возможно, они должны быть названы базами данных NoACID.

Майкл Стоунбрейкер описывает это в . «NoSQL» обсуждает ничего делать с SQL .

0
ответ дан Jim Ferrans 4 September 2018 в 09:48
поделиться
  • 1
    Таким образом, базы данных NoACID & quot; альтернатива SQL как язык доступа к базе данных? Нет, они не. – reinierpost 20 April 2010 в 16:39
  • 2
    Хотя SQL является мощным, Relational Algebra является более мощным. – McKay 28 October 2010 в 20:57
  • 3
    @reineirpost: Согласен. Вы можете использовать SQL для запроса базы данных NoACID. Вы также можете запрашивать текстовые файлы вместо отношений (некоторые из древних инструментов командной строки Unix соответствуют операциям в реляционной алгебре. – Jim Ferrans 28 October 2010 в 21:55
  • 4
    @McKay: Есть ли коммерческая RDBMS, которая поддерживает синтаксис реляционной алгебры? Было бы здорово. – Jim Ferrans 28 October 2010 в 23:02
  • 5
    Другие люди в этой теме упомянули такие вещи, как Dataphor, и постарались лучше следовать Relational Algebra. – McKay 1 November 2010 в 15:41

Общее движение в эти дни - NoSQL; обычно эти технологии:

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

6
ответ дан Justin Ethier 4 September 2018 в 09:48
поделиться
  • 1
    +1 для баз данных, ориентированных на документы. Поскольку массивы данных растут в размерах, реляционные модели могут стать очень медленными ... – Mike Cialowicz 23 March 2010 в 03:47
  • 2
    То, что вы упомянули, не является альтернативой SQL, они даже не языки. Такие инициативы, как Apache Pig и Apache Hive, больше похожи на это. – reinierpost 16 May 2013 в 09:47

Еще в 1980-х годах ObjectStore обеспечивал прозрачный доступ к объектам. Это было похоже на RDBMS плюс ORM, за исключением всех лишних негерметичных уровней абстракции: он хранил объекты непосредственно в базе данных.

Таким образом, эта альтернатива была действительно «ни одного языка вообще», или, возможно, язык, который вы уже используете ». Вы должны писать код C ++ и создавать или перемещать объекты, как если бы они были родными объектами, и база данных позаботилась обо всем по мере необходимости. Вроде как ActiveRecord, но он действительно работал так же, как заявка на маркетинг Blitzes от ActiveRecord. : -)

(Конечно, у него не было маркетинговой мышцы Oracle, и у него не было нулевой стоимости MySQL, поэтому все игнорировали его. И теперь мы пытаемся реплицировать это с помощью РСУБД и ОРМ , и некоторые люди пытаются утверждать, что таблицы действительно имеют смысл для хранения объектов, и что писать гигантский XML-файл, чтобы сообщить компьютеру, как сопоставлять объекты с таблицами, является каким-то разумным решением.)

5
ответ дан Ken 4 September 2018 в 09:48
поделиться
  • 1
    Это круто. – Brendan Long 23 March 2010 в 04:22
  • 2
    Недостатком такого типа языка запросов является «язык, который вы уже используете», по крайней мере в те дни, заключается в том, что база данных не так много для оптимизации шаблонов доступа. Одна вещь, которая мне нравится в SQL, заключается в том, что она декларативная, и база данных делает работу с nitty-gritty, чтобы выяснить, как лучше запросить запрос. Сегодня ни один другой язык не близок к тому, чтобы обеспечить большой объем информации об оптимизации. Я просто думаю, что мы немного нормализуем ключевые слова и упростим синтаксис, если мы перепишем его сегодня. – Ken Bloom 23 March 2010 в 04:23
  • 3
    Counterpoint: Оптимизаторы запросов, в большой схеме вещей, довольно тупые. Посмотрите, сколько «помогают мне оптимизировать мой запрос». вопросы есть здесь на SO. Чтобы написать эффективный запрос, вы должны понять, что будет делать оптимизатор запросов. У меня уже есть профилировщик для моей среды программирования - и отладчик, если на то пошло - и они намного лучше, чем любой EXPLAIN, который я когда-либо видел. Я не знаю, насколько хорош ObjectStore, но однородный стек программного обеспечения может быть awesome . – Ken 23 March 2010 в 05:21
  • 4
    В 2011 году вы можете просто скачать бесплатную версию Gemstone и программу в Smalltalk. Единственное, о чем нужно подумать, - это перенести экземпляры одной версии класса в другую (простые случаи, которые она обрабатывает автоматически) – Stephan Eggermont 19 April 2011 в 22:45

Я думаю, вам может быть интересно посмотреть на Dataphor , который является средой реляционного развития с открытым исходным кодом с собственным сервером базы данных (который говорит на D) и возможностью выводить пользовательские интерфейсы из своего язык запросов.

Кроме того, появляется . Ingres по-прежнему поддерживает QUEL, и он является открытым исходным кодом.

5
ответ дан Ken Bloom 4 September 2018 в 09:48
поделиться
  • 1
    Технически, язык, на котором говорит сервер dataphor, - это D4, D (или учебник D ...) - это немного другой язык. – McKay 28 October 2010 в 20:56
  • 2
    Воска еще более педантична, D не является языком, а спецификацией Date & amp; Дарвен дает. Они используют «Tutorial D & quot; как их примерный язык. D4 действительно квалифицируется как D или, по крайней мере, в основном, но McKay является правильным, что его следует назвать «D», а не «D». В документации Dataphor имеется документ соответствия. – N8allan 18 October 2016 в 02:30

Реляционные базы данных не являются единственным видом баз данных. Я должен сказать слово о объектных базах данных , поскольку я не видел его в ответах других. У меня был некоторый опыт работы с фреймворком Zope python, который использует ZODB для стойкости объектов вместо RDBMS (ну, теоретически возможно заменить ZODB другой базой данных в zope, но в последний раз, когда я проверил, мне не удалось

Умение ZODB действительно отличается от процесса программирования объектов, которое будет настойчивым.

ORM можно рассматривать как своего рода язык

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

3
ответ дан kriss 4 September 2018 в 09:48
поделиться

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

Если ваши потребности в хранении и обработке относительно традиционных данных, используйте некоторые СУБД на основе SQL.

В ответ на ваше редактирование:

Если вы ищете альтернативы SQL DML для извлечения данных из реляционных хранилищ данных, я никогда не слышал о какой-либо серьезной альтернативе SQL.

Ударные SQL-запросы, по-моему, так сильно отличаются от языка, в отличие от базовых принципов хранения данных, на которых основан язык. Люди часто путают язык SQL с реляционной моделью данных, на которой построены RDBMS.

4
ответ дан Larry Lustig 4 September 2018 в 09:48
поделиться
  • 1
    Да, я понял, написав это, что все, что SQL и реляционные базы данных - одно и то же. – Brendan Long 23 March 2010 в 04:19

«Я иногда слышу о том, как SQL отстой, и это не очень хороший язык»

SQL старше 30 лет. «О том, какие функции делают что-то« хорошим »языком, а какие делают его« плохим », развивались быстрее, чем сам SQL.

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

", но я никогда не слышал об альтернативах."

Я предлагаю вам задуматься над тем, что вы пытаетесь услышать только в неправильных местах (то есть, в коммерческой коммерческой индустрии СУБД исключительно).

«Итак, другие хорошие языки, которые выполняют одну и ту же цель (доступ к базе данных) и что делает их лучше, чем SQL? »

Date & amp; Darwen описывает функции, которые современный язык манипулирования данными должен соответствовать своим" Третий манифест ", последняя версия которого изложена в их книге« Базы данных, типы и реляционная модель ».

« Есть ли хорошие базы данных, которые используют t его альтернативный язык? »

Если« добром »вы имеете в виду что-то вроде« промышленной силы », то нет. Ближайшая доступная вещь, вероятно, будет Dataphor.

Проект Rel предлагает реализацию для языка Tutorial D, определенного в «Базах данных, типах и реляционной модели», но текущая основная цель Rel должна быть образовательный характер.

Мой проект SIRA_PRISE предлагает реализацию для «действительно реляционного» управления данными, но я смущаюсь также называть его «реализацией языка».

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

О, и, кстати, программная система, которая используется для управления базами данных, не является «базой данных», а «системой управления базой данных», «СУБД» для краткости , Точно так же, как фотография - это не то же самое, что камера, и если вы обсуждаете камеры, и вы хотите избежать путаницы, тогда вы должны использовать правильное слово «камеры» вместо «фотографии».

13
ответ дан lulalala 4 September 2018 в 09:48
поделиться
  • 1
    Кажется, что не реляционные базы данных имеют некоторое применение (некоторые приложения получают лучшую производительность из менее структурированных данных), поэтому я бы не назвал это регрессией. Хороший ответ, хотя. – Brendan Long 23 March 2010 в 23:43
  • 2
    Это вековое разочарование всех реляционных людей, что «производительность» кажется, воспринимается как характеристика модели . Это восприятие ошибочно, период. Производительность является характеристикой реализаций модели. То, что любая существующая в настоящее время реализация реализации RM, по-видимому, часто приводит к проблемам с производительностью, представляет собой комбинацию нескольких факторов: (a) внедрение RM полностью просто чрезвычайно сложно, (b) поставщики СУБД не сильно продвигаясь вперед для нового прогресса в реализации, и (c) пользователям не хватает достаточного понимания лежащих в их основе алгоритмов. – Erwin Smout 23 March 2010 в 23:59
  • 3
    @Erwin. Но если мы обнаружим, что конкретная модель по своей сути трудно реализовать эффективно, то, несомненно, справедливо сказать, что с этой точки зрения существует проблема с этой моделью. – Jay 4 September 2012 в 15:30
  • 4
    SQL ужасен. 30 лет назад, используя английскую грамматику и слова, вероятно, звучало как хорошая идея, как смутно удобная для пользователя и лучше, чем ничего, но в наши дни мы знаем, что это не так, лучше выражать компьютерные концепции на символическом языке. Если вы хотите использовать английский, вам лучше иметь собственный парсер естественного языка. SQL не прилагает никаких усилий для правильного анализа естественного языка, это всего лишь серия хаков с (иногда необязательными) английскими словами, которые были добавлены, чтобы сделать его более запутанным. – Rolf 27 June 2018 в 13:49
  • 5
    Ну да, SQL ужасно, но не по той причине, о которой вы говорите. Если «недостаточно символично» были истинным преступником, мы все будем использовать APL. Язык, который настолько символичен, что большинство людей отмечают его как единственный в мире язык только для записи. Символы языка SQL совпадают с некоторыми словами, которые появляются в словаре Oxford или Webster. Нет фундаментальной причины, по которой это само по себе было бы проблемой. – Erwin Smout 27 June 2018 в 13:57

Взгляните на этот список.

Язык запроса гибернации , вероятно, является наиболее распространенным. Преимущество Hibernate заключается в том, что объекты очень легко (почти автоматически) сопоставляются с реляционной базой данных, и разработчику не нужно тратить много времени на разработку базы данных. За дополнительной информацией обратитесь к сайту Hibernate . Я уверен, что другие будут перекликаться с другими интересными языками запросов ...

Конечно, в нем много материалов NoSQL, но вы конкретно указываете, что вас это не интересуют.

15
ответ дан Mike Cialowicz 4 September 2018 в 09:48
поделиться
  • 1
    Определенно то, что я искал. – Brendan Long 23 March 2010 в 03:52
  • 2
    В этом списке есть очень странная коллекция языков. Я не думаю, что XQuery принадлежит, и я не знаю достаточно о D, чтобы узнать, почему он принадлежит. – Ken Bloom 23 March 2010 в 04:26
  • 3
    @Ken Bloom, по-видимому, есть язык запросов, называемый D, и отдельный C-подобный язык, называемый D. Первым, о котором я думал, был c-подобный язык .. – Brendan Long 23 March 2010 в 04:40
  • 4
    Я определенно говорил слишком быстро о D. Когда я увидел это имя, я думал, что Digital Mars D - я вижу, что язык данных D - это нечто совсем другое. – Ken Bloom 23 March 2010 в 04:45
  • 5

Возможно, вы думаете о критике C. Дата и его друзья высказались против существующих реляционных баз данных и SQL; они говорят, что системы и язык не являются на 100% реляционными и должны быть. Я действительно не вижу здесь настоящей проблемы; насколько я вижу, вы можете иметь 100% -ную реляционную систему, если хотите, просто дисциплинируя то, как вы используете SQL.

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

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

12
ответ дан reinierpost 4 September 2018 в 09:48
поделиться
  • 1
    Существуют некоторые ошибки, которые предотвращают «100% реляционные системы». даже с «дисциплинацией того, как вы используете SQL», потому что SQL не является действительно реляционным. Пример: SELECT Sum (foo) BAR Blah WHERE 1 = 0. SQL возвращает null, 100% реляционная требует нуля. carfield.com.hk/document/misc/SQL_Problems.pdf – McKay 28 October 2010 в 20:53
  • 2
    Кроме того, вы пишете "DISTINCT" после каждого выбора? – McKay 28 October 2010 в 20:59
  • 3
    Да, я бы полностью избегал NULL (поэтому для получения пустых результатов должен быть специальный корпус) и либо пишите DISTINCT всюду, либо, по крайней мере, везде, где мне нужно использовать COUNT. – reinierpost 29 October 2010 в 09:12

Взгляните на LINQ to SQL ...

Пробовал пару месяцев назад и никогда не оглядывался ....

9
ответ дан thiag0 4 September 2018 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: