SQL(言語)に代わるものは何ですか?[閉まっている]


95

私は時々SQLがいかに悪いかについて物事を聞きます、そしてそれは良い言語ではありませんが、私は本当にそれに代わるものについてあまり聞きません。では、同じ目的(データベースアクセス)を果たす他の優れた言語は何ですか?SQLよりも優れているのは何ですか?この代替言語を使用する優れたデータベースはありますか?

編集:私はSQLに精通しており、常に使用しています。私はそれに問題はありません。存在する可能性のある代替案と、人々がそれらをよりよく好む理由に興味があります。

また、別の種類のデータベース(NoSQLの動き)を探すのではなく、データベースにアクセスするための別の方法を探しています。


22
SQLはひどい?参照はありますか?
Murali副社長

3
XMLに比べて悪いと言っているのではないですか?
Bratch

6
かどうかSQLは実際に吸うかどうか私はに興味があるものです。ここものの例を示します。en.wikipedia.org/wiki/The_Third_Manifesto私の推測では、間違った言葉...かもしれない「吸う」
ブレンダン・ロング

4
明確にするために:私はSQLに問題はありません。もっと良いものがあったら、他のアイデアについて学ぶのが好きです。
ブレンダンロング

6
クエリ言語である必要があり、RDBMSである必要がある場合は、Quelを確認してください:en.wikipedia.org/wiki/QUEL_query_languages-これは、1995年より前にPostgresが使用していた名前でもあり、例外的にばかげた「PostgreSQL」。
Ken

回答:


44

SQLの構文は、自動生成の観点からも構文解析の観点からも扱いが難しいことは確かに同意します。また、配置する要求に応じてSQLを設計する場合、これは今日書いている言語のスタイルではありません。今日は。今日の言語を設計した場合、それほど多くの多様なキーワードが見つかるとは思わない。結合構文が異なるのではないかと思う。GROUP_CONCAT括弧の真ん中にキーワードをくっつけてその動作を制御するのではなく、通常の構文を使用するような関数... SQLの不整合と冗長性の独自のランドリーリストを作成します。これは、今日言語を再設計した場合にスムーズに表示されるようにしたい、または期待できるものです。

リレーショナルデータベース(つまり、プロトコルとしてのSQL)と対話するためのSQLの代替手段はありませんが、アプリケーションでSQLを作成する方法は数多くあります。これらの代替手段は、リレーショナルデータベースを操作するためのフロントエンドの形式で実装されています。フロントエンドのいくつかの例は次のとおりです。

今日の根本的なテーマは、SQLを1つの新しいクエリ言語で置き換えるのではなく、代わりに言語固有のフロントエンドを作成して、通常の日常のプログラミング言語でSQLを非表示にし、SQL をリレーショナルと対話するためのプロトコルとして扱うことですデータベース。


面白い。それは理にかなっています。
ブレンダンロング

11
正しいですが、理想的には、言語として適切に機能するクエリ言語があります。SQLがプロトコルに縮小されたという事実は、言語としての弱点の証拠です。

2
万歳!3年前、SQLにはカプセル化やローカルメソッドなどがないため、SQLクエリの一部を少し変更して何度もコピーするという一般的な企業慣行から生じた急成長する技術的負債に苦しんでいました。私はあなたの投稿(現在はSlickと呼ばれています)からScalaQueryを検索してシステム全体を書き直し、カプセル化してローカルメソッドを使用できるため、6つのクエリごとに1になりました!SQLの恐怖に苦しんでいる人がいる場合は、Scala SlickまたはQuillを調べて、啓発の準備をしてください!
ChoppyTheLumberjack

18

このリストを見てください。

Hibernateクエリ言語がおそらく最も一般的です。Hibernateの利点は、オブジェクトがリレーショナルデータベースに非常に簡単に(ほぼ自動的に)マッピングされ、開発者がデータベース設計に多くの時間を費やす必要がないことです。詳細については、HibernateのWebサイトを確認してください。私は他の人が他の興味深いクエリ言語を使うと確信しています...

