データのクエリと管理
どのクエリ言語が Mendix サポート?
Mendix 取得するデータを指定するには、いくつかの方法があります。
- Mendix Studio Proでは、式エディタを使用してクエリのニーズを視覚的に指定できます。
- 特定のオブジェクトまたは関連するオブジェクトのセットを取得するには、XPath式を使用できます。
- 複数のエンティティを集約して単一の結果セットに結合することが重要なレポートのニーズの場合、 Mendix OQLクエリを提供する
- アプリケーションデータベースでSQLクエリを使用する場合は、Java APIが利用可能です。
- 他のアプリケーションやデータ分析ツールとのデータ共有には、 Mendix ドメインモデル内のエンティティに対するODataのサポートをすぐに提供します
詳細については、以下のセクションをご覧ください。
XPath
XPath は、特定のオブジェクトを取得できる使いやすいクエリ言語です。これを使用すると、ページに表示または編集するオブジェクトを取得したり、マイクロフローを通じてこれらのオブジェクトを変更したりできます。
XPath を使用すると、関心のあるオブジェクトをフィルター処理する式を定義し、関連付けを使用して関連するオブジェクトを取得およびフィルター処理できます。
XPath は、エンティティに定義したすべてのアクセス ルールが自動的に適用されるようにします。
詳細については、 XPath 会場は Mendix Studio Pro ガイド.
OQL
この Mendix オブジェクト クエリ言語 (OQL) は、SQL に基づくリレーショナル クエリ言語です。SQL と比較した OQL の主な利点は、OQL では実際のデータベース テーブル名ではなく、モデルで使用されるエンティティ名と関連付け名が使用されることです。
OQL では、定義済みの関係 (関連付け) を使用して、どの列を結合するかを計算しなくても、オブジェクトを簡単に結合できます。これらの違いにもかかわらず、多くの SQL キーワードは OQL でも機能します。
OQL は主に、特定の属性をグループ化しながら集計関数が必要なレポート作成に使用されます。OQL を使用するもう 1 つの理由は、手動で定義する必要があるカスタム セキュリティ式を定義することです。場合によっては、XPath の既成のセキュリティを使用するよりも、OQL を使用して自分でセキュリティを処理する方がクエリが高速化されることがあります。
詳細については、 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はデータのクエリと操作の両方を提供する幅広い標準ですが、 Mendix 現在はクエリ機能のみを提供しています。現在、ODataは Mendix 読み取り専用の分析用途を対象としています Mendix サードパーティのアプリケーションによるデータ。
ODataの使用に関する詳細については、 Mendix、を参照してください。 データを洞察力に変える Mendix ODataサポート および Rを使用してデータから洞察を得る Mendix アプリケーション ブログ投稿。
クエリを最適化するにはどうすればよいですか?
この Mendix プラットフォームは、すぐに使える多くの最適化機能を提供します。たとえば、XPathを介してページのデータを取得する場合、 Mendix は、ページで使用されるすべての関連情報を一度に自動的に取得します。これには、スキーマと呼ばれる概念が使用されます。スキーマは、データ取得コンポーネントに、データベースから特定のオブジェクト セットを取得するだけでなく、結果に特定の関連エンティティも含めるように指示します。
最適化されたクエリに加えて、 Mendix また、クエリの必要性を回避するために最適化も行われます。これは、たとえば、オブジェクトがキャッシュされ、複数のページで再利用されるウェブクライアントで行われます。 Mendix ランタイムはページ構造の知識を使用して、オブジェクトをランタイムからクライアントに送信する必要があるかどうかを判断します。
これらのすぐに使用できる最適化に加えて、クエリを最適化するために実行できる手順がいくつかあります。
- 必要なものだけを取得する必要のない属性やオブジェクトをクエリに含めないようにしてください。
- あなたが持っていることを確認してください インデックス 以下について:
- 定期的に 検索 またはフィルタリング
- 使用される列 並べ替え
場合によっては、特にオブジェクトが多数ある場合は、データベース固有のインデックスを使用すると便利です。これらは、前述のように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
.