Какие есть хорошие альтернативы SQL (языку)? [закрыто]

96

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

РЕДАКТИРОВАТЬ: Я знаком с SQL и использую его все время. У меня нет проблем с этим, меня просто интересуют любые альтернативы, которые могут существовать, и почему людям они нравятся больше.

Я также не ищу альтернативные типы баз данных (движение NoSQL), а просто разные способы доступа к базам данных.

Брендан Лонг
источник
22
SQL - отстой? Есть ссылки?
Murali VP
3
Вы же не говорите, что это отстой по сравнению с XML?
Bratch
6
Меня интересует, действительно ли SQL отстой или нет. Вот пример: en.wikipedia.org/wiki/The_Third_Manifesto Я думаю, «отстой» может быть неправильным словом ..
Брендан Лонг,
4
Чтобы уточнить: у меня нет проблем с SQL. Мне просто нравится узнавать о других идеях, если есть что-то получше.
Брендан Лонг,
6
Если это должен быть язык запросов, и он должен быть для РСУБД, проверьте Quel: en.wikipedia.org/wiki/QUEL_query_languages - это также то, что Postgres использовал до 1995 года, когда он также изменил свое имя на исключительно глупый "PostgreSQL".
Кен

Ответы:

47

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

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

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

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

Кен Блум
источник
Интересно. Хотя в этом есть смысл.
Брендан Лонг
11
Верно, но в идеале должен быть язык запросов, который хорошо работает как язык . Тот факт, что SQL был сведен к протоколу, свидетельствует о его слабости как языка.
3
Ура, Кен! Три года назад я боролся с растущим техническим долгом, который возник в результате типичной корпоративной практики многократного копирования фрагментов SQL-запроса с небольшими изменениями, поскольку в SQL нет такой вещи, как инкапсуляция или локальные методы. Я нашел ScalaQuery в вашем посте (который теперь называется Slick) и переписал всю систему, и каждые 6 запросов превратились в 1 просто потому, что вы могли инкапсулировать и использовать локальные методы! Если кто-то страдает от ужасов SQL, поищите Scala Slick или Quill и приготовьтесь к просветлению!
ChoppyTheLumberjack
Распространение методов сокрытия SQL показывает, насколько он плох. SQL просто пытается сделать слишком много в одном операторе.
Зендель
19

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

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

Конечно, существует множество материалов по NoSQL, но вы специально указываете, что они вам не интересны.

Майк Чалович
источник
Определенно то, что я искал.
Брендан Лонг,
В этом списке очень странная коллекция языков. Я не думаю, что XQuery принадлежит, и я недостаточно знаю о D, чтобы понять, почему он принадлежит.
Кен Блум
1
@Ken Bloom, по-видимому, есть язык запросов под названием D и отдельный C-подобный язык под названием D. Первым, о котором я подумал, был c-подобный язык ...
Брендан Лонг,
Я определенно слишком быстро говорил о D. Когда я увидел это название, я подумал о Digital Mars 'D - я вижу, что язык данных D - это нечто совершенно иное.
Кен Блум
2
c2.com/cgi/wiki?QueryLanguageComparison тоже заслуживает внимания
Кен Блум,
13

«Иногда я слышу о том, что SQL - отстой, и это плохой язык»

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

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

«но я никогда особо не слышал об альтернативах этому».

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

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

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

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

Если под словом «хорошо» вы имеете в виду что-то вроде «промышленного уровня», то нет. Самым близким из доступных, вероятно, будет Dataphor.

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

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

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

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

