XMLDBロードマップ (Dev docs)

提供:MoodleDocs
移動先:案内検索

XMLDBドキュメンテーション > XMLDBロードマップ


新しい RDBMS への DB サポートの拡張は、現在のコードの多くの変更と、いくつかの新しいライブラリ/アーティファクトの作成を意味します。この章では、このプロセス全体の主要なポイントを関連付け、簡単に説明します。ポイントには番号が振られており、この順番で実行する必要があることに注意してください(並行作業が可能な場合は、その旨が記載されています)。

  1. 分割 datalib.php - 完了!:現在、このようなファイルには、SQL DDL (table_column()...), SQL DML (select, insert...) と、ADOdbとは直接関係のない関数 (category_parent_visible, print_object()...) が含まれています。新しいRDBMSに対応した機能(主にDDL)が増えてきているので、ファイルを3つに分割するのもいいかもしれません。1つはDDL (creation/alter/drop... - ddllib.phpと呼ぶことができ、install/upgrade/migration時のみ使用) を処理するため、もう1つはDML (現在のすべてのinsert, select, update... 関数が入る場所 - dmllib.php)、その他、すべてのADOdb関連ではない関数を格納するため (あるいは、それらをそれぞれのライブラリに移動させる - course/lib.php, user/lib.php... など) です。

  2. DML 関数の変更 - 完了!: LIMIT句のサポート (OracleとMSSQLの両方でエミュレートされる)、insert_record() の変更、CLOB/BLOB (大きなテキスト/バイナリオブジェクト) の処理など、この機能すべてにおいて他のRDBMSのサポートを拡張するためにいくつかの変更を実行しなければなりません。このすべての変更は datalib.php で行われますが、Moodle 全体のコードは正しい関数呼び出しを行うよう修正されなければなりません。このポイントは ポイント1が終了した後 に実行する必要があります。これは本当に大きなポイントです!

  3. XML構造を定義し、それを処理する。 - 完了!: DBの定義に使用される新しいXML構造 (インストール時に使用) は、必要なだけ複雑で、あらゆるRDBMSに対して使用可能なDDL文に変換するために必要なすべての情報を定義する必要があります。バリデーションとある種のエディション/インバースエンジニアリングが存在することになります。このポイントは ポイント 1 および 2と並行して 実施することが可能です。

  4. 新しい DDL 関数の作成 - 完了!: MoodleのあらゆるDBコンポーネントをインストール/アップグレードできるようにするため、私たちはCREATE/DROP/ALTERテーブル、インデックス、制約、シーケンス、フィールドのための新しい関数を多数サポートする必要があります。これらの関数はすべて相互互換性があり、各RDBMSの適切なSQLを生成する必要があります。これらは新しい ddllib.php (ポイント 1) に存在し、インストール/アップグレードのプロセスのみに含まれるようになります。この作業は、ポイント3が終了した後 に行う必要があります。

  5. インストール/アップグレードプロセスの修正 - 完了!: 古い方法との互換性はあり、どんなモジュール/ブロック/フォーマット/問題... もその方法を使うことができますが、1.7では (公式ディストロ全体に対して) 新しい方法を使うべきです。これはバージョン番号 (現在のものと同様) に基づき、1つの新しいXMLファイル (現在の *.sql ファイルを置き換える) と1つの新しいupgrade.phpファイル (現在の *php ファイルを置き換える) に定義された任意のアクションを実行します。MySQL と PostgreSQL のインストールは、両方のアップグレードシステムを動かすことができますが (最初に古いもの、次に新しいもの)、新しい RDBMS は新しいものでしか動作しません。いずれにせよ、古い方は非推奨となり、2.0 では姿を消すことになります。このポイントは ポイント4が終了した後 に実施する必要があります。

  6. すべてを文書化する - 進行中の作業: 上記のすべてのライブラリと新しいインストール/アップグレードシステムは、開発者が古いアプローチから簡単に移行できるように、完全に文書化されなければなりません。フィールドタイプ、禁止語などのようなものは、すべてのシステムを迅速に採用し、より良く使用できるようにするために、十分に定義されていなければなりません。このポイントは、ポイント1~5と並行して行うことができます