Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Ensemble 2015.2

Ensemble 2015.2 の新機能

Ensemble 2015.2 では、次のマイナーな新機能と拡張機能が導入されました。

  • パススルー汎用 InProc オペレーションの効率性の向上

  • メッセージ・バンクの機能強化

  • プロダクション・モニタによる再試行ステータスの表示

  • パージの機能強化

  • 変換およびサブ変換の制約の除去

Ensemble 2015.2 にアップグレードする際の互換性の問題

このリリースの以下の変更によって、既存のシステムの動作が影響を受ける可能性があります。Ensemble のインスタンスをアップグレードする前に、以下の問題を確認してください。

エンタープライズ・メッセージ・バンクのアップグレードにはインデックス再構築が必要

Ensemble 2015.1 以前のバージョンから Ensemble 2015.2 以降のバージョンに Ensemble メッセージ・バンク・システムをアップグレードしている場合、アップグレード中に作成されるメッセージ・バンク・システムの 4 つの新しいインデックスを無効にし、再構築する必要があります。インデックスを無効にするまで、メッセージ・バンクの検索では、アップグレード前にメッセージ・バンクに送信されたメッセージが検出されません。インデックスを再構築すると、メッセージ・バンクはそのインデックスを使用するようになり、メッセージ検索のパフォーマンスが向上します。

Ensemble 2015.2 には、日付ベースの検索を ID に基づく同等の検索に置き換えることによってメッセージ・バンクの検索を向上させる開発上の変更が含まれています。このことによって、特に日付範囲に基づいて検索するときの検索効率が大幅に向上しています。この変更は、Ensemble をアップグレードするときに作成される新しいインデックスに依存していますが、デフォルトでは、新しいインデックスはアップグレード後に受信したメッセージに対してのみ生成されます。つまり、メッセージ・バンクの検索では、インデックスを再構築するまで、これらの新しいメッセージのみが検出され、古いメッセージは検出されません。

インデックスの再構築については、"Caché SQL 最適化ガイド" の “READ および WRITE アクティブ・システム上でのインデックスの構築” にある Caché ドキュメントを参照してください。 この互換性の問題で説明している手順は、上記のドキュメントで説明している手順と若干異なります。

この手順では、メッセージ・バンク・プロダクションがライブで、この手順の間にメッセージをアクティブに受信していることを想定しています。メッセージ・バンク・システムでこの手順を実行するだけでよく、メッセージ・バンクにメッセージを送信するクライアント・システムを変更する必要はありません。

アップグレード中に作成された 4 つのインデックスを無効にし、インデックスを再構築してからこれを再度有効にするには、以下の手順を実行します。

  1. 以下を実行してインデックスを非アクティブにします。

     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NodeIdTime",0) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NodeId",0) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NTrg",0) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NSrc",0)
  2. アップグレード後に新しいメッセージがメッセージ・バンクに追加されている場合、クエリ・キャッシュをすべて削除する必要があります。"Caché SQL 最適化ガイド" の “クエリ・キャッシュの削除” を参照してください。この時点では、クエリは、メッセージ・バンクの別のインデックスを使用して動作します。効率は向上していませんが、古いメッセージも新しいメッセージも返します。

  3. READ および WRITE アクティブ・システム上でのインデックスの構築” にリストされている手順 2 ~ 5 はスキップしてもかまいません。メッセージ・バンクのコードはこれらの手順を自動的に実行します。

  4. Ensemble 2016.2 以降のバージョンにアップグレードしている場合、%BuildIndices メソッドを使用してインデックスを再構築します。

    Set tSC = ##class(Ens.Enterprise.MsgBank.MessageHeader).%BuildIndices($LB("NodeIdTime","NSrc","NTrg","NodeId"),...) 
    

    メソッドのパラメータの説明については、%Library.PersistentOpens in a new tab %BuildIndices() メソッドを参照してください。このメソッドは完了まで時間がかかることがあるため、pStartID パラメータと pEndID パラメータを使用してバッチでインデックスを構築できます。

  5. Ensemble 2015.2 または Ensemble 2016.1 にアップグレードしている場合、%ConstructIndicesParallel() メソッドを使用してインデックスを構築します。このメソッドは、メッセージ・バンクのサイズによっては完了まで時間がかかることがあります。[これは元の手順の手順 6 です。]

     Set tSC=##class(Ens.Enterprise.MsgBank.MessageHeader).%ConstructIndicesParallel(,,,0,0,2,0)

    これらのパラメータの意味は以下のとおりです。

    • pSortBegin=0 は SortBegin 機能を使用しません (SortBegin の使用は行レベルのロックの使用と互換性がありません)。

    • pDroneCount=0 は、このメソッドがバックグラウンド・ジョブ数を設定できるようにしています。

    • pLockFlag=2 は行レベルのロックの使用を宣言しています。

    • pJournalFlag=0 はインデックス構築がジャーナル化されないことを意味します。インデックス構築中にシステムで障害が発生した場合、この呼び出しを再入力して再開する必要があります。

    この呼び出しは 4 つの新しいインデックスを構築するだけです。%ConstructIndicesParallel で INDEXBUILDERFILTER クラス・パラメータを使用しており、ここでこれら 4 つのインデックスを指定しているからです。

  6. 以下のコマンドを使用して、検索でのインデックスの使用を有効化します。

     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NodeIdTime",1) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NodeId",1) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NTrg",1) 
     Do $SYSTEM.SQL.SetMapSelectability("Ens_Enterprise_MsgBank.MessageHeader","NSrc",1)
FeedbackOpens in a new tab