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

このエラーが発生する原因としては、アプリケーションの中で既に他のプロセスからロック対象リソースがロックされていて、何らかの理由でそのロックが解放されていないケースが考えられます。

他のプロセスがロックしている兆候がない場合は、ロックテーブルの空き領域が不足しているケースが想定されます。
その場合は、メッセージログ(コンソールログ)に LOCK TABLE FULL のメッセージが出力されます。

トランザクション処理を行なっている場合には、ロック解放の延期が影響しているケースも考えられます。
トランザクションとロック解放の延期については、以下のドキュメントをご参照下さい。

00
0 0 16

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

この記事では、Java から IRIS へ接続する方法の中から XEP(ゼップ)を利用して、GPS (GPX)データを高速に取り込むサンプルをご紹介します。

Java の実行環境や IRIS がお手元になくても大丈夫です!コンテナ 🐳 のビルド+開始で体験できる「実行環境テンプレート」をご用意しました。

ソースコードは コミュニティの Git で公開 していますので、docker、docker-compose 、git がインストールされた環境であれば、すぐにお試しいただけます(Javaの実行環境はコンテナでご提供するので準備不要です)。

00
0 0 4
記事
Minoru Horita · 2020年7月21日 10m read
Python Gateway パートIII:基本機能

この連載記事では、InterSystemsデータプラットフォーム用のPython Gatewayについて説明します。 また、InterSystems IRISからPythonコードなどを実行します。 このプロジェクトは、InterSystems IRIS環境にPythonの力を与えます。

  • 任意のPythonコードを実行する
  • InterSystems IRISからPythonへのシームレスなデータ転送
  • Python相互運用アダプタでインテリジェントな相互運用ビジネスプロセスを構築する
  • InterSystems IRISからのPythonコンテキストの保存、調査、変更、復元

その他の記事

現時点での連載計画です(変更される可能性があります)。

00
0 0 90

はじめに

システム開発では、集計作業や他システムとの連携など、数十秒ごとにバックグラウンドで処理を実行する、常駐プロセスが必要になるケースが多々あるかと思います。

Cachéでは、Jobコマンドを使って常駐プロセスを作成しますが、実際にシステムを安定稼働させるには、以下の監視の仕組みが必要でした。

  • 常駐プロセスの監視 常駐プロセス起動時にロックをかけ、二重起動を防止したり、プロセスが起動しているかどうかを監視する
  • ログ 常駐プロセスの処理状況や発生したエラーを記録し、処理が行われているどうかを監視する

IRISの場合、Interoperabilityにはこれらの機能が装備されています。したがって、Interoperabilityの機能を使えば、簡単に常駐プロセスを起動、監視することができます。

常駐プロセスの作り方

常駐プロセスの作成には以下の作業を行います。

00
0 0 102

ここで紹介するサンプルは、以下のGitHubから入手可能です。

 

IRIS .Netサンプル

 

jpegファイルを読んで、IRISデータベースに格納するサンプル

 

上記GitHub上のinsertbinary\insertbinary\binread.csというファイル名です。

処理内容は、ファイルシステム上のjpeg形式のファイルを読み込んで、BLOB形式でIRISデータベースに格納します。

Caché ではADO.NET Managed Providerを使用して実装していましたが、それをIRISのInterSystems Managed Provider for .NETを使用して書き換えました。
(名前が変わっていますが、ADO.NETに関しては、機能はほとんど同じです)

従って、厳密に言うと.Net Native APIを使用していませんが、コネクションオブジェクトの使用方法は共通なので、この部分は、Native APIを使用していると言うこともできます。

00
0 0 32

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

連番を生成する関数($INCREMENT)を使用してユニークな番号を自動付番することができます。

 

SQLのSELECT文で使用する場合には OracleのSequence相当の機能を実装したクラスを利用する方法があります。

 

サンプルを以下のGitHubリポジトリより取得することができます。

 

OracleのSequence機能を実装するサンプル

 

00
0 0 23

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