Эрвин Смаут
источник
Кажется, нереляционные базы данных находят применение (некоторые приложения получают лучшую производительность за счет менее структурированных данных), поэтому я бы не назвал это регрессией. Хотя хороший ответ.
Брендан Лонг,
2
То, что «производительность», кажется, воспринимается как характеристика модели, является извечным разочарованием всех людей, связанных с общением . Это восприятие ошибочно, точка. Производительность - это характеристика реализаций модели. То, что любая существующая в настоящее время реализация RM действительно часто вызывает проблемы с производительностью, является комбинацией нескольких факторов: (а) реализация RM в полном объеме просто чрезвычайно сложна, (б) поставщики СУБД недостаточно активно добиваются прогресса в новой реализации. , и (c) пользователи недостаточно понимают основную алгоритмику.
Эрвин Смаут,
3
@Erwin Но если мы обнаружим, что конкретную модель по своей природе сложно реализовать эффективно, тогда, конечно, будет справедливо сказать, что с этой моделью есть проблема с точки зрения эффективности.
Джей,
SQL ужасен. 30 лет назад использование английской грамматики и слов, вероятно, звучало как хорошая идея, как неопределенно удобная для пользователя и лучше, чем ничего, но сегодня мы знаем, что это не так, лучше выражать компьютерные концепции на символическом языке. Если вы хотите использовать английский, вам лучше иметь правильный парсер естественного языка. SQL не прилагает усилий для правильного синтаксического анализа естественного языка, это просто серия уловок с (иногда необязательными) английскими словами, добавленными, чтобы сделать его более запутанным.
Rolf
2
Ну да, SQL ужасен, но не по той причине, которую вы упомянули. Если бы истинным виновником было «недостаточно символическое», мы бы все использовали APL. Язык настолько символичен, что большинство людей называют его единственным в мире языком, предназначенным только для записи. Символы языка SQL совпадают с определенными словами, которые встречаются в Оксфордском словаре или словаре Вебстера. Нет фундаментальной причины, по которой это само по себе могло бы стать проблемой.
Erwin Smout
12

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

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

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

Reinierpost
источник
4
Есть некоторые ошибки, которые мешают «100% реляционным системам» даже «дисциплинировать способ использования SQL», потому что SQL не является по-настоящему реляционным. Пример: ВЫБРАТЬ Sum (foo) BAR Blah WHERE 1 = 0. SQL возвращает ноль, 100% реляционные требует ноль. carfield.com.hk/document/misc/SQL_Problems.pdf
Маккей,
1
Кроме того, вы пишете "DISTINCT" после каждого выбора?
McKay
Да, я бы полностью избегал NULL (поэтому для пустых результатов должен быть специальный регистр) и либо писать DISTINCT везде, либо, по крайней мере, там, где мне нужно использовать COUNT.
Reinierpost
8

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

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

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

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

Джей
источник
1
@Jay: одной из возможных замен SQL может быть отсутствие языка, специфичного для базы данных, используйте свой обычный объектно-ориентированный язык программирования для сохранения данных. См. Мой ответ об объектных базах данных и ORM. Я бы не сказал, что сегодня ORM не получают определенной доли рынка.
Крисс
Крисс: Я думал, что ORM - это не «язык запросов», а нечто, что находится поверх языка запросов. Я полагаю, если это то, что вы используете для связи с базой данных, это можно считать языком запросов, и, возможно, я просто педантичен. Например, я помню, как много лет назад читал, что COBOL и C ДЕЙСТВИТЕЛЬНО не являются компьютерными языками, что только ассемблеры являются настоящими компьютерными языками. COBOL и C - это просто вещи, которые переводятся на компьютерный язык. Аргумент тогда и сейчас казался просто глупым.) Итак: Хорошо, я куплю это.
Джей,
1
Этот ответ может устареть. Теперь существуют базы данных, отличные от SQL, такие как Mongo и т. Д., Которые занимают нетривиальную долю рынка.
Джей
8

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

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

thiag0
источник
1
Linq замечательный, но только если вы разрабатываете на .NET :)
Джастин Этье,
7

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

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

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

Кен
источник
2
Обратной стороной такого рода того, чтобы ваш язык запросов был «языком, который вы уже используете», по крайней мере в те дни, было то, что у базы данных не было много места для оптимизации шаблонов доступа. Что мне нравится в SQL, так это то, что он декларативен, и база данных выполняет самую мелкую работу, чтобы выяснить, как лучше всего выполнить предварительный запрос. Ни один другой язык сегодня не может дать столько информации об оптимизации. Я просто думаю, что мы бы немного нормализовали ключевые слова и упростили синтаксис, если бы переписали его сегодня.
Кен Блум
4
Контрапункт: оптимизаторы запросов, по большому счету, довольно тупы. Посмотрите, сколько вопросов «помогите мне оптимизировать мой запрос» здесь, на SO. Чтобы написать эффективный запрос, вы должны понимать, что будет делать оптимизатор запросов. У меня уже есть профилировщик для моей среды программирования - и отладчик, если на то пошло - и они намного лучше любых EXPLAIN, которые я когда-либо видел. Я не знаю, насколько хорош в этом ObjectStore, но однородный программный стек может быть потрясающим .
Кен
В 2011 году вы можете просто скачать бесплатную версию Gemstone и программу на Smalltalk. Единственное, о чем нужно подумать, это как перенести экземпляры одной версии класса в другую (простые случаи, которые он обрабатывает автоматически)
Стефан Эггермонт
5

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

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

