データのクエリと管理
どのクエリ言語が Mendix サポート?
Mendix 取得するデータを指定するには、いくつかの方法があります。
- Mendix Studio Proでは、式エディタを使用してクエリのニーズを視覚的に指定できます。
- 特定のオブジェクトまたは関連するオブジェクトのセットを取得するには、XPath式を使用できます。
- 複数のエンティティを集約して単一の結果セットに結合することが重要なレポートのニーズの場合、 Mendix OQLクエリを提供する
- アプリケーションデータベースでSQLクエリを使用する場合は、Java APIが利用可能です。
- 他のアプリケーションやデータ分析ツールとのデータ共有には、 Mendix ドメインモデル内のエンティティに対するODataのサポートをすぐに提供します
詳細については、以下のセクションをご覧ください。
XPath
XPath は、特定のオブジェクトを取得できる使いやすいクエリ言語です。これを使用すると、ページに表示または編集するオブジェクトを取得したり、マイクロフローを通じてこれらのオブジェクトを変更したりできます。
XPathでは、関心のあるオブジェクトをフィルタリングするための式を定義し、関連付けを使用して関連オブジェクトを取得およびフィルタリングできます。XPathフィルターを自分で記述して完全に制御することも、ビジュアルXPathビルダーを使用してXPathフィルターの作成プロセスを簡素化することもできます。
XPath は、エンティティに定義したすべてのアクセス ルールが自動的に適用されるようにします。
詳細については、 XPath に選出しました。 Mendix Studio Pro ガイド.

OQL
その Mendix オブジェクト クエリ言語 (OQL) は、SQL に基づくリレーショナル クエリ言語です。SQL と比較した OQL の主な利点は、OQL では実際のデータベース テーブル名ではなく、モデルで使用されるエンティティ名と関連付け名が使用されることです。
ビューエンティティは、永続エンティティを使用できる場所であればどこでも使用できる名前付きOQLクエリです。つまり、OQLクエリをウィジェットのソースとして簡単に使用できます。ウィジェットのすべてのデフォルト機能(データグリッドの場合のフィルタリング、並べ替え、ページネーションなど)は、ビューエンティティで使用されるOQLクエリに自動的に適用されます。これにより、ページ、チャート、APIのソースとしてOQLクエリを簡単に使用できるようになります。ビューエンティティで使用されるOQLクエリは、Studio Proでテストして開発をスピードアップできます。
OQL では、定義済みの関係 (関連付け) を使用して、どの列を結合するかを計算しなくても、オブジェクトを簡単に結合できます。これらの違いにもかかわらず、多くの SQL キーワードは OQL でも機能します。
OQLは、特定の属性をグループ化しながら集計関数を必要とするレポート作成に使用できます。また、ページやグラフ用のより複雑なデータ準備にも使用されます。OQLは、公開するAPI(Rest APIとOData Rest APIの両方)を基盤となるドメインモデルから分離するのにも役立ちます。OQLのもう1つの一般的なユースケースは、カスタムセキュリティ式の定義です。これは手動で定義する必要があります。
詳細については、 OQL に選出しました。 Mendix Studio Pro ガイド.

SQL
すべてのアプリケーションデータはリレーションデータベースに保存されます。 Mendix クラウドこれは PostgreSQL ですが、展開環境に応じて他のオプションもあります。
Mendix 基盤となるリレーションデータベースと直接やり取りするためのJava APIを提供します。 Mendix Java API を使用すると、Java JDBC を使用して SQL クエリを実行し、ストアド プロシージャを実行できます。これにより、データを使用するための非常に強力な方法が提供されますが、リレーショナル データベース システムと SQL を理解している必要があります。データベース ベンダー固有の拡張機能を使用することもできますが、これにより、アプリケーションの他のデータベースへの移植性が制限されます。
JDBC APIへのアクセスの詳細については、 Mendixを参照してください データストレージ.executeWithConnection.
Oデータ
ODataは、RESTプロトコルの上に汎用的なデータアクセスとクエリインターフェースを提供します。これにより、さまざまなサードパーティツールが制御された方法でデータにアクセスできるようになります。これらのツールには、LINQPadなどの基本的なクエリツール、MS-Excelなどのスプレッドシート、PowerBIやRなどのビジネスインテリジェンスおよび分析ツールが含まれます。ODataを介してアクセスを提供することで、データに定義され、 Mendix ランタイムが確実に適用されます。つまり、OData は外部の関係者にデータへのアクセスを提供するための安全でセキュアな手段です。
OData APIは、 Mendix データの読み取りと更新の両方をサポートできます。主要なREST操作であるGET、PUT、POST、DELETEがサポートされています。これらの操作を処理するカスタムロジックを提供することで、アプリケーションデータベースでデータが変更される前に、正しい検証を確実に行うことができます。
ユーザーが定義済みのクエリを通じてデータにアクセスできるようにしたい場合は、ビューエンティティをOData REST APIとして公開することもできます。この大きなメリットの一つは、OData REST APIを基盤となるデータモデルから分離できることです。これにより、データベースを進化させながら、OData APIの安定性を確保できます。
OData API では、API ユーザーが事前定義されたロジックを通じてデータにアクセスできるようにする場合、マイクロフロー ロジックを OData アクションとして公開することもできます。

ODataの使用に関する詳細については、 Mendix、を参照してください。 データを洞察力に変える Mendix ODataサポート の三脚と Rを使用してデータから洞察を得る Mendix 用途 ブログ投稿。
クエリを最適化するにはどうすればよいですか?
その Mendix プラットフォームは、すぐに使える多くの最適化機能を提供します。たとえば、XPathを介してページのデータを取得する場合、 Mendix は、ページで使用されるすべての関連情報を一度に自動的に取得します。これには、スキーマと呼ばれる概念が使用されます。スキーマは、データ取得コンポーネントに、データベースから特定のオブジェクト セットを取得するだけでなく、結果に特定の関連エンティティも含めるように指示します。
最適化されたクエリに加えて、 Mendix また、クエリの必要性を回避するために最適化も行われます。これは、たとえば、オブジェクトがキャッシュされ、複数のページで再利用されるウェブクライアントで行われます。 Mendix ランタイムはページ構造の知識を使用して、オブジェクトをランタイムからクライアントに送信する必要があるかどうかを判断します。
より詳細な制御が必要な場合は、ビューエンティティとOQLクエリを使用して、特定の最適化されたクエリを提供できます。ビューエンティティは多くの状況で永続エンティティの代替として使用できるため、特定のページやウィジェット用のビューエンティティを作成し、永続エンティティをビューエンティティに置き換えることが容易です。ビューエンティティは、複数のテーブルからデータを抽出し、データベースオプティマイザーを活用してこれらのクエリを最適化したい場合に特に便利です。
これらのすぐに使用できる最適化に加えて、クエリを最適化するために実行できる手順がいくつかあります。
- 必要なものだけを取得する必要のない属性やオブジェクトをクエリに含めないようにしてください。
- あなたが持っていることを確認してください インデックス 以下について:
- 定期的に 検索 またはフィルタリング
- 使用される列 並べ替え
場合によっては、特にオブジェクトが多数ある場合は、データベース固有のインデックスを使用すると便利です。これらは、前述のようにJDBC APIを使用して作成できます。 SQL.
既存のデータベースからデータを移行するにはどうすればよいですか?
古い非Mendix 新しいアプリケーション Mendix アプリケーション。 Mendix アプリでは、以下に説明するオプションがあります。
データベースレプリケーションモジュール
その データベースレプリケーション モジュールは以下から入手可能 Mendix マーケットプレイスでは、さまざまなタイプのデータベースに接続できます。既存のデータベースに存在するデータ構造が表示されます。次に、Web ページを通じて、移行するデータを定義できます。 Mendix データベース。既存の列のデータをエンティティ属性にマップする方法も定義できます。
データベースコネクタ
その データベースコネクタ モジュールは、JDBCをサポートする任意のデータベースでクエリを実行するためのマイクロフローアクティビティを提供します。つまり、既存のデータベースから必要なデータと、そのデータを新しいデータベースに変換する方法を定義するマイクロフローを作成できます。 Mendix アプリケーション。
既存のデータベースからアプリデータベースを初期化する
展開する場合 Mendix アプリケーションを初めて起動する場合は、既存のデータで初期化するオプションがあります。 Mendix この機能の主な目的は、ある環境から別の環境への移行を可能にすることです(たとえば、 Mendix クラウドからプライベートクラウドへの移行)非クラウドからプライベートクラウドへの移行が完了したら、Mendix データを Mendix データを使用して新しい Mendix アプリ。これは、同じベンダーのデータベース間で機能し、また、あるデータベース ベンダーから別のデータベース ベンダーに移動する場合にも機能します。つまり、ワークステーションで実行されている PostgreSQL データベースのデータを使用して、Azure SQL データベースを初期化できます。
詳細については、を参照してください。 移行方法 Mendix データベース の三脚と バックアップ に選出しました。 Mendix ドキュメンテーション。
既存のSQLデータベースを Mendix?
外部データベースコネクタを使用すると、使用している任意のデータベースでSQLアクションを実行できます。既存のSQLデータベースの使用の詳細については、 Mendixのセクションを参照してください。 どのように Mendix 外部 SQL データベースへの直接アクセスをサポートしますか? in 外部データ.
APIの機能 Mendix データ保存動作の拡張を提案しますか?
その Mendix ランタイムは、データ ストレージ動作の拡張を可能にする Java API を提供します。 Mendix 通常のマイクロフローアクティビティを通じてこれらの拡張機能を提供できるようにすることで、チームの誰もがこれらの拡張機能を使用できるようになります。 Mendixのセクションを参照してください。 どのようなAPIが Mendix さらす? in オープン性(API と SDK).
データ ストレージの拡張性に関しては、主要な Java API は次の機能を提供します。
- XPath – APIを利用する XPathクエリを使用してデータベースから取得する
- OQL – APIを利用する OQLクエリを使用してデータベースからデータを取得する
- SQL – 基盤となるAPIを直接使用する Java JDBC 接続 アプリケーションデータベースで必要なSQLを実行する
- エンティティイベントハンドラー – 登録するためのAPI エンティティイベントリスナー すべてのエンティティに対して、監査情報を抽出したり、すべてのデータ変更を外部システムにリアルタイムでエクスポートしたりするために使用できます。
接続プールを制御するにはどうすればいいですか?
カスタム設定を使用して、実行時ごとにデータベースへの同時接続数を設定できます。 ConnectionPoolingMaxActive.