もちろん、そこにはNoSQLに関するものはたくさんありますが、それらには興味がないと具体的に述べています。


間違いなく私が探していたものです。
ブレンダンロング

そのリストには、非常に奇妙な言語のコレクションがあります。私はXQueryが属しているとは思いません。また、なぜそれが属しているのかを知るのに十分なDについても知りません。
ケンブルーム

1
@Kenブルームは明らかにDと呼ばれるクエリ言語、およびD.と呼ばれる別々のCに似た言語私が考える最初のものはCのような言語..だったがあります
ブレンダン・ロング

私は間違いなくDについて速すぎて話しました。名前を見たとき、私はDigital MarsのDを考えていました。Dデータ言語はまったく別のものであることがわかりました。
ケンブルーム


13

「SQLがいかに悪いかについて時々聞いており、それは良い言語ではありません。」

SQLは30年以上前のものです。「どの機能が何かを「良い」言語にするか、どの機能が「悪い」言語にするか」についての洞察は、SQL自体よりも急速に進化しています。

また、SQLは、「リレーショナルになるために必要なもの」の現在の標準に準拠した言語ではないため、起動するためのリレーショナル言語ではありません。

「しかし、それに代わるものについてはあまり聞いたことがありません。」

あなたが間違った場所(つまり、商用DBMS業界のみ)でのみ聴こうとしている可能性について考えてみてください。

「それでは、同じ目的(データベースアクセス)を果たす他の優れた言語は何ですか?SQLよりも優れているのは何ですか?」

Date&Darwenは、最新のデータ操作言語が準拠する必要のある機能を「サードマニフェスト」で説明しています。その最新バージョンは、著書「データベース、タイプ、およびリレーショナルモデル」に記載されています。

「この代替言語を使用する優れたデータベースはありますか?」

「良い」とは、「産業の強さ」のようなものを意味し、そうではありません。利用できる最も近いものはおそらくDataphorでしょう。

Relプロジェクトは、「データベース、タイプ、およびリレーショナルモデル」で定義されたチュートリアルD言語の実装を提供していますが、Relの現在の主な目標は、本質的に教育的であることです。

私のSIRA_PRISEプロジェクトは「真にリレーショナルな」データ管理のための実装を提供していますが、「言語の実装」というラベルを付けることもためらっています。

そしてもちろん、いくつかの提案されているように、いくつかの非リレーショナルなものを検討することもありますが、私は非リレーショナルデータ管理を数十年にわたる技術的回帰として個人的に却下しています。検討する価値はありません。

ちなみに、データベースの管理に使用されるソフトウェアシステムは「データベース」ではなく、「データベース管理システム」、「DBMS」の略です。写真はカメラと同じものではなく、カメラについて議論していて混乱を避けたい場合は、「写真」ではなく「カメラ」という適切な単語を使用する必要があります。


非リレーショナルデータベースには用途があるようです(一部のアプリケーションでは、構造化されていないデータからより良いパフォーマンスが得られます)。したがって、これを回帰とは呼びません。いい答えですが。
ブレンダンロング

2
「パフォーマンス」がモデルの特徴として認識されているように見えるのは、すべての関係者の古くからの欲求不満です。その認識には欠陥があります。パフォーマンスは、モデルの実装の特性です。現在存在ているRMの実装が実際にパフォーマンスの問題を引き起こすことが多いように思われることは、複数の要因の組み合わせです。(a)RMを完全に実装することは非常に難しいことです。 、および(c)基盤となるアルゴリズムについて十分に理解していないユーザー。
Erwin Smout、2010年

3
@Erwinしかし、特定のモデルを効率的に実装するのが本質的に難しいことがわかった場合、そのモデルには効率の観点から問題があると言っても間違いありません。
ジェイ

SQLは恐ろしいです。30年前、英語のような文法と単語を使用することは、漠然とユーザーフレンドリーで何よりも優れているなど、おそらく良いアイデアのように聞こえましたが、今日ではそうではないことがわかっています。英語を使用したい場合は、適切な自然言語パーサーを使用することをお勧めします。SQLは自然言語を適切に解析しようとはしません。これは、混乱を招くために英語の単語(オプションの場合もあります)が投げ込まれた一連のハックです。
Rolf

2
そうですね、SQLは恐ろしいですが、あなたが言及した理由のために実際にはそうではありません。「十分に象徴的ではない」が真の犯人であった場合、私たちは全員APLを使用します。非常に象徴的な言語であるため、ほとんどの人は世界で唯一の書き込み専用言語としてタグ付けします。SQL言語の記号は、たまたまOxfordまたはWebsterの辞書に現れる特定の単語と一致します。それ自体が問題となる根本的な理由はありません。
Erwin Smout

12

おそらくあなたは批判を考えているでしょう。C。デートと彼の友人たちは既存のリレーショナルデータベースとSQLに対して発言しました。彼らは、システムと言語は100%リレーショナルではなく、そうである必要があると述べています。ここでは実際には問題はありません。私が見る限り、SQLの使い方を調整するだけで、100%リレーショナルシステムを使用できます。

私が個人的に実行し続けているのは、SQLがその理論的基礎である関係代数から継承する表現力の欠如です。1つの問題は、日付、タイムスタンプなどでマークされたデータを操作するときに遭遇するドメイン順序の使用のサポートの欠如です。私はかつて、タイムスタンプがいっぱいのデータベースで完全にプレーンSQLでレポートアプリケーションを作成しようとしましたが、それは現実的ではありませんでした。もう1つは、パストラバーサルのサポートがないことです。私のデータのほとんどは、パスをトラバースする必要がある有向グラフのように見えますが、SQLはそれを行うことができません。(「推移的なクロージャ」が欠けています。SQL-1999は「再帰サブクエリ」でそれを行うことができますが、実際の使用ではまだ見ていません。SQLに対応するためのさまざまなハックもありますが、醜いです。)これらの問題はちなみに、デートの著作のいくつかでも議論されました。

最近、推移的な閉鎖の問題にうまく対処していると思われる.QLが指摘されましたが、注文したドメインの問題を解決できるかどうかはわかりません。


4
SQLは真にリレーショナルではないため、「SQLの使用方法を規律する」場合でも「100%リレーショナルシステム」を妨げる障害がいくつかあります。例:SELECT Sum(foo)BAR Blah WHERE 1 = 0。SQLはnullを返し、100%のリレーショナルはゼロを要求します。carfield.com.hk/document/misc/SQL_Problems.pdf
McKay

1
また、選択するたびに「DISTINCT」と書いていますか?
マッケイ

はい、私は完全にNULLを回避し(空の結果には特別なケースが必要です)、すべての場所に、または少なくともCOUNTを使用する必要がある場所にDISTINCTを記述します。
reinierpost 2010年

8

直接的な回答:深刻な候補者はいないと思います。DBaseとその模倣者(Foxpro、Codebaseなど)はしばらくの間競争相手でしたが、基本的にデータベースクエリ言語戦争に負けたと思います。ProgressやParadoxのように独自のクエリ言語を持つデータベース製品は他にもたくさんありますが、私が使用した他のいくつかの名前は覚えていません。しかし、他の競争相手が市場の重要なシェアを獲得することに近づいたとは思いません。

データベース形式とクエリ言語に違いがあることの簡単な証明として、私が使用した最後のバージョンのDBase-何年も前-は、「従来の」DBaseクエリ言語とSQLの両方を提供し、どちらも使用できました同じデータにアクセスします。

余談:SQLが悪いとは言えませんが、多くの欠点があります。私たちの長年の経験と後知恵のおかげで、私はより優れたクエリ言語を設計できると確信しています。しかし、より優れたクエリ言語を作成し、それを使用するように人々を説得することは、2つの非常に異なるものです。学ぶのに苦労する価値があると人々に納得させるのに十分でしょうか。SQLを効果的に使用する方法を学ぶために、人々は長年にわたって投資してきました。新しい言語の方が使いやすいとしても、学習曲線は確かにあります。また、既存のシステムをSQLから新しい言語にどのように移行しますか?もちろん、C ++、C#、JavaがCOBOLやFORTRANを大きく転覆させたのと同じように、それを行うことができます。しかし、それを成功させるには、技術的な優位性と優れたマーケティングの組み合わせが必要です。

それでも、誰かがSQLを批判するときはいつでもSQLを守るために急いで急いでいるSQLの問題は、SQLを使用する上でのあなた自身の不適切さであり、SQLの障害ではなく、SQLの欠陥ではないと主張する人々から笑いを誘います。完璧さを理解するために必要なもののより高い次元に達したなど。


1
@Jay:SQLの1つの可能な置き換えは、データベース固有の言語ではない可能性があります。データの永続性のために通常のOOプログラミング言語を使用してください。オブジェクトデータベースとORMに関する私の回答を参照してください。現在、ORMが市場シェアを獲得していないとは言えません。
kriss

クリス:ORMは「クエリ言語」ではなく、クエリ言語の上にあるものだと思っていました。それがデータベースとの通信に使用するものであるとしたら、それはクエリ言語と見なすことができ、おそらく私は知識を深めているだけでしょう。何年も前に、COBOLとCは実際にはコンピューター言語ではなく、アセンブラーだけが実際のコンピューター言語であると読んだことを思い出します。COBOLとCは、コンピューター言語に翻訳されるものにすぎません。その議論は当時も今もばかげているように思われました。)それで、私はそれを購入します。
ジェイ

1
この回答は古くなっている可能性があります。現在、Mongoなどの非SQLデータベースがあり、市場で大きなシェアを占めています。
ジェイ

8

LINQ to SQLを見てみましょう ...

数か月前に試してみましたが、振り返ることはありませんでした...


1
Linqはすばらしいですが、.NETで開発している場合のみです:)
Justin Ethier

7

1980年代に戻ると、ObjectStoreは透過的なオブジェクトアクセスを提供していました。これは、RDBMSとORMのようなものでしたが、余分なリークのある抽象化レイヤーがすべてなかった点が異なります。オブジェクトをデータベースに直接保存しました。

したがって、この代替手段は本当に「まったく言語がない」、あるいは「すでに使用している言語」だったのかもしれません。C ++コードを記述し、オブジェクトをネイティブオブジェクトのように作成またはトラバースし、データベースが必要に応じてすべてを処理します。一種のActiveRecordに似ていますが、実際にはActiveRecordのマーケティングブリッツの主張と同様に機能しました。:-)

(もちろん、これにはOracleのマーケティング力がなく、MySQLのゼロコストもなかったので、誰もがそれを無視しました。そして今、RDBMSとORMでそれを複製しようとし、実際にそのテーブルについて議論しようとする人もいますオブジェクトを保存するのは理にかなっており、オブジェクトをテーブルにマップする方法をコンピューターに伝えるために巨大なXMLファイルを書き込むことは、どういうわけか合理的なソリューションです。


2
この種類のクエリ言語を "既に使用している言語"にすることの欠点は、少なくとも当時は、データベースがアクセスパターンを最適化する余地がなかったことです。SQLについて私が気に入っている点の1つは、SQLが宣言的であり、データベースがクエリを最適に実行する方法を理解するために重要な作業を行うことです。今日、最適化に関する多くのインテリジェンスを提供できる言語は他にありません。キーワードをもう少し正規化し、今日書き直した場合は構文を単純化すると思います。
ケンブルーム

4
カウンターポイント:クエリオプティマイザーは、大まかに言えば、かなり馬鹿げています。ここで、「クエリの最適化に役立つ」という質問がいくつあるか見てみましょう。効率的なクエリを作成するには、クエリオプティマイザが何を行うかを理解する必要があります。私のプログラミング環境用のプロファイラー(さらに言えば、デバッガー)はすでに手元にあり、今まで見たどのEXPLAINよりもはるかに優れています。ObjectStoreがこれでどれほど優れているかはわかりませんが、同種のソフトウェアスタックは素晴らしいものになる可能性があります。
Ken

2011年には、無料バージョンのGemstoneとプログラムをSmalltalkでダウンロードできます。考えなければならないのは、あるクラスバージョンのインスタンスを別のクラスバージョンに自動的に移行する方法(自動的に処理される単純なケース)です
Stephan Eggermont

6

最近の一般的な動きはNoSQLです。通常、これらのテクノロジーは次のとおりです。

個人的には、SQLがニーズに合っている限り、SQLに問題はないと思います。SQLは表現力があり、構造化データの操作に最適です。


2
ドキュメント指向データベースの場合は+1。データセットのサイズが大きくなると、リレーショナルモデルは非常に遅くなる可能性があります...
Mike Cialowicz

2
あなたが言及するのはSQLの代替ではなく、言語でさえありません。Apache PigやApache Hiveなどのイニシアチブは、それに似ています。
reinierpost 2013年

5

独自のデータベースサーバー(Dを話す)を備えたオープンソースのリレーショナル開発環境であるDataphorと、そのクエリ言語からユーザーインターフェイスを派生させる機能に興味があると思います。

また、 IngresはまだQUELをサポートしており、オープンソースです。


技術的には、dataphorサーバーが話す言語はD4、D(またはチュートリアルD ...)は少し異なる言語です。
マッケイ

さらに教訓的なワックスは、Dは言語ではなく、日付とダーウェンが与える仕様です。彼らは、例の言語として「チュートリアルD」を使用します。D4はDと見なされますが、少なくともほとんどの場合はDと見なされますが、マッケイは「A D」であると言うべきではなく、「D」であるとは言いません。Dataphorのドキュメントに準拠のドキュメントがあります。
N8allan

4

SQLは、SQLが設計されたドメイン(相互に関連するデータのテーブル)に対しては正常に機能します。これは通常、従来のビジネスデータ処理で見られます。オブジェクトの複雑なネットワークを永続化しようとすると、SQLはうまく機能しません。

比較的伝統的なデータを格納して処理する必要がある場合は、SQLベースのDBMSを使用してください。

あなたの編集に応じて:

リレーショナルデータストアからデータを取得するためにSQL DMLに代わるものを探しているのであれば、SQLに代わる深刻な方法について聞いたことがありません。

SQLが取得するノックは、言語の基礎となっている基本的なデータストレージの原則とは対照的に、言語に対してそれほど大きなものではありません。SQL言語とRDBMSが構築されているリレーショナルデータモデルを混同することがよくあります。


1
うん、私はこれを書いた後気づいた誰も物事SQLとリレーショナルデータベースは同じものであることを...
ブレンダン・ロング

4

リレーショナルデータベースは、唯一の種類のデータベースではありません。他の人からの応答では見たことがないので、オブジェクトデータベースについて一言言っておく必要があります。RDBMSの代わりにZODBをオブジェクトの永続性に使用するZope pythonフレームワークの経験がありました(まあ、ZODBをzope内の別のデータベースで置き換えることは理論的には可能ですが、前回確認したところ、正常に機能しなかったため、それについて前向きにならないでください)。

ZODBの考え方は本当に異なり、たまたま永続的なオブジェクトプログラミングに似ています。

ORMは一種の言語と見なすことができます

ある意味では、オブジェクトデータベースモデルがORMの目的であると私は信じています。通常のオブジェクトモデルを介して永続データにアクセスすることです。それは一種の言語であり、ある程度の市場シェアを獲得していますが、今のところ、それは言語ではなく、抽象化レイヤーとして見ています。ただし、SQLよりもオブジェクトデータベースよりもORMを使用する方が効率的だと思います(つまり、SQLデータベースをベースレイヤーとして使用してたまたま使用したORMのパフォーマンス)。


3

SQLには多くの実装(SQL Server、mysql、Oracleなど)がありますが、リレーショナルデータの格納と取得のために設計された汎用言語という意味で同じ目的を果たす他の言語はありません。

db4oなどのオブジェクトデータベースがあり、SQLに依存しないほぼすべてのデータストレージメカニズムを参照する同様のいわゆるnoSQLデータベースがありますが、Cassandraなどの最も一般的なオープンソース製品は、GoogleのBigtableコンセプトに大まかに基づいています。

CDFのような特別な目的のデータベース製品もいくつかありますが、おそらくそれらを心配する必要はありません-必要な場合は、ご存知でしょう。

これらはどれもSQLに相当しません。

それは、それらが「より良い」または「より悪い」という意味ではありません-それらは同じではありません。デニスフォーブスは最近、SQLに対して浮上している奇妙な主張の多くを分析した素晴らしい投稿を書きました。彼は、これらの苦情は主に、最初の仕事に間違ったツールを選択したか、SQL DBMSを適切に使用していない人々やショップに起因すると主張します(私も同意します)。すべての列がでvarchar(50)あり、単一のインデックスまたはキーがどこにもない別のSQLデータベースを参照してください)。

さらに別のソーシャルネットワーキングサイトを実装していて、ACIDの原則にあまり関心がない場合は、必ずdb4oなどの製品を検討してください。ただし、ミッションクリティカルなビジネスシステムを開発している場合は、 "SQLのサック"コーラスに参加する前によく考えることを強くお勧めします。まず調査を行い、さまざまな製品がサポートできる機能とサポートできない機能を見つけます。


編集-回答を書くのに忙しかったので、数分たっても質問の更新がありませんでした。そうは言っても、SQLは本質的にDBMS自体から切り離せません。SQLデータベース製品を実行する場合は、SQL、ピリオドでアクセスします。

おそらく、構文の抽象化を探しているでしょう。Linq to SQL、Entity Framework、Hibernate / NHibernate、SubSonic、および他の多くのORMツールはすべて、SQLではない独自のSQLのような構文を提供します。これらはすべてSQLに「コンパイルダウン」されます。SQL Serverを実行している場合は、CLR関数/プロシージャ/トリガーを作成することもできます。これにより、データベース内で実行される.NET言語でコードを作成できます。ただし、これは実際にはSQLの代わりではなく、SQLの拡張機能です。

私は、SQLデータベースの上に重ねることができる完全な「言語」を知りません。別のデータベース製品に切り替える前に、最終的にはSQLがパイプで表示されるようになります。


リレーショナルデータベースとSQLデータベースを混同していると思います。リレーショナルデータベースがSQLを使用する必要がある特別な理由はありません(他のすべての人がSQLを使用する場合を除く)。そして、はい、ほとんどのデータベース製品はSQLのみを使用していることを理解しています。
ブレンダンロング

1
@Brendan Long:そうです、リレーショナルデータベースはSQLを使用する必要はありません。ただし、これはリレーショナルデータベース使用するものです。現在存在する他の非SQL製品は、リレーショナルデータベースではありません。
Aaronaught、2010年

DとQuelはどうですか?それらはあまり人気がないようですが、存在します(リレーショナルデータベースに使用されています)。
ブレンダンロング

1
@Brendan Long:私が知る限り、QuelはSQLに取って代わられました。初めてDについて聞いたことがありますが、Wikiの記事を調べたところ、それは実際には言語自体ではなく、DB言語に必要な一連の定義された機能のようです。いくつかの非常にあいまいな実装があるかもしれませんが、これは上記のものを大幅に変更するとは思いません。また、人々が「SQLサック」を言うとき、彼らはSQL文法を参照しているのではなく、SQLベースのリレーショナルデータベースを参照していることを理解する必要があります。
アーロンノート

3

SQLは事実上のものです。

開発者をそこから保護しようとするフレームワークは、最終的に独自の特定の言語を作成しました(Hibernate HQLが思い浮かびます)。

SQLは問題をかなりうまく解決します。高度なプログラミング言語よりも学ぶことは難しいことではありません。すでに関数型言語を知っているなら、SQLを理解するのは簡単です。

最先端のデータベース(OracleおよびSQL Server)を提供する主要なデータベースベンダーがSQLをサポートしており、最適化エンジンなどに何年も投資しており、SQLのすべての主要なデータモデリングソフトウェアと変更管理ソフトウェアの取り引きを検討していると思います。最も安全な賭け。

また、データベースにはクエリだけではありません。スケーラビリティ、バックアップとリカバリ、データマイニングがあります。大手ベンダーは、新しい「キャッシュ」エンジンでさえ考慮していない多くのことをサポートしています。


LINQは、開発者をSQLから保護するために設計された言語ではなく、コレクションに問い合わせるために使用されるクエリ構文であり、さまざまなコレクションソースをサポートするように拡張できます。SQLデータベースは、たまたまこれらのソースの1つです。
Khanzor 2010年

良い点は、LINQは有効な例ではありません。編集されました。
codenheim、2010年

2

SQLの問題により、Portland Pattern Repository wikiSMEQLと呼ばれるドラフトクエリ言語を作成する動機になりました。コメントようこそ。関数型プログラミングとIBMの実験的なBusiness System 12言語からアイデアを借用しています。(私はもともとそれをTQLと呼んでいましたが、後でその名前が採用されたことがわかりました。)


SMEQLは生きていますか?C2の外部に存在しますか?ソフトウェアはありますか?
david.pfx 2014

「BQL」もあります。SQLのスーパーセットの提案であり、SQLtech.pro
blog/

1

.NETの世界では、SQL風の感覚がまだありますが、LINQ-to-SQLを使用すると、SQLとメモリ内の.NET処理をうまく組み合わせることができます。また、誰も実行したくない下位レベルのデータ配管の多くを簡素化します。

まったく異なる考え方のデータベースタイプを確認したい場合は、CouchDBをご覧ください。「より良い」は明らかに相対的な要件であり、この種の非関係データベースは「より良い」ですが、特定のシナリオでのみです。


0

SQLは言語が非常に強力であり、リレーショナルデータベース管理システムはこれまでも今も大成功しています。ただし、非常に高いスケーラビリティと可用性を必要とするアプリケーションのクラスがありますが、必ずしも高度なデータ整合性ではありません(最終的な整合性が重要です)。さまざまなシステムは、完全なACID準拠トランザクションの必要性を緩和することにより、RDBMSよりも優れたパフォーマンスとスケーリングを実現します。これらは「NoSQL」と呼ばれていますが、他の人が指摘しているように、これは誤称です。おそらく、それらはNoACIDデータベースと呼ばれるべきです。

Michael Stonebrakerがこれについて「No​​SQL」ディスカッションで取り上げていますが、SQLには何の関係もありません


では、NoACIDの「データベース」は、データベースアクセス言語としてのSQLの代わりになるのでしょうか。いいえそうではありません。
reinierpost

SQLは強力ですが、リレーショナル代数はより強力です。
マッケイ

@reineirpost:そうですね。SQLを使用してNoACIDデータベースにクエリを実行できます。リレーションの代わりにテキストファイルをクエリすることもできます(古代のUnixコマンドラインツールの一部は、リレーショナル代数の演算に対応しています。
ジム・Ferrans

@McKay:リレーショナル代数構文をサポートする商用RDBMSはありますか?いいですね。
ジムフェラン

このスレッドの他の人々は、Dataphorのようなものについて言及し、リレーショナル代数をよりよく追跡することを目指しています。
マッケイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.