Кен Блум
источник
Технически, язык, на котором говорит сервер данных, - D4, D (или учебник D ...) - это немного другой язык.
McKay
Еще более педантичный, D - это не язык, а спецификация, которую дают Дэйт и Дарвен. Они используют «Учебник D» в качестве языка примеров. D4 действительно квалифицируется как D, или, по крайней мере, в большинстве случаев, но Маккей прав, говоря, что это D, а не то, что это D. В документации Dataphor есть соответствующий документ.
N8allan
5

Общее движение в наши дни - NoSQL; как правило, эти технологии:

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

Джастин Этье
источник
2
+1 для документно-ориентированных баз данных. По мере увеличения размеров наборов данных реляционные модели могут стать очень медленными ...
Майк Чалович
2
То, что вы упомянули, не является альтернативой SQL, это даже не языки. На это больше похожи такие инициативы, как Apache Pig и Apache Hive.
Reinierpost
4

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

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

В ответ на ваше изменение:

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

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

Ларри Люстиг
источник
1
Да, я понял, написав это, что все, что касается SQL и реляционных баз данных, - это одно и то же ...
Брендан Лонг,
4

Реляционные базы данных - не единственный вид баз данных. Я должен сказать несколько слов об объектных базах данных, поскольку я не видел этого в ответах других. У меня был некоторый опыт работы с фреймворком Python Zope, который использует ZODB для сохранения объектов вместо РСУБД (ну, теоретически возможно заменить ZODB другой базой данных в zope, но в последний раз, когда я проверял, мне не удалось заставить его работать, так что могу Я не уверен в этом).

Мышление ZODB действительно иное, больше похоже на объектное программирование, которое может быть постоянным.

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

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

Крисс
источник
3

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

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

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

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

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

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


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

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

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

Aaronaught
источник
Я думаю, вы путаете реляционные базы данных с базами данных SQL. Нет особой причины, по которой реляционная база данных должна использовать SQL (кроме всех остальных). И да, я понимаю, что большинство продуктов для баз данных используют только SQL.
Брендан Лонг,
1
@Brendan Long: Это правильно, реляционная база данных не должны использовать SQL. Тем не менее, это то , что реляционные базы данных делают использование. Другие существующие сегодня продукты, отличные от SQL, не являются реляционными базами данных.
Aaronaught
А что насчет D и Quel? Они не кажутся очень популярными, но они существуют (и используются для реляционных баз данных).
Брендан Лонг
1
@Brendan Long: Насколько я знаю, Quel был заменен SQL. Я впервые услышал о D, и из вики-статьи, на которую я посмотрел, кажется, что это не язык как таковой, а скорее определенный набор функций, которые должен иметь язык БД. Хотя могут быть некоторые очень неясные реализации, я не думаю, что это существенно меняет что-либо выше. Кроме того, я думаю, вы должны понимать, что когда люди говорят «SQL - отстой», они не имеют в виду грамматику SQL, они (правильно или ошибочно) имеют в виду реляционные базы данных на основе SQL.
Aaronaught
3

SQL де-факто.

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

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

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

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

Codenheim
источник
LINQ - это не язык, предназначенный для защиты разработчиков от SQL, это синтаксис запроса, используемый для опроса коллекций, который может быть расширен для поддержки различных источников коллекций. Базы данных SQL оказались одним из таких источников.
Ханзор
Хороший момент, LINQ не является допустимым примером. Отредактировано.
Codenheim
2

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

Таблизатор
источник
SMEQL живет? Он существует вне C2? Есть софт?
david.pfx
Также существует «BQL» - предложение надмножества SQL, которое можно перенести в SQL tech.pro/blog/1917/…
Николай
1

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

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

Джаксидиан
источник
0

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

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

Джим Ферранс
источник
Так являются ли «базы данных» NoACID альтернативой SQL в качестве языка доступа к базе данных? Нет, они не.
Reinierpost
В то время как SQL является мощным, реляционная алгебра более мощным.
McKay
@reineirpost: Согласен. Вы можете использовать SQL для запроса базы данных NoACID. Вы также можете запрашивать текстовые файлы вместо отношений (некоторые из древних инструментов командной строки Unix соответствуют операциям в реляционной алгебре.
Джим Ферранс,
@McKay: Существует ли коммерческая СУБД, поддерживающая синтаксис реляционной алгебры? Было бы здорово.
Джим Ферранс,
Другие люди в этой ветке упоминали такие вещи, как Dataphor, и стремятся лучше следовать реляционной алгебре.
McKay