ネットワーク共有フォルダ/ネットワークプリンタにアクセスしたい場合、以下の2つの方法があります。

A. net use コマンドを使用する方法
B. IRISの起動ユーザを変更する方法

詳細は以下をご覧ください。

------------------------------------------------------------------------------------------
【方法A】net use コマンドを使用する方法
------------------------------------------------------------------------------------------

1) IRIS からネットワーク共有フォルダへのアクセスを許可する場合、以下のコマンドを実行するように SYSTEM^%ZSTART に記述します。

00
0 0 58

データ分析のためにInterSystemsで何ができるかを確認したいとしましょう。 理論を学んだので今度は実践したいと考えた時、InterSystems には、役に立つ実例をいくつか取り入れた Samples BI というプロジェクトが用意されています。 まずは、README ファイルを開き、Docker に関する内容はすべてスキップして、手順に従ってインストールしてゆきます。 仮想インスタンスを起動し、そこに IRIS をインストールしたら、手順に従って Samples BI をインストールします。そして綺麗なチャートやテーブルを見せて上司に感心してもらいましょう。 ここまでは順調ですね。 

必然的に、ここで変更を加えることになります。

00
0 0 66

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

システムルーチン ^DBSIZE を利用するとバックアップファイルサイズを見積もることができます(メモ1もご参照ください)。

^DBSIZE は、データベース・バックアップ・リストに選択されたデータベースを対象に、フルバックアップ/累積バックアップ/差分バックアップそれぞれのファイルサイズを見積もります。

なお、データベース・バックアップ・リストは、管理ポータルの [システム管理] > [構成] > [データベースバックアップ] > [データベース・バックアップ・リスト] から作成します。

 

詳細については、下記ドキュメントもご参照ください。

00
0 0 39

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

揮発性テーブル(多数のINSERT、DELETEが行われるテーブル)では、ビットマップ・インデックス用ストレージは徐々に効率が低下する可能性があります。

例えば、以下の定義からなるデータが数千件あり、一定期間保持した後 TRUNCATE TABLE で一括削除を行うオペレーションが繰り返し行われているとします。

Class MyWork.MonthData Extends (%Persistent, %Populate)
{
/// 満足度
Property Satisfaction As %String(VALUELIST = ",満足,やや満足,やや不満,不満,");
/// 年齢
Property Age As %Integer(MAXVAL = 70, MINVAL = 20);
Index AgeIdx On Age [ Type = bitmap ];
}

 

00
0 0 27

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

InterSystems製品を停止しないバックアップ方法は、3種類あります。


① 外部バックアップ
② オンライバックアップ
③ レガシー並行外部バックアップ

 

各詳細については、以下ドキュメントをご参照ください。

00
0 0 19

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

IRIS プログラミングコンテストでは、💨すぐに💨開発を開始いただけるようにコンテナ版 IRIS を利用した「開発環境テンプレート」をご提供してしていました。

終了したコンテストにはご応募いただけませんが、テンプレートは「ちょっと試したい」「加工して自分オリジナル環境を作りたい」の目的にぴったりの内容です。

また、全て Open Exchange で公開されていて、Docker、Git、VSCode をインストールした環境があればすぐにご利用いただけます。

テンプレートの使用方法については、各コンテストの紹介ページでご案内しています(日本語解説ビデオ付きもあります)。

基本は以下 3 行だけで開始できます。(とっても簡単!)

git clone <ここにテンプレートのURL>

cd <作成されたディレクトリ>

docker-compose up -d --build

 

ご興味ある内容ありましたら、ぜひお手元で試してみてください!

00
0 0 29

皆さん、こんにちは。

他のシステムとファイル連携を行う場合、Cachéでは、Jobコマンドを使った常駐プロセスやタスクを作成し、特定のディレクトリにあるファイルを定期的に監視、データを取り込むといった機能を手作りされていたかと思います。
これにはファイルの監視や、常駐プロセスの監視、プロセスの制御(起動、停止)を行う機能を用意する必要がありましたが、IRISではInteroperability機能が使えますので、そのようなプログラムを省略することが可能です。

今回は、既にファイル読込処理を行うルーチンが存在し、ルーチン呼出時の引数にファイル名があるという前提で、その処理をInteroperability機能を使ってどのように呼び出すかについて説明したいと思います。

手順

作業手順は以下の通りとなります。

00
0 3 46
記事
Hiroshi Sato · 2021年2月24日 3m read
ECPはどのように使うのが正しい?

以下のドキュメントでご紹介しています通り、ECPは分散キャッシュ用のアプリケーションサーバーを並列に増設することで、処理量に応じてスケールアウトすることを主目的として設計されています。

 

ECP機能紹介

 

従ってインターシステムズデータプラットフォーム上で稼働する複数のアプリケーション間の簡便なデータ交換手段としてECPをご使用いただくことは推奨していません。

以下その理由についてご説明します。

データ量の増加、処理量の増加に伴いスケーラビリティに関する要件も今後益々厳しくなる中、将来にわたってより良いスケーラビリティ性能を得られるようインターシステムズの開発部門は、より良いアルゴリズムの開発や処理のチューニングをECPに対して継続的に行っております。


その成果は順次最新バージョンに反映していきます。

00
0 0 28

この記事では、従来のIRISミラーリング構成の代わりに、Kubernetesの Deploymentと分散永続ストレージを使って高可用性IRIS構成を構築します。 このデプロイでは、ノード、ストレージ、アベイラビリティーゾーンといったインフラストラクチャ関連の障害に耐えることが可能です。 以下に説明する方法を使用することで、RTOがわずかに延長されますが、デプロイの複雑さが大幅に軽減されます。

00
0 0 29

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

ObjectScriptでは様々な型の変数定義が可能ですが、
実際に定義された変数(Object)から、その変数の型を逆引きする方法を
ご存じな方はいらっしゃいませんでしょうか?

理想としては、Java等で利用可能な『instanceof』演算子の
代替えとなるような仕組みが望ましいです。

力技で何とかなりそうなら、専用のメソッドみたいなものを
自作で作ってもよいかなとは考えておりますが、
現状その力技すら思いついていない状況です。。。

何か情報をお持ちの方がいらしたら、助言いただけますと幸いです。

00
0 4 40

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

ジャーナル切り替えのタスクが実行時にエラー(例:FILEFULL)となり、その原因となるエラーを解消後も一時停止(Suspend Leave)状態となっているのであれば、以下の操作により復旧可能です。

管理ポータル: [システムオペレーション] > [タスクマネージャ] > [タスクスケジュール表示]  より、以下の操作を行います。

  1. ジャーナル切り替え(Switch Journal) "詳細" をクリック 
  2. "一時停止" をクリック
  3. タスク実行が一時停止された場合にタスクを再スケジュールしますか? はい
  4. "すぐに実行する" をクリック
  5. "再開" をクリック
  6. "すぐに実行する"

タスク詳細にて "一時停止:"が空欄になり、"次回スケジュール時刻:" が再開後の次のスケジュール(例えば2021-04-17 00:00) になっていれば、復旧完了です。

00
0 0 9

Python から InterSystems IRIS へ接続する方法の1つである「PyODBC」(※)の利用方法をご説明します。

※ Python からのアクセスは、PyODBCの他に、Native API を利用した接続方法もあります。Native APIを利用してIRISのグローバル変数にアクセスする方法については、別の記事でご説明します。

00
0 1 95

この連載記事では、InterSystemsデータプラットフォーム用のPython Gatewayについて説明します。 また、InterSystems IRISからPythonコードなどを実行します。 このプロジェクトは、InterSystems IRIS環境にPythonの力を与えます。

  • 任意のPythonコードを実行する
  • InterSystems IRISからPythonへのシームレスなデータ転送
  • Python相互運用アダプタでインテリジェントな相互運用ビジネスプロセスを構築する
  • InterSystems IRISからのPythonコンテキストの保存、調査、変更、復元

その他の記事

現時点での連載計画です(変更される可能性があります)。

00
0 0 40

この記事では、スナップショットを使用したソリューションとの統合の例を使って、外部バックアップによる Caché のバックアップ方法を紹介します。 このところ私が目にするソリューションの大半は、Linux の VMware にデプロイされているため、この記事の大半では、例として、ソリューションが VMware スナップショットテクノロジーをどのように統合しているかを説明しています。

Caché バックアップ - すぐ使えますか?

Caché をインストールすると、Caché データベースを中断せずにバックアップできる Caché オンラインバックアップが含まれています。 しかし、システムがスケールアップするにつれ、より効率的なバックアップソリューションを検討する必要があります。 Caché データベースを含み、システムをバックアップするには、スナップショットテクノロジーに統合された外部バックアップをお勧めします。

00
0 0 149

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

言語バインディングなどのサーバクライアント型で接続した場合、クライアントの情報は以下の処理で取得できます。

 

set client=$PIECE($ZIO,"/")

 

サーバがWindowsの場合、上記にクライアントマシン名が格納されます。

 

そこで

 

set ip=$system.INetInfo.HostNameToAddr(client)

 

とすれば、IPアドレスが取得できます。 サーバがLinux等のUNIX系の場合、変数clientにはクライアントマシンのIPアドレスが格納されます。

00
0 0 47
記事
Hiroshi Sato · 2020年10月19日 3m read
LinuxでのKernelパラメータ値の設定

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

一部のKernelパラメータはInterSystems製品を稼働するためには、不適切な値となっているため、調整する必要があります。

shmmax (共有メモリセグメントの最大値)

共有メモリにあわせたshmmaxの値は以下の a)、b)、c)、d)の合計値になります。

a) データベースバッファ(Mbytes)

b) ルーチンバッファ(Mbytes)

c) 一般メモリヒープ(Kbytes)

d) バッファ等の管理ための領域    18 (Mbytes) + (データベースバッファ(Mbytes) +ルーチンバッファ(Mbytes)) x 0.05 (Mbytes)

shmall (総共有メモリサイズ) システムで使用する共有メモリの合計サイズになります。

単位はページ(4Kbytes)です。

この値は少なくとも使用する共有メモリサイズ以上にする必要があります。

shmmni (共有メモリセグメント数) 通常既定値で問題ありません。

使用するセグメント数は1つです。

00
0 0 204

以前紹介した記事 (お読みいただいたでしょうか) では、GitHub とパーフェクトに統合する CircleCI のデプロイシステムについてカバーしました。 なのにどうしてさらに掘り下げる必要があるのか? それは、GitHub には GitHub Actions という独自の CI/CD プラットフォームがあり、詳しく見ておく価値があるからです。 GitHub Actions を使えば、外部のサービスを使用する必要はありません。

この記事では、GitHub Actions を使って InterSystems Package Manager のサーバー部分である ZPM-registry を Google Kubernetes Engine (GKE) にデプロイする、ということを試したいと思います。

00
0 0 67

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

管理ポータルから行う手動のパージ(Purge)と、タスクを利用する方法があります。

データを手動でパージするには、[Interoperability] > [管理] > [管理データの削除] ページを使用します。
(このページではバックグラウンド・ジョブとしてパージを実行しますので、ページがタイムアウトしても問題ありません。)

タスクでパージする場合は、[システムオペレーション] > [タスクマネージャ] > [新しいタスク] の画面でInteroperabilityプロダクションのネームスペースを指定し、タスクタイプに「Ens.Util.Tasks.Purge」を指定します。

タスクの場合は、「TypesToPurge」の項目で以下のパージ対象タイプを選択できます(図参照)。

00
0 0 33

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

以下の例では Test.Class2 クラスの Images プロパティに画像ファイルが保存できるように定義しています。
input() メソッドを利用して画像ファイルを Images プロパティに登録し、データベースに保存したとします。

00
0 0 38