データストレージ
データの定義方法 Mendix?
In Mendixでは、ドメイン モデルを使用してデータのニーズを定義します。アプリ プロジェクト内のすべてのモジュールには、1 つ以上のエンティティで構成される独自のドメイン モデルを設定できます。これらのエンティティは永続化可能または非永続化可能であり、1 つ以上のオブジェクトが含まれます。

永続オブジェクトはデータベースに保存され、 Mendix エンティティをデータベースに保存するためのテーブルを自動的に作成します。オブジェクトごとに 1 つのレコードがテーブルに挿入されます。非永続的なエンティティは、ユーザー セッションの期間中のみメモリ内に存在します。
すべてのエンティティに対して、属性と、属性が保持するデータの種類を定義できます。また、セキュリティ ルール、誰がどのデータを表示できるか、検証ルールも定義できます。検証ルールは、属性に許可される値を指定します。
アプリケーションを起動または再デプロイすると、 Mendix データを保存するためのデータベース テーブルが自動的に作成されます。再デプロイすると、アプリのすべてのテーブルが必要に応じて自動的に変更され、データが新しいテーブル構造に移行されます。
永続可能オブジェクトと非永続的オブジェクトの違いは何ですか?
永続可能オブジェクトはデータベースに保存されるため、セッション間やユーザー間でデータを使用できます。ただし、非永続エンティティはユーザー セッションの期間中のみメモリ内に保持されるため、このようなエンティティはユーザー間またはユーザー セッション間で共有できません。
非永続エンティティは、すべての中間結果を保存したくない計算や、さまざまな統合手段を通じて外部システムから取得されたデータを一時的に保存する場合に主に使用されます。
オブジェクトリレーショナルマッピングはどのように機能するのか Mendix?
Mendix オブジェクトリレーショナルマッピング(ORM)は、モデル化されたデータのニーズから、最も一般的なリレーショナルデータベースシステムでの技術的な保存と検索まで、データベース管理のあらゆる側面を処理します。 Mendix ORM は、テーブルの作成や変更方法、データへのアクセスや更新方法など、データベースの技術的な側面についてユーザーが考える必要性をなくします。
データ定義言語
Mendix ORM は、アプリケーションの展開時にデータ定義言語 (DDL) フェーズから開始され、ドメイン モデルでビジネス データ要件をモデル化すると、その要件に基づいて正しいデータベース構造が自動的に作成されます。
作成されるデータベース構造には、テーブル、データ型、関連付け、関連する制約、さらには継承が含まれます。
アプリケーションに変更を加えるたびに、基礎となるデータベース テーブルがそれに応じて自動的に更新されることに注意してください。データも移行されます。
テーブル作成とデータ移行の両方を処理することで、 Mendix プラットフォームは、アプリを迅速に提供するのに役立ちます。データベーススキーマを自分で管理する必要はありません。同様に重要なのは、ほとんどの移行(たとえば、属性名の変更や型の変更)では、 Mendix データ移行も自動化します。
プライベートクラウド環境やオンプレミスで展開する場合、データベースを自分で管理するオプションがあります。この場合、 Mendix これを開始点として、データベース管理者に渡して、データベースが要求どおりに作成されるようにします。
データ移行フェーズでは、1つのデータから別のデータへ移行することもできます。 Mendix 異なるデータベースベンダー間でアプリを移行できます。これは、オンプレミスからクラウドへ、またはあるクラウドから別のクラウドへ移行する場合に役立ちます。詳細については、 移行方法 Mendix データベース に選出しました。 Mendix Studio Proの使い方.

データ検索
Mendix 取得するデータを指定するには、いくつかの方法があります。
- Mendix Studio Proは、クエリのニーズを視覚的に指定する方法を提供します
- 特定のオブジェクトまたは関連するオブジェクトのセットを取得するには、XPath式を使用できます。
- レポートのニーズ(複数のエンティティを集約して単一の結果セットに結合することが重要な場合)では、 Mendix OQLクエリを提供する
内部的には、すべての取得は最初に XPath に変換され、次に OQL に変換され、最後にデータベース固有の SQL ステートメントに変換されます。
データを取得する際、 Mendix ORM は次の手順を実行します。
- XPath クエリを OQL クエリに変換します。
- 追加の取得要件が含まれます (たとえば、ページでも必要な関連オブジェクトなど)。
- エンティティに定義されているセキュリティ ルールを適用します。
- エンティティを技術データベース テーブルにマップします。
- エンティティ属性をテーブル列にマップします。
- 必要な OQL ステートメントを最適化します。
- OQL ステートメントをデータベース固有の SQL ステートメントに変換します。
- データベースからレコードを取得します。
あなたが見ることができるように、 Mendix ORMは、決して簡単ではない多くのパフォーマンス最適化を適用します。アプリケーションモデルのため、 Mendix プラットフォームは、関連するデータベース レコードを一度にクエリする方が効率的であると判断できます。
データ検索
Mendix 取得するデータを指定するには、いくつかの方法があります。
- ほとんどの場合、 Mendix プラットフォームは、ページ内で使用されるエンティティに基づいて適切なクエリを決定します。例えば、並べ替え、フィルタリング、ページネーションなどが自動的に適用されます。
- Mendix Studio Pro では、クエリのニーズを視覚的に指定する方法が提供されています。たとえば、エンティティを使用する場合、フィルターを使用して、含めるデータを指定できます。
- 特定のオブジェクトまたは関連するオブジェクトのセットを取得するには、XPath 式を使用できます。
- より複雑なクエリニーズ(例えば、集計や結合など)は、ビューエンティティを通じて処理されます。ビューエンティティは、ページ、ロジック、API内で通常のエンティティと同じように使用できますが、クエリを定義して、提供する必要があるデータを指定できます。
- レポートのニーズ(複数のエンティティを集約して単一の結果セットに結合することが重要な場合)では、 Mendix OQL クエリとビュー エンティティを提供します。
内部的には、すべての取得は最初に XPath に変換され、次に OQL に変換され、最後にデータベース固有の SQL ステートメントに変換されます。
データを取得する際、 Mendix ORM は次の手順を実行します。
- XPath クエリを OQL クエリに変換します。
- 追加の取得要件を含めます (たとえば、ページにも必要な関連オブジェクトなど)。
- エンティティに定義されたセキュリティ ルールを適用します。
- エンティティを技術データベース テーブルにマップします。
- エンティティ属性をテーブル列にマップします。
- 必要な OQL ステートメントを最適化します。
- OQL ステートメントをデータベース固有の SQL ステートメントに変換します。
- データベースからレコードを取得します。
あなたが見ることができるように、 Mendix ORMは、決して簡単ではない多くのパフォーマンス最適化を適用します。アプリケーションモデルのため、 Mendix プラットフォームは、関連するデータベース レコードを一度にクエリする方が効率的であると判断できます。
複雑なデータ検索を簡素化するには Mendix?
In Mendixビューエンティティを介したデータ取得はコンポーザブルです。つまり、複数のシンプルなクエリを組み合わせることで、複雑なクエリを構築できます。これは、複数のマイクロフローを組み合わせて大きなマイクロフローを構築することで複雑なロジックを構築したり、複数のスニペットを組み合わせて複雑なページを構築したりするのと似ています。
ビューエンティティは、永続エンティティと同様に、他のビューエンティティからデータを取得できます。例えば、あるビューエンティティは現在のテナントのすべての注文を返し、別のビューエンティティは返されたオブジェクトを月ごとまたは四半期ごとに集計することができます。これにより、小さな構成要素でクエリを作成できるだけでなく、再利用性も向上します。
ビューエンティティを、例えばページ上のデータグリッドのソースとして使用する場合、 Mendix プラットフォームは、すべての個別のビュー エンティティを単一のデータベース クエリに結合するため、データベースは利用可能なすべての統計とインデックスを使用して実行を最適化できます。
ストアドプロシージャを使用するには Mendix?
ストアドプロシージャの使用 Mendix データがどこに保存されているかによって異なります。
データベース内のストアドプロシージャを使用する場合は、 Mendix アプリケーションでは、 Mendix Java API。詳細については、 Java API の使い方 に選出しました。 Mendix Studio Proの使い方.SQL文の実行の詳細については、 Mendix JDBCを使用したアプリデータベースについては、 データストレージ実行接続.
外部データベースを使用している場合は、 外部データベースコネクタ.
ストアドプロシージャの呼び出しは、既存のレガシーデータベース上に構築する場合に最も重要です。この分野では、多くのOracleリレーショナルデータベース管理システム(RDBMS)があります。 データベースコネクタ で利用可能 Mendix Marketplace は、PL/SQL ストアド プロシージャとパッケージ、参照カーソル、ユーザー定義型を使用して構築されたテーブル API など、従来の Oracle データベースでよく見られる機能のサポートを提供します。
どのように Mendix トランザクション管理を処理しますか?
すべてのリクエスト Mendix ランタイムは自動的に新しいトランザクションを開始します。リクエストが正常に完了すると、トランザクションはすべての関連データとともにコミットされます。エラーが発生した場合、すべてのデータ変更はデフォルトでロールバックされます。このデフォルトの動作を変更するには、カスタム エラー処理ロジックを提供するオプションがあります。
次のマイクロフローでは、カスタムエラーハンドラが定義されています。 前日比 アクティビティが失敗すると、データベースに加えられた変更はすべてロールバックされます。エラー ハンドラーは、トランザクションで何を行うかを定義します。マイクロフローで発生したすべての処理をロールバックするか、問題を補正して続行することができます。この例では、ログ メッセージが生成され、その後マイクロフローがエラーで終了します。呼び出し元のマイクロフローは、これをどのように処理するかを決定できます。

データベースの機能 Mendix サポート?
A Mendix アプリケーションは、デフォルトで複数の異なるデータベース サーバーにデプロイできます。データベース固有のコードを含めない限り、いつでもデータベース ベンダーを切り替えることができます。
その Mendix プラットフォームは、以下のリストにあるデータベースサーバーをサポートしています。 データベース のセクション システム要件.