4

クリストファー・デイトの著書Database in Depth: Relational Theory for Practitionersから、適切な関係代数を研究しています。本全体を通して、彼は理論を伝えるために彼とヒュー・ダーウェンが思いついた言語を使用しています —チュートリアル D . 一般に、チュートリアル D は非常に実行可能なクエリ言語であり、SQL よりもはるかに柔軟であると思います。 SQL。

これは、何かを基本的なものにするだけでも膨大な作業であることに気づきました。SQL の意味でテーブルを表さず、リレーショナルの意味でリレーションを表し、特定のクエリを想定しない既存のストレージ システムが利用可能かどうか疑問に思います。 language はデータへのアクセスに使用されますがproductjoinintersectunionprojectなどの低レベル関数を提供するだけです (クエリ言語レベルではなく、C レベルで)。

私は理にかなっていますか?:) 基本的に、私はこのようなものを取り、その前にチュートリアル D (または同様の) クエリ インターフェイスを貼り付けたいと思います。

すべてをメモリ内で実行するのは非常に簡単ですが、ディスク上のデータ構造をやや効率的な方法で表現することはかなり難しく、おそらく真剣に調査しなければ頭がいっぱいです。

4

3 に答える 3

4

ユーザーとデータベース エンジン間の構造化された入力のインターフェイスとしてSQL を使用する一般的な SQL ベースの RDBMSは、クエリ式を取得して一連の実行プランを生成するクエリ オプティマイザーと呼ばれるものを使用します。

次に、最適な実行計画がデータベースで実行されます。それが結果セットを生成するものです。

したがって、オープン ソースの RDBMS 実装を使用して、別のクエリ言語を受け入れるように変更したい場合、選択したクエリ言語を実行計画に変換するだけで済みます。

やろうとしていることが簡単だと言っているわけではありません。独自の RDBMS を作成しなくても、それが可能になるはずです。クエリ言語のレクサーとインタープリターを作成し、解釈されたクエリ式をデータベース エンジンのオプティマイザーに転送して、実行プランを生成し、最も効率的なプランを実行できるようにする必要があります。

コンパクトなオープン ソースのリレーショナル データベース エンジンとしてのSQLiteを見てみましょう。

于 2011-11-02T15:31:51.783 に答える
3

Dave Voorhis の Rel は、あなたが作りたいと思われるものをすでに実現しています。

http://dbappbuilder.sourceforge.net/Rel.php

もちろん、自分で構築しようとすることが明確な目的でない限り...

于 2011-11-02T15:41:59.110 に答える
0

チュートリアル D のフロント エンドはクエリ言語に依存しないことに注意してください ;)

私もRelに一票です。

Hugh Darwen はTTM (チュートリアル D が実装されている D 言語の仕様) に関連するプロジェクトのリストを管理しています。

于 2011-11-02T16:15:50.350 に答える