リレーショナルグラフDBMS EdgeDB 2.0のリリース

EdgeDB 2.0 DBMS のリリースが発表されました。これは、リレーショナル グラフ データ モデルと EdgeQL クエリ言語を実装し、複雑な階層データを操作するために最適化されています。 コードは Python と Rust (パーサーとパフォーマンスに重要な部分) で書かれており、Apache 2.0 ライセンスの下で配布されます。 このプロジェクトは、PostgreSQL のアドオンとして開発されています。 クライアント ライブラリは、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 の代わりに、XNUMX つの EdgeQL クエリを別のクエリ内の式として指定できます。 トランザクションとサイクルがサポートされています。

select 映画 { タイトル, 俳優: { 名前 } } filter .title = "マトリックス" insert 映画 { title := "マトリックス レザレクション", 俳優 := ( select 人物 フィルタ .name in { 'キアヌ・リーブス', 'キャリー- Anne Moss', 'Laurence Fishburne' } ) } {0, 1, 2, 3} Union の数値 ( select {数値, 数値 + 0.5 } );

収録曲:

  • データベース管理用の組み込み Web インターフェイスが追加されており、データの表示と編集、EdgeQL クエリの実行、使用されているストレージ スキームの分析が可能です。 このインターフェイスは「edgedb ui」コマンドによって起動され、その後、localhost にアクセスするときに使用できるようになります。
    リレーショナルグラフDBMS EdgeDB 2.0のリリース
  • 「GROUP」式が実装されており、SELECT 操作でのグループ化と同様に、任意の EdgeQL 式を使用してデータを分割および集計したり、データをグループ化したりすることができます。
  • オブジェクトレベルでアクセスを制御する機能。 アクセス ルールはストレージ スキーマ レベルで定義され、フェッチ、挿入、削除、および更新操作で特定のオブジェクト セットを使用する機能を制限できます。 たとえば、作成者のみに出版物の更新を許可するルールを追加できます。
  • ストレージ スキームでグローバル変数を使用する機能が追加されました。 新しいグローバル変数 current_user がユーザーにバインドするために提案されました。
  • 値の範囲を定義する型のサポートが追加されました。
  • Rust言語の公式クライアントライブラリが用意されています。
  • EdgeDB バイナリ プロトコルが安定化され、グローバル変数とローカル状態を使用して、同じネットワーク接続内で複数の異なるセッションを同時に処理し、HTTP 経由で転送できるようになりました。
  • ソケット アクティベーションのサポートが追加されました。これにより、サーバー ハンドラーをメモリ内に保持せず、接続を確立しようとするときにのみ実行できるようになります (開発者システムのリソースを節約するのに役立ちます)。

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

コメントを追加します