DBMS SQLite 3.42 および DuckDB 0.8.0 のリリース。 SQLite のストアド プロシージャの実装を備えた CG/SQL

プラグイン ライブラリとして設計された軽量 DBMS である SQLite 3.42 のリリースが公開されました。 SQLite コードはパブリック ドメインで配布されています。 目的を問わず、制限なく無料で使用できます。 SQLite 開発者に対する財政的サポートは、Adobe、Oracle、Mozilla、Bentley、Bloomberg などの企業が含まれる特別に設立されたコンソーシアムによって提供されます。

主な変更点:

  • FTS5 フルテキスト インデックスの場合、削除後にすべての残留データを完全にクリーンアップする secure-delete コマンドが実装されています。
  • JSON 形式のデータを処理する関数が JSON5 拡張機能をサポートするようになりました。
  • クエリプランナーが改善されました。 ビュー数の最適化はデフォルトで有効になっています。 サブクエリ内の未使用列の処理を排除しました。 プッシュダウン最適化の実装が改善されました。
  • CLI に「--unsafe-testing」オプションを追加し、「.testctrl」などのいくつかの危険なコマンドをテストで使用できるようにしました。 セーフ モード (「--safe」) では、「.log on」および「.log off」コマンドが許可されます。 オプション処理が無効になる引数の「—」区切り文字のサポートが追加されました。 無限大および NaN 値に関連付けられた「:inf」および「:nan」パラメータが追加されました。
  • アプリケーション定義の SQL 関数の名前は、CROSS、FULL、INNER、LEFT、NATURAL、OUTER、および RIGHT キーワードと交差することができます。
  • PRAGMA integrity_check 機能を拡張しました。 NOT NULL 条件を持つ列に NaN 値を指定するためのチェックを追加しました。 エラーメッセージの情報内容が改善されました。
  • セッションを追加すると、ROWID のないテーブルからの変更をインターセプトできます。
  • 「subsec」修飾子が、秒の小数部を使用する時刻と日付を操作する関数に追加されました。
  • 配列と JSON オブジェクトのデフォルトの再帰の深さが 2000 から 1000 に減少しました。

さらに、DuckDB 0.8.0 DBMS リリースが形成され、SQLite バリアントを開発し、保存されたデータの重要な部分をカバーする分析クエリを実行するための機能と最適化が強化されました (たとえば、テーブルの内容全体を集計したり、複数のテーブルをマージしたりする)。大きなテーブル。 SQL 言語の拡張方言が提供されており、これには、非常に複雑で長時間実行されるクエリを処理するための追加機能のほか、複雑な型 (配列、構造体、共用体) のサポート、複数のクエリの同時実行、クエリからの直接の実行が含まれます。 CSV、JSON、および Parquet 形式のファイル。 PostgreSQL DBMSからのインポートが可能です。

SQLite のシェル コードに加えて、プロジェクトでは、別のライブラリに移動された PostgreSQL のパーサー、MonetDB の Date Math コンポーネント、独自のウィンドウ関数の実装 (セグメント ツリー集約アルゴリズムに基づく)、正規表現プロセッサを使用しています。 RE2 ライブラリ、独自のクエリ オプティマイザー、タスクの同時実行 (マルチバージョン同時実行制御) の MVCC 制御メカニズム、およびハイパー パイプライン クエリ実行アルゴリズムに基づくベクトル化されたクエリ実行エンジンに基づいており、大規模なセットの処理を可能にします。 XNUMX 回の操作で値を一度に取得できます。 プロジェクト コードは MIT ライセンスに基づいて配布されます。

DuckDB の新しいバージョンでは:

  • 行を列に、またはその逆に変換するための新しい式「PIVOT」および「UNPIVOT」を追加しました。
  • データのインポートおよびエクスポート時の並列処理が向上しました。 デフォルトでは、Parquet、CSV、および JSON 形式を使用する場合、CSV 形式のファイルから複数のストリームへの読み取りとマルチスレッドの書き込みが実装されます。
  • ファイル パスを定義するときにディレクトリを再帰的に反復するための「**」演算子を追加しました (例: FROM "'data/glob/crawl/stackoverflow/**/*.csv';")。
  • 時系列 (指定された時間間隔でのパラメーター値のスライス) 形式のデータのマージ操作 (JOIN) のサポートが追加されました。レコードをマージする基準は、正確ではなく、値のおおよその一致です。フィールドに時刻を含めます (たとえば、時刻の差が 1 分以内のレコードを結合できます)。
  • データベース メタデータの遅延読み込みが実装され、DBMS の起動を数十倍高速化することが可能になりました。
  • Python でのカスタム関数の接続のサポートが追加されました。
  • Apache Arrow を使用したデータ転送のための ADBC (Arrow Database Connectivity) API のサポートが追加されました。
  • Swift コードと統合するためのバインディングを実装しました。
  • 除算 (「/」) 演算子の動作が変更され、デフォルトで整数演算ではなく浮動小数点計算が実行されるようになりました。 整数の除算用に新しい演算子「//」が提案されました。 「SET integer_division=true;」を設定することで以前の動作に戻すことができます。
  • ソート時に NULL レコードを考慮する方法が「NULLS FIRST」から「NULLS LAST」に変更されました。 NULL 値はリストの先頭ではなく末尾に表示されるようになりました。 「SETdefault_null_order='nulls_first';」を設定することで、以前の動作を復元できます。

さらに、SQLite でストアド プロシージャを使用するためのコード ジェネレーターを提供する、Facebook によって開発された CG/SQL プロジェクトも注目に値します。 CG/SQL を使用すると、T-SQL の特別な方言 (Transact-SQL) でストアド プロシージャを設計できます。これにより、標準 C ライブラリの関数を呼び出して SQLite のデータにアクセスできるようになります。 生成されたストアド プロシージャは、SQLite C API を使用して指定されたアクションを実行し、複雑なクエリを処理する C コードにコンパイルされます。 コンパイルされたストアド プロシージャは、C、Java、および Objective-C プログラムにリンクできます。 プロジェクト コードは C で書かれており、MIT ライセンスに基づいて配布されます。

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

コメントを追加します