0 フォロワー · 496 投稿

  

InterSystems CachéはマルチモデルのDBMSおよびアプリケーションサーバーです

詳細はこちらをご覧ください

ドキュメント

質問 松川 幸久 · 12月 19, 2022

こんにちは、普段はスタジオを使っているのですが、サーバCSPフォルダ内のHTMLファイルを編集する事があり、便利なのでたまにVSCODEを利用しています。以前はHTMLファイルも表示していたと思うのですが、何をやらかしたのかCSP,CSS,MACのみになりました。int,html,jsなどの他のファイルを表示する設定をご存知の方いらっしゃいましたらご教授お願い致します。

InterSystems Language Serverv2.1.4 InterSystems ObjectScriptv2.2.0 InterSystems Server Managerv3.2.1
vscode
Version: 1.74.1 (user setup)
Commit: 1ad8d514439d5077d2b0b7ee64d2ce82a9308e5a
Date: 2022-12-14T10:30:51.966Z
Electron: 19.1.8
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: 10.2.154.15-electron.0
OS: Windows_NT x64 10.0.18363
Sandboxed: No

 

2
0 197
記事 Toshihiko Minamoto · 12月 8, 2022 5m read

一意のインデックスにまつわる興味深いパターンが最近持ちあがったので(isc.rest に関する内部ディスカッション)、コミュニティ向けに強調したいと思います。

動機付けのユースケースとして: ツリーを表すクラスがあるとします。各ノードには名前があるため、名前と親ノードでノードを一意にしたいと考えています。 各ルートノードにも一意の名前を持たせます。 この場合の自然な実装は以下のようになります。

0
0 314
記事 Megumi Kakechi · 12月 1, 2022 5m read

これは InterSystems FAQ サイトの記事です。
 

複数インスタンスでライセンスを共有する場合、ライセンスを統合管理するライセンスサーバの設定が必要です。

1. ライセンスサーバの構成


1) ライセンスキーの配置

ライセンスキー(IRIS.key/cache.key)は、すべての インスタンスの  <インストールディレクトリ>/mgr に配置してください。

ただし、IRIS 2021.1 以降のバージョンをお使いの場合は KeyDirectory を指定することで全てのインスタンスへのライセンスキーの配置は必要なくなります。

KeyDirectory を指定して各インスタンスにライセンスキーをロードする場合、LicenseID の設定が必要になります。
各インスタンスの開始時にローカルの iris.key ファイルが検出されない場合、LicenseID を使用してライセンスサーバにライセンスキーを要求します。
LicenseID  は、管理ポータルの以下のメニューで設定します。

管理ポータル:
 [システム管理] > [構成] > [追加設定] > [開始]:LicenseID


2) ライセンスサーバの設定

ライセンスサーバの設定は、全ての構成で同一のライセンスサーバを使用するように定義します(全ての構成で設定します)。
ライセンスサーバは、管理ポータルの以下のメニューで設定します。

0
0 621
InterSystems公式 Toshihiko Minamoto · 11月 28, 2022

ObjectScript パッケージマネージャ ZPM のライフサイクルにおけるマイルストーンをここに発表させていただきます。このパッケージマネージャは、ObjectScript コードや 配置構成設定、バージョン情報などを便利にパッケージ化する機能を開発者に提供し てきました。 ここ数年のうちに、多くの開発ワークフローに不可欠な存在として大きく進化しました。

その結果、インターシステムズは所有するコンポーネントをパッケージ化するのに使用することとし、コミュニティのGitHubリポジトリをコーポレートリポジトリに移行、InterSystems Package Manager (IPM) に改名することとなりました。IPMはオープンソースのままです。コミュニティのメンバーは、コードをレビューし、プルリクエストを提出することができます。この変更により、従業員以外の方がコードベースに変更を加えることができないような方法で、ソフトウェアのセキュリティを確保することができるようになりました。また、データと一緒にコードをインストールできるソフトウェアでは、より高いレベルのセキュリティと信頼性が重要です。

0
0 251
質問 Seiji Hirose · 11月 23, 2022

Cache2008.1+WindowsServer2008R2で稼動していたCSPアプリケーションを、Cache2018.1+WindowsServer2019に移植したところ、下記のエラーメッセージが表示されるようになってしまいました。どういった原因が考えられるでしょうか?また、対処方法をご存知でしたらご教授願います。

Unexpected status code, unable to process HyperEvent: Not Found (404)

3
0 484
記事 Toshihiko Minamoto · 11月 22, 2022 5m read

タイムトラベルとはパリを訪ねるようなもの。 ガイドを読むだけじゃなく、そこに足を踏み入れなければならない。 ご飯を食べて、動詞の使い方を間違えたり、2 倍の料金を請求されたり、見ず知らずの人とキスするものさ。

ドクター

これから時空を超えた旅をしましょう。未来と過去の日付を見て、様々なフォーマットで計算する方法を説明します。 ターディスは待ちません。コントロールに就いてしっかりつかまりましょう。

ターディスでの旅

0
0 142
記事 Toshihiko Minamoto · 11月 2, 2022 7m read

良識のある人にはルールなんていらない。

ドクター

日付と時間のマスターになるのは簡単なことではありません。いつも問題になる上、どのようなプログラミング言語でも混乱することがあります。そこでこのタスクが可能な限り単純になるように、分かりやすく説明していくつかのヒントをご紹介しましょう。

さぁ、ターディスに乗り込みましょう。あなたを時間の支配者にして差し上げます。

ターディス

1
0 333
記事 Hiroshi Sato · 10月 14, 2022 2m read

IRISでは.Net Binding機能が非推奨になったため、VisM.OCXの置き換えのために用意していたCaché版Cache Directエミュレータ(.Net Binding機能を使用していたため)の使用も非推奨となりました。
そこでIRISのNative API機能を使用して書き換えたものを作成し、OpenExchange(以下のFAQトピックを参照してください)に登録しています。

FAQのトピック


Caché版Cache Directエミュレータを使っているアプリケーションをIRISに移行するためには、IRIS用のCache Directエミュレータに置き換えて、アプリケーションのコードをいくつか書き換える必要があります。

内容は、それぞれのプロジェクトに含まれるコンソールアプリケーションサンプル(consoleApp.cs)を比較することで大体理解できると思いますが、以下にその手順について説明します。

1. IRISの.Net Native API用のdllの参照設定を追加します。

Visual Studioのプロジェクト設定から参照の追加を選び、以下のファイルを追加してください。

c:\InterSystems\IRIS\dev\dotnet\bin\v4.6.2
InterSystems.Data.IRISClient.dll

2.  using句

0
0 341
記事 Megumi Kakechi · 10月 13, 2022 4m read

以下、デプロイモード(配置モード)でプログラムを配布する方法を2つご紹介します。

① DB内のソースコードをデプロイモードでエクスポートする方法

② ソースコード用DBを用意してIRIS.datごとデプロイモードにする方法

①は、プログラムのみデプロイモードでエクスポート/インポートできるので、初回システム構築時はもちろん、プログラムの修正が発生した時などソースの一部のみエクスポートすることも可能となります。
②は、IRIS.dat ごとデプロイするので初回システム構築時に IRIS.dat のみ配置すればよく手順が単純です。

クラスがデプロイモードになると、そのクラスのメソッドとトリガのソースコードは削除されます。
クラスがデータ型クラスである場合、クエリキャッシュによって実行時にメソッド定義が必要になる可能性があるために、メソッド定義が保持されるのでご注意ください。

 

それぞれの方法について、詳しく説明します。
 

① DB内のソースコードをデプロイモードでエクスポートする方法

(1) 開発環境:Hidden属性をオンにして保存し、Deployモードでエクスポートします。
   ※こちらの操作は、移行先環境で行うことも可能です。必要に応じて設定するようにしてください。

0
1 292
記事 Megumi Kakechi · 10月 6, 2022 4m read

Caché/Ensemble 時代からご使用のお客様にはなじみの機能だと思いますが、IRISには「システムがインスタンスのメッセージログ/messages.log(Cachéの場合は コンソールログ/cconsole.log) を監視し、ログ・レベル2(重大なエラー) 以上 のアラートを受け取るとメールを送信する」ログ・モニター機能があります。
この機能を使用すると、アラートログ (alerts.log)へのログ書き込み管理のほかに、メールを送信することもできます。

メール送信の設定は、^MONMGR ユーティリティを使用して簡単に行えます。

以下に、サンプルをご案内します。

0
0 310
記事 Megumi Kakechi · 10月 3, 2022 1m read

これは InterSystems FAQ サイトの記事です。

Question:

InterSystems IRIS は 2フェーズコミットをサポートしていますか?

Answer:

サポートしていません。

2フェーズコミットはデータベースシステムがサポートしているだけでは十分ではなく、アプリケーションサーバ等の各実装が定めている2フェーズコミットのプロトコルを駆使して、アプリケーションを構築する必要があります。

また関連するシステムの全てのコンポーネントが対応している必要がある、ロングトランザクションには向いていないなど、現実に実装する局面では様々な制約事項があります。

2フェーズコミットは、技術面、設計および実装面、コスト面、性能面などハードルが非常に高いため、実際には限られた領域での利用に留まっています。

0
0 108
記事 Megumi Kakechi · 9月 21, 2022 2m read

SQL ゲートウェイ接続を使用した、外部データベースへのアクセス方法についてご説明します。

手順は以下になります。
 

1. 外部ソースへの SQL ゲートウェイ接続の作成を行います

※こちらの例では、IRISの別インスタンスへの接続を試しています。 
※ODBCを使用される場合は、事前に
システムDSN(64bit)の準備が必要です。
管理ポータルより
 [システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続] の 新規接続作成 ボタンをクリックします。

接続の種類を選択し、必要項目を設定します。以下のサンプルは、ODBC接続(別IRISインスタンスのDSN設定)を行っています。

     

※ODBC/JDBC 各接続定義の作成の詳細は、以下のドキュメントをご覧ください。
 JDBC 経由での SQL ゲートウェイへの接続
 ODBC 経由での SQL ゲートウェイへの接続

2. リンクテーブルウィザードを使用して、1で作成したSQLゲートウェイ接続に対してリンクテーブルを作成します

管理ポータルより
 [システムエクスプローラ] > [SQL] ページより、
  [ウィザード] > [リンクテーブル] をクリックしリンクテーブルウィザードを開きます。

 手順に従ってリンクテーブルを作成します。

0
0 616
記事 Megumi Kakechi · 9月 9, 2022 3m read

これは InterSystems FAQ サイトの記事です。
外部バックアップ機能と、SANソリューションが提供するスナップショット(スナップクローン、ミラークローンなど呼び方はベンダ毎に異なります)などのテクノロジを利用することで、バックアップ時のインスタンス停止時間を最短にすることができます。

操作手順概要は以下の通りです。

  1. 外部バックアップ用ユーティリティを利用して、データベースファイルへの書き込みを一時中断します(%SYSネームスペースで実行します)。
    %SYS>set status=##class(Backup.General).ExternalFreeze()
  2. 外部のスナップショットユーティリティを使用して、ファイルシステムのスナップショットを作成します。    
  3. データベースファイルへの書き込みを再開するため、外部バックアップ用ユーティリティを使用します。
    %SYS>set status=##class(Backup.General).ExternalThaw()
  4. バックアップメディアにスナップショットをコピーします。


【ご参考】
ExternalFreeze() の処理は以下のようになります。

 1.  ジャーナルファイルの切り替え
 2.  データベースバッファ上の書き込み待ちバッファをすべてデータベースファイルに書き出す
 3.  ライトデーモンをサスペンド状態にする

0
0 277
記事 Megumi Kakechi · 8月 30, 2022 4m read

これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。

主だったアクセス手法としてダイレクトアクセスSQLアクセスオブジェクトアクセスがあります。
 

ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。

SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。

オブジェクトアクセス は、オブジェクト指向言語でオブジェクトを操作するための表記法として幅広く利用されるドット記法を使用してデータにアクセスする方法です。


ダイレクトアクセスとSQLアクセスおよびオブジェクトアクセスでは、処理の抽象度が異なります。

抽象度が高くなるに伴い、内部的な処理のオーバヘッドが増加するため、単純な1スレッド単位でのアクセススピードの速さについては、ダイレクトアクセスが、SQLアクセスとオブジェクトアクセスに比較して速い場合が多いです。

しかしながら、今後SQLアクセスに関してより高速に処理できるよう様々な開発が進行中です。

0
0 492
記事 Megumi Kakechi · 8月 18, 2022 1m read

これは InterSystems FAQ サイトの記事です。

クライアントからターミナルにログイン(接続)できない時、ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。

ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。

管理ポータル :[ホーム] > [システム管理] > [サービス] 

有効になっていない場合は、リンクをクリックしてサービス定義編集画面を開き、"サービス有効"にチェックを入れて保存します。

もう一つの原因としてはOSのファイアウォールによりターミナル接続が遮断されている場合が考えられます。

リモートでターミナル接続される場合はファイアウォールの設定を無効にしてお使い下さい。

0
0 455
記事 Toshihiko Minamoto · 8月 11, 2022 1m read

Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。

Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。

Enter を押すと、クラスが開きます。

VSCode ではこれをどのようにして行えるでしょうか?

0
0 582
記事 Megumi Kakechi · 8月 8, 2022 3m read

これは InterSystems FAQ サイトの記事です。
 

テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。

kill^ISJ.xxxD
kill^ISJ.xxxI

のようにデータグローバルやインデックスグローバルをまとめて削除するのと同じような動作となります。
そのため、ジャーナルレコードへの出力は最小限になります。


使用例:

write##class(ISJ.xxx).%KillExtent()


ただし、トランザクション下で実行すると一括 Kill の場合でも保存されているレコードに応じたジャーナルレコードが生成されるのでご注意ください。

また、以下のドキュメントの注意書きにあるように、他クラス(テーブル)への参照などが含まれているクラスで実施されると整合性に問題が発生する場合がありますのでご注意ください。

%KillExtent() メソッド
 

こちらを必要なだけ記述したタスククラスを作成すると、タスクスケジューラから定期的に実行できます。
タスククラスの作成方法は、以下のトピックをご覧ください。

【FAQ】定期的に処理を実行する事は出来ますか?


【ご参考】

0
0 300
記事 Hiroshi Sato · 8月 8, 2022 1m read

これは InterSystems FAQ サイトの記事です。
 

コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。

以下に例を示します。 

%SYS>write##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)
1


WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。

クラスリファレンス(%SYS.System)【IRIS】

クラスリファレンス(%SYS.System)

0
0 167
記事 Hiroshi Sato · 8月 1, 2022 1m read

これは InterSystems FAQ サイトの記事です。
 

残念ながら良い方法はありません。

もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。

一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。

ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。

0
0 184
記事 Megumi Kakechi · 7月 31, 2022 2m read

これは InterSystems FAQ サイトの記事です。
TRYブロック内で任意のカスタムエラーを発生させたい場合、以下のように throw で例外を渡すことが可能です。

以下のサンプルでは、Stcount が 1 より小さい場合にカスタムエラーを発生させています。

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codesif (Stcount<1) {
          throw##class(%Exception.General).%New(" ユーザ定義エラー","5001","ロケーション","エラー時のデータ")  
          // ユーザ作成エラーは5001以降
      }
    }
    catch ex
    {
      write"エラー #", ex.Code, ": ", ex.Name, " : ", ex.Location, " ", ex.Data
      return
    }
 }
}


上の例では、Stcount が 1 より小さい場合、以下のようなエラーが出力されます。

0
1 356
記事 Hiroshi Sato · 7月 25, 2022 1m read

これは InterSystems FAQ サイトの記事です。
 

ObjectScript言語は、Java言語等がサポートしている型キャストをサポートしていません。

ただし、メソッドのキャストはサポートしています。

詳細は以下ドキュメントページをご参照ください。


メソッドのキャスト【IRIS】
メソッドのキャスト

InterSystems ObjectScript言語はJava言語や.NetのC#言語のような静的型付き言語とは異なり、動的型付き言語に分類される言語になります。

従って型の解釈は実行時に行われ、宣言時に型を合わせるという必要性がないため型キャストのような仕組みを用意していません。

0
0 211
記事 Hiroshi Sato · 7月 25, 2022 1m read

これは InterSystems FAQ サイトの記事です。
 

ミラーリングが同期の対象とするのはデータベースファイルのみです。

アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、

  1. NASなどを導入して共有ディスク上にそれらのファイルを配置する方法
  2. または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法

などの方法が考えられます。

また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。

0
0 182
記事 Megumi Kakechi · 7月 3, 2022 2m read

これは InterSystems FAQ サイトの記事です。

バージョン2015.2以降から、Windows上のインストール環境では、サービス・アカウントを
 「Windowsコントロールパネル > 管理ツール > サービス > InterSystems IRIS/Cache Controller for XX」
の「ローカル・システムアカウント」から Windows の任意の管理者アカウントに変更した場合に <NOTOPEN> エラー または -1 が返ります。

この状況を回復するためには、以下2つの設定をする必要があります。

1. 「Windowsコントロールパネル > 管理ツール > サービス > InterSystems IRIS/Cache Controller for XX」
    のログオン設定を、「ローカルシステムアカウント」に戻す
2. irisinstall/cinstall  コマンドを使用してInterSystems IRIS サービス・アカウントを変更する


2 の手順は以下になります。

Windowsコマンドプロンプトを管理者権限で起動し、以下コマンドを使用して変更します。
この設定を有効するためには、インスタンスの再起動が必要です。

0
0 560
記事 Megumi Kakechi · 6月 29, 2022 1m read

これは InterSystems FAQ サイトの記事です。

デフォルトではテーブルのカラムの順番はシステムが自動的に決定します。

順番を変更するにはクラス定義を行う際にプロパティ・キーワード SqlColumnNumber でプロパティ毎に明示的に順番を設定してください。

例:

Property Name As %String [SqlColumnNumber = 2];


ドキュメントは以下をご参照ください。

SqlColumnNumber


なお、SQLテーブル名を変えたい場合は SqlTableName 、カラム名(フィールド名)を変えたい場合は SqlFieldName を指定します。

ともに、永続クラスのみに適用されます。

0
0 165
記事 Toshihiko Minamoto · 6月 28, 2022 5m read

皆さん、こんにちは!

職場で持ち上がった単純なリクエストで始めた個人プロジェクトを紹介したいと思います。 

使用している Caché ライセンス数を調べることはできますか? 

コミュニティに掲載されている他の記事を読んでみたところ、David Loveluck が投稿したぴったりの記事が見つかりました。 

APM - Using the Caché History Monitor(APM - Caché 履歴モニターを使用する)
https://community.intersystems.com/post/apm-using-cach%C3%A9-history-monitor

そこで、David の記事を参考に、Caché 履歴モニターを使って、リクエストされた情報を表示して見ました。 

「どのテクノロジーを使用するのか」という疑問に対し 

私は CSP に決定しました。単純で強力なテクノロジーであるため、私が担当するお客様は Caché が単なる MUMPS/ターミナルではないことに気づくでしょう。

ライセンス、データベース増加状況、CSP セッションの履歴を表示するページを作成した後、「システムダッシュボードとプロセス」ページのデザインを新装することにしました。

私の Caché インスタンスではすべてうまく機能します。

でも、IRIS はどうでしょうか? 

0
0 225
記事 Mihoko Iijima · 5月 29, 2022 3m read

これは InterSystems FAQ サイトの記事です。

InterSystems IRIS/Caché の管理ポータルメニュー:SQLデータインポートウィザードの処理で行うようなCSVファイルをテーブルへインポート、テーブルからファイルにエクスポートする方法をプログラムで実行することができます。

※ サンプルはバージョン 2017.1以降で動作確認しています。

※ バージョン 2016.2.3以前でお試しいただく場合は、SQL.Utilsクラス の20行目をコメント化してからご利用ください。

//Set mgr.IQN=$$$BuildIQN(SchemaName,TableName)

 

サンプルの使用手順

サンプルはこちらにあります👉https://github.com/Intersystems-jp/DataImportExport

CSVファイルをテーブルへインポート、テーブルからファイルへエクスポートの処理は、SQL.Utilsクラスを使用しています。

1) サンプルのインポート

実行したいネームスペースに SQL.Utilsクラスをインポートします。

スタジオをご利用の場合は、ファイルをドラッグ&ドロップするとインポートできます。

0
0 780
記事 Megumi Kakechi · 5月 25, 2022 2m read

これは、InterSystems FAQサイトの記事です。
%SYS.Namespace クラスの List クエリで取得することができます。

次のようなルーチンを作成し、ターミナルで実行してください。


1. サンプルの作成

getnsp
   // ネームスペース一覧を取得する write "nsp:glo:rtn",!,!
   set statement=##class(%SQL.Statement).%New()
   set status=statement.%PrepareClassQuery("%SYS.Namespace","List")
   set resultset=statement.%Execute()
   while resultset.%Next() {
       write resultset.%Get("Nsp"),!
   }
   quit

 

2. ターミナルから実行

USER>do ^getnsp
%SYS
DOCBOOK
SAMPLES
USER


こちらの記事でご紹介しているクラスクエリを実行する方法は、様々なケースで応用できます。

0
0 344
お知らせ Mihoko Iijima · 5月 8, 2022

開発者のみなさん、こんにちは!

2022年3月9日開催「InterSystems Japan Virtual Summit 2022」のセッション「ミラーリングを使用した HA および DR の構成例」のアーカイブを YouTube に公開いたしました。

(プレイリストはこちら

ミラーリングは、IRIS インスタンス間のデータベースの複製およびフェイルオーバを行う機能です。

動画では、ミラーリングを利用した高可用(HA)なシステムおよびディザスタリカバリ(DR)に対応したシステムの構成例についてご紹介します。

ぜひご参照ください。

<iframe width="521" height="293" src="https://www.youtube.com/embed/sp5wfKbqHuQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

【目次】

00:35 ミラーリングの概要

03:20 ミラーリングの種類と機能:フェイルオーバ・ミラー・メンバ

05:07 ミラーリングの種類と機能:非同期ミラー・メンバ

0
0 230
記事 Megumi Kakechi · 5月 6, 2022 1m read

これは、InterSystems FAQサイトの記事です。
InterSystems製品では、永続データは後で高速にランダムアクセスできるように、ある一定の規則に沿ってキー順にソートされて格納されます。

新しいノードが追加された場合、ノードが削除された場合、データの長さが変更された場合など、データの構造変化が起こる度に、その並び順を維持できるよう、また無駄な領域が発生しないように動的なデータの配置変えを実施します。

従って、常にデータはきれいに整理された状態で格納されるため、無駄な空き領域が発生しません。

これらの並べ替えの作業は、書き換えのコストのかかる処理ですが、InterSystems製品では、これらの処理はなるべくメモリ(キャッシュ)上で実行し、ディスクI/Oを軽減することにより、性能の劣化を抑えています。

0
0 180