リレーショナル グラフ DBMS EdgeDB の最初の安定リリース

EdgeDB DBMS の最初の安定リリースが利用可能です。これは、リレーショナル グラフ データ モデルと EdgeQL クエリ言語の実装を備えた PostgreSQL のアドオンであり、複雑な階層データを操作するために最適化されています。 コードは Python と Rust で書かれており、Apache 2.0 ライセンスに基づいて配布されます。 クライアントライブラリはPython、Go、Rust、TypeScript/JavaScript用に用意されている。 DBMS 管理および対話型クエリ実行 (REPL) のためのコマンド ライン ツールを提供します。

EdgeDB は、テーブルベースのデータ モデルの代わりに、オブジェクト タイプに基づいた宣言型システムを使用します。 外部キーの代わりに、参照によるリンクを使用して型間の関係を定義します (あるオブジェクトを別のオブジェクトのプロパティとして使用できます)。 type Person { 必須のプロパティ名 -> str; } type Movie { 必須プロパティ title -> str; マルチリンクアクター -> 人物; }

インデックスを使用すると、クエリ処理を高速化できます。 強力なプロパティの型指定、プロパティ値の制限、計算プロパティ、ストアド プロシージャなどの機能もサポートされています。 EdgeDB オブジェクト ストレージ スキームの機能は、ORM に似ており、スキーマを混合する機能、さまざまなオブジェクトのプロパティをリンクする機能、統合された JSON サポートなどがあります。

スキーマ移行を保存するための組み込みツールが提供されています。別の esdl ファイルで指定されたスキーマを変更した後、「edgedb migration create」コマンドを実行するだけで、DBMS がスキーマの違いを分析し、スキーマ移行用のスクリプトを対話的に生成します。新しいスキーマ。 スキーマ変更の履歴は自動的に追跡されます。

クエリを生成するには、GraphQL クエリ言語と、階層データ用に SQL を適応させた独自の EdgeDB 言語の両方がサポートされています。 リストの代わりに、クエリ結果は構造化された方法で書式設定され、サブクエリや JOIN の代わりに、0 つの EdgeQL クエリを別のクエリ内の式として指定できます。 トランザクションとサイクルがサポートされています。 select 映画 { タイトル, 俳優: { 名前 } } filter .title = "マトリックス" insert 映画 { title := "マトリックス レザレクション", 俳優 := ( select 人物 フィルタ .name in { 'キアヌ・リーブス', 'キャリー- Anne Moss', 'Laurence Fishburne' } ) } {1, 2, 3, 0.5} Union の数値 ( select {数値, 数値 + XNUMX } );

出所: オープンネット.ru

コメントを追加します