Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

データベースの最適化

ビルトインのプラットフォームの最適化

OutSystemsプラットフォームで生成されたすべてのコードには、アプリケーションの拡張性とパフォーマンスを最大化するための一連のルールと最適化が適用されます。以下の最適化は、すべて自動的にデータベースアクセスに適用されます。

  • データベース接続プーリングにより、OS、ネットワーク、データベースの各リソースの過剰な使用を防ぎます。OutSystemsプラットフォームの接続プーリングの詳細については、こちらをご覧ください。

  • 接続のスマートリリースにより、OS、ネットワーク、データベースの各リソースの消費を削減します。

  • データベースフィールド取得の最適化により、開発者のコーディング内容にかかわらず、アプリケーションで効率的に使用されるデータのみがデータベースから取得されるようになります。

  • データベース-メモリ間の優れたアルゴリズムにより、データセットのメモリへの読み込みを最終手段としてのみ実施することで、使用するメモリを最低限に抑えます。

  • 主キーと外部キーの自動インデックス作成により、よく使用されるデータベースクエリを最適化します。

  • トランザクションのスマートなコミット、ロールバック、リリースにより、データベースの更新漏れをなくし、エラー発生時にはデータベースが更新されないようにします。OutSystemsプラットフォームのトランザクションの詳細については、こちらをご覧ください。

  • クエリの自動インストルメント化と監視により、アプリケーションでパフォーマンスの低いクエリを検出します。検出するための明示的なコーディングは不要です。

  • データベースタイムアウトの制御により、大量のクエリがアプリケーションやデータベース環境のパフォーマンスに影響を与えるリスクを排除します。

データベースアクセスの最適化

データベースアクセスのパフォーマンスをさらに改善するための推奨事項を以下に示します。

  • よく使用するフィールドのインデックスを作成する

  • 使用していないインデックスを削除する

  • バイナリフィールドの大きいテキストを別のエンティティに分離する

  • サーバー間の結合は非常に効率が悪いため避ける

  • インストールチェックリストの推奨事項を適用する

  • 画面アクションでPreparationデータを使用することは避ける

  • プラットフォームから提供されるキャッシングを可能な限り利用する

以下の記事では、データベースのモデル化とアクセスに関するいくつかのベストプラクティスを詳しく説明しています。

データベースの拡張

必要に応じて、より大きなワークロードに対応するようにデータベースをスケールアップできます。データベースアクセスのワークロードやボトルネックを分析するには、プラットフォームから提供されるパフォーマンス分析ツールの使用が不可欠です。パフォーマンスのボトルネックをさらに詳細に特定するために、データベースの分析ツール(クエリプランアナライザなど)を使用してワークロードを分析することもできます。

これまで、インストールベースで特定された拡張性の要件やデータベースパフォーマンスのボトルネックはすべて適切に追跡されてきました。これは、以下のような戦略を適切に用いることで実現しています(ただし、これらの戦略に限定されるものではありません)。

  • 適切なデータベースの保守計画、インデックス作成、クエリ最適化

  • パフォーマンス調整時にボトルネックとして特定された個別のクエリに関するクエリヒント(NOLOCKなど)

  • 一部のデータの非正規化(重要なデータへのアクセスに対応するため)

  • アプリケーションのキャッシングメカニズム(プラットフォームのビルトインまたは外部)の使用

実際には、「データベースへのアクセスを最適化する最善の方法はデータベースにまったくアクセスしないことです」。集中型のアプリケーションキャッシング戦略は、アプリケーションのワークロードを最適化するための鍵となります。

プラットフォームから提供されるキャッシングメカニズムは、こうした目的のほとんどのシナリオに対応します。集中型(分散型)のアプリケーションキャッシングソリューションは、機密/ボトルネックとして特定された操作を個別にキャッシュします。このソリューションは、レプリケートされた(大規模)データセンターに比べて実装や保守が長期的に見て容易になる場合が多くあります。このソリューションをプラットフォームで実行する方法の概要については、こちらをご覧ください。

データベースのスケールアウト - シャーディング

OutSystemsはデータベースのシャーディングをサポートしていません(書き込み用レプリカと読み取り専用レプリカ。つまり、クラスタ化されたデータベースサーバーの事前定義されたインスタンスでの読み取り操作をすべてプラットフォーム/アプリケーションが実行するようにします)。

これはトランザクションデータベースに対する実現可能な拡張性のアプローチであり、(たとえば)マルチテナントによる処理と似ています。さらに、シャーディングされたデータベース環境で書き込みと読み取りをルーティングするために必要なロジックの自動化にプラットフォームが役立つ可能性もありますが、そうした機能を実装する計画はOutSystemsのロードマップにはありません。

上記のように、データベースアクセスを最適化する複数の戦略により、データアクセスのあらゆるボトルネックの最適化に成功しています。この点を踏まえて、OutSystemsはOutSystemsデータベースのシャーディングのサポート/自動化をロードマップで優先していません。

  • Was this article helpful?