記事 Toshihiko Minamoto · 2021年9月14日 10m read リレーショナルデータベースにおけるEntity-Attribute-Valueモデル。 グローバル変数はテーブルでエミュレートする必要がありますか? パート2. より産業向けのグローバルストレージスキーム この連載の第1回では、リレーショナルデータベースにおけるEAV(Entity-Attribute-Value)モデルを取り上げ、テーブルにエンティティ、属性、および値を保存することのメリットとデメリットについて確認しました。 このアプローチには柔軟性という点でメリットがあるにもかかわらず、特にデータの論理構造と物理ストレージの基本的な不一致などによりさまざまな問題が引き起こされるという深刻なデメリットがあります。 こういった問題を解決するために、階層情報の保存向けに最適化されたグローバル変数を、EAVアプローチが通常処理するタスクに使用できるかどうかを確認することにしました。 パート1では、オンラインストア向けのカタログをテーブルを使って作成し、その後で1つのグローバル変数のみで作成しました。 それでは、複数のグローバル変数で同じ構造を実装してみることにしましょう。 #SQL #グローバル #データベース #パフォーマンス #ヒントとコツ #リレーショナルテーブル #非構造化データ #Caché #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 376
お知らせ Mihoko Iijima · 2021年9月13日 ★受賞者発表!★InterSystems Analytics コンテスト2021 開発者の皆さん、こんにちは! InterSystems Analytics コンテスト2021 は終了しました。コーディングコンテストにご参加いただきありがとうございました! この記事では、コンテスト受賞者を発表します! 受賞された開発者の皆さん、👏おめでとうございます!🎊 #コンテスト #InterSystems IRIS #Open Exchange 0 0 0 81
記事 Megumi Kakechi · 2021年9月12日 2m read サイズの大きいグローバルに格納された文字列を検索する方法 特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか? 管理ポータルでグローバルを表示して Ctrl+F で検索することもできますが、サイズが大きなグローバルでは表示に時間がかかり難しい場合もあります。 もちろん、$ORDER や $QUERY 関数でループして含まれる文字列を検索することは可能です。 しかし、もっと簡単で便利な方法があります。 管理ポータルで行える、グローバル文字列検索機能 を使う方法です。 こちら、管理ポータルの [システムエクスプローラ] > [グローバル] :検索 から簡単に行えます 例えば、^%ISCLOGグローバルの中から「CSP error cleaning up after page」というエラーが含まれるグローバルを検索するときは以下のようになります。 #ヒントとコツ #管理ポータル #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 192
記事 Hiroshi Sato · 2021年9月9日 2m read グローバルマッピングをプログラミングで登録する方法 これは InterSystems FAQ サイトの記事です。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 317
記事 Hiroshi Sato · 2021年9月9日 2m read RESTでクロスドメイン制約を回避する方法 これは InterSystems FAQ サイトの記事です。 #REST API #セキュリティ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 632
記事 Toshihiko Minamoto · 2021年9月9日 10m read RDBにおけるEntity-Attribute-Value(EAV)モデル。 グローバル変数はテーブルでエミュレートする必要がありますか? パート1. はじめに この連載の最初の記事では、リレーショナルデータベースのEAV(Entity–Attribute–Value)モデルを見て、それがどのように使用されて、何に役立つのかを確認しましょう。 その上で、EAVモデルの概念とグローバル変数と比較します。 原則として検索する必要のある、フィールド数、または階層的にネストされたフィールドの数が不明なオブジェクトがある場合があります。 #SQL #グローバル #データベース #パフォーマンス #ヒントとコツ #リレーショナルテーブル #非構造化データ #InterSystems IRIS Open Exchange app 0 0 0 1.9K
記事 Mihoko Iijima · 2021年9月7日 3m read Windowsで InterSystems 製品をアンインストールするときの注意点 これは InterSystems FAQ サイトの記事です。 Windows システムにインストールされた InterSystems 製品を削除するには、コントロールパネルにあるプログラムの追加と削除(Windows 10の場合は、Windows の設定からアプリを選択)を使用します。 システムに変更を加えますので、管理者権限を持ったユーザでログインして作業を行う必要があります。 1) 管理者(Administrator)でシステムにログインします。 2) システムトレイから、アンインストールを行う InterSystems 製品インスタンスのランチャーを終了します(ランチャークリック → 終了)。 3)コントロールパネルにある プログラムの追加と削除 (Windows 10の場合は、Windows の設定からアプリを選択)で <InterSystems製品> instance [xxxx] ( xxxx にはインスタンス名が表示されています) を削除します。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 597
記事 Toshihiko Minamoto · 2021年9月7日 4m read グラフ作成を行いやすくするために、pButtonsデータをcsvファイルに抽出するには まずはこの記事で手短にこの疑問に回答します。 この連載のパート2には、pButtonsから抽出されたパフォーマンスデータのグラフを含めました。 pButtonsの.htmlファイルからmgstatなどのメトリックを抽出してExcelで簡単にグラフ作成する方法として、カット&ペーストよりも素早く行える方法がないか、オフラインで尋ねられました。 参照: パート2: 収集したメトリックを確認する pButtonsは、収集したデータをWRCに送信して確認しやすくするために、そのデータを1つのhtmlファイルにコンパイルするのですが、 特に24時間などの長い収集時間で実行されるpButtonsの場合は、mgstat、vmstatなどの時間ベースのデータをグラフィック表示にして確認できれば、トレンドやパターンが見やすくなります。 #CSV #システム管理 #パフォーマンス #InterSystems IRIS 0 0 0 225
お知らせ Mihoko Iijima · 2021年9月6日 ★投票開始!★InterSystems Analytics コンテスト2021 開発者の皆さん、こんにちは! 今週は、InterSystems Analytics コンテスト2021 の投票週間です!InterSystems IRIS を使い開発されたベストソリューションに投票お願いします! 🔥 投票はこちらから! 🔥 投票方法については、以下ご参照ください。 #コンテスト #InterSystems IRIS #Open Exchange 0 0 0 74
記事 Mihoko Iijima · 2021年9月5日 1m read 使用中のライセンス情報を取得する方法 これは InterSystems FAQ サイトの記事です。 %SYSTEM.License クラスのメソッド利用すると、ライセンス情報を取得できます(実行時は、$SYSTEM.License.メソッド名() と記述します)。 %SYSTEM.License クラスは、ライセンスユーティリティ用システムオブジェクトです。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 209
記事 Megumi Kakechi · 2021年9月3日 2m read 文字列の中から数値だけを抜き出す方法 これは InterSystems FAQ サイトの記事です。 $ZSTRIPコマンドは、指定された文字列から文字のタイプと文字を削除します。このコマンドを使用することで文字列から数値部分のみを抽出することが可能です。 $ZSTRIP(string,action,remchar,keepchar) 第1引数(string) :対象文字列第2引数(action) :string から削除する対象。アクションコードとマスクコードで構成。第3引数(remchar) :削除する特定の文字を指定。第2引数のマスクコードに含まれない文字も指定可能。【オプション】第4引数(keepchar):削除しない特定の文字を指定。【オプション】 以下はその例です。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 384
記事 Hiroshi Sato · 2021年9月2日 2m read $ZF(-100)の使用方法 これは InterSystems FAQ サイトの記事です。 $ZF(-100) のコマンドは、以下のフォーマットで使用します。 $ZF(-100, フラグ, コマンド名, コマンドの引数) OSコマンドを実行する場合は、「/shell」フラグが必要です。例えば mkdir であれば、次のように使用します。 // mkdir C:\temp\newdir Write $ZF(-100, "/shell", "mkdir", "C:\temp\newdir") コマンドの引数が複数ある場合は、以下の例のように引数の数だけ二重引用符で括ってカンマ区切りで指定します。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 620
記事 Toshihiko Minamoto · 2021年9月1日 8m read Amazon EKSとIRIS。 高可用性とバックアップ 記事で使用されているすべてのソースコード: https://github.com/antonum/ha-iris-k8s 前の記事では、従来型のミラーリングではなく分散ストレージに基づいて、高可用性のあるk8sでIRISをセットアップする方法について説明しました。 その記事では例としてAzure AKSクラスタを使用しました。 この記事では引き続き、k8sで可用性の高い構成を詳しく見ていきますが、 今回は、Amazon EKS(AWSが管理するKubernetesサービス)に基づき、Kubernetes Snapshotに基づいてデータベースのバックアップと復元を行うためのオプションが含まれます。 #AWS #DevOps #クラウド #コンテナ化 #デプロイ #バックアップ #高可用性 #InterSystems IRIS #InterSystems IRIS for Health #Open Exchange Open Exchange app 0 0 0 700
記事 Megumi Kakechi · 2021年9月1日 1m read SQL文ではなくユーザコードでクラスクエリを記述する方法 これは InterSystems FAQ サイトの記事です。 InterSystems製品のクラスクエリにはSQL文を利用する方法と、ユーザコードによる記述が選択できます。 スタジオメニューの [クラス] >[追加] > [クエリ] を選択すると、クエリウィザードが起動します。 画面に、「実装」を選択する項目があり、「このクエリはユーザコードで定義されている」を選択すると SQL文ではなく、ユーザコードによりクエリ定義が行えます。 #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 434
記事 Hiroshi Sato · 2021年8月31日 2m read Linux で InterSystems IRIS をアンインストールするときの注意点 これは InterSystems FAQ サイトの記事です。 Linux上では、以下の手順で InterSystems IRIS (以降IRIS)のインスタンスを削除してください。 (1) アンインストールしたい IRIS のインスタンスを iris stop で停止 # iris stop インスタンス名 (2) 以下のコマンドでインスタンス情報を削除 # iris delete インスタンス名 (3) IRIS のインストールディレクトリを rm コマンドで削除 # rm -r インストールディレクトリ IRISは、インストール先のディレクトリのほかに、以下の(a)(b)も使用しています。 #システム管理 #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 674
記事 Hiroshi Sato · 2021年8月31日 1m read 既存のネームスペースで、Interoperability機能を有効にする方法 これは InterSystems FAQ サイトの記事です。 ネームスペースを作成後にInteroperability機能を有効にするには、%EnsembleMgrクラスのEnableNamespaceメソッドを使用します。 do ##class(%EnsembleMgr).EnableNamespace() #システム管理 #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 216
記事 Mihoko Iijima · 2021年8月31日 5m read ジャーナルファイルが長時間消されずに残ってしまう原因 これは InterSystems FAQ サイトの記事です。 24時間停止しないシステムの場合、「ジャーナルファイルの削除設定」に合わせて 0時30分 に古いジャーナルファイルを削除します。 「ジャーナルファイルの削除設定」より古いジャーナルファイルが残っている原因として、オープンされたままのトランザクションが存在していることが考えられます。 その場合、トランザクション実行中プロセスを探し、トランザクションを確定させることでジャーナルファイルを削除できるようになります。 以下のサンプルは、オープンされたままのトランザクションの存在確認と、存在する場合は対象ファイル名とジャーナルレコード情報が出力されます。 (サンプルは、https://github.com/Intersystems-jp/CheckOpenTransaction からダウンロードできます) #システム管理 #ジャーナリング #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 290
記事 Hiroshi Sato · 2021年8月30日 1m read 【IRIS】サーバーを移行する際にコピーが必要な設定情報 これは InterSystems FAQ サイトの記事です。 何らかの理由でサーバー移行が必要になった際に、移行前の環境から移行後の環境に設定情報をコピーすることで設定作業を軽減できます。 以下の設定情報を移行できます。 iris.cpf SQLゲートウェイ設定 Webゲートウェイ設定 *注1 IRISSYSデータベースに保存しているユーザー作成ルーチンなど *注2 セキュリティ設定 タスク設定 注1 パスワードを設定している場合には、パスワードのみ手動で再設定が必要です。注2 ^%ZSTART, ^ZMIRRORルーチンなど 優先接続サーバー設定に関しても、物理的には移行可能ですが、Windowsのレジストリー情報をコピーする必要があります。 #システム管理 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 269
記事 Mihoko Iijima · 2021年8月30日 2m read クエリをチューニングする方法 これは InterSystems FAQ サイトの記事です。 InterSystems 製品には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる「テーブルチューニング機能」があります。 設定方法は、以下のドキュメントをご参照ください。 テーブルのチューニングについて【IRIS】 テーブルのチューニングについて ターミナルでは次のコマンドを実行します。 Do $system.SQL.TuneTable("<テーブル名>",0,1) また、以下の資料もご参照ください。 1) パフォーマンス調査の基礎知識として必要なグローバル構造の解説やSQLの動作の仕組みからクエリプランの見方の解説 インターシステムズ・シンポジア2011の資料 2) パフォーマンスチューニングの例(P13~) インターシステムズ・シンポジア2012の資料 3) ビットマップ・インデックスの圧縮やオプティマイザ・ヒントなど、Caché SQLのパフォーマンスを最大限に引き出すための情報について インターシステムズ・シンポジア2014の資料 4) パフォーマンスに困ったときにどこに着目し、どのツールで調べていくか、お客様から日々ご相談をいただくカスタマーサポートから、解決に向かうアプローチの「イロハ」をご紹介するビデオ 動画:Performance 101 5) 開発者コミュティのパフォーマンス関連情報(performanceタグ) performanceタグ #SQL #パフォーマンス #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 381
記事 Megumi Kakechi · 2021年8月25日 2m read リレーションシップの処理中に大量メモリが使用されてしまう場合の対処法について これは InterSystems FAQ サイトの記事です。 リレーションシップが設定されており 1対n の n が多量の場合、そのリレーションシップの順次処理などで大量のメモリ消費となるケースがあります。 プログラムの中で多側オブジェクトを参照し内部的にスウィズル処理した後には、そのOREFを含む変数の解放(削除、他の値の設定など)だけでは、その多側オブジェクトとリレーションシップオブジェクトが解放されないことが原因です。 それらを完全にメモリから解放するためには、OREF変数の解放とRelationshipオブジェクトの%UnSwizzleAt<%Library.RelationshipObject >メソッドの実行による明示的なメモリ解放が必要です。 - 使用例 - #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 6 0 289
記事 Megumi Kakechi · 2021年8月26日 2m read クラス定義のコンパイルで、「エラー #5368:クラス名 のオブジェクトが、1プロセスでインスタンス化されています。」のエラーが出ます これは InterSystems FAQ サイトの記事です。 こちらは、コンパイル時に既にそのクラスのインスタンスを開いている場合に起こるエラーです。 対処方としては以下の2つの方法があります。 インスタンスを開いているプロセスまたはアプリケーションを終了する スタジオのビルドメニュのコンパイルオプション:コンパイルフラグ “使用中のクラスをコンパイル” をチェックしコンパイルを行う インスタンス化しているプロセスを特定したい場合は、以下のサンプルルーチンをお試しください。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 193
お知らせ Mihoko Iijima · 2021年8月26日 テクノロジーボーナス詳細:InterSystems IRIS Analytics コンテスト 2021 開発者の皆さん、こんにちは! InterSystems Analytics コンテストのテクノロジーボーナスが発表されました! Adaptive Analytics (AtScale) キューブの使用- 4 ポイントInterSystems Adaptive Analytics では、分析ソリューションに AtScale キューブを作成して使用するオプションを提供しています。 今回、コンテスト用に準備した AtScale サーバ(URLと認証情報は Discord チャンネルで確認できます)にあるキューブを使用するか、JDBC 経由で IRIS サーバに接続し、新しいキューブを作成することもできます。 AtScale を使用した Analytics ソリューションの可視化レイヤでは、Tableau、PowerBI、Excel、Logi を利用することができます。 Adaptive Analytics のドキュメント/AtScale documentation オンラインラーニング(InterSystems IRIS Adaptive Analytics Essentials) #Adaptive Analytics #コンテスト #分析 #InterSystems IRIS #InterSystems IRIS BI (DeepSee) 0 0 0 91
記事 Hiroshi Sato · 2021年8月24日 2m read 【IRIS】JavaからInterSystemsIRISにアクセスするサンプル これは InterSystems FAQ サイトの記事です。インターシステムズでは、お客様のペースで学ぶことができる柔軟でユーザセントリックな教育サービスを提供しています。ラーン&プレイ InterSystems オンラインラーニングにご登録いただくと、Java から InterSystems IRISにアクセスする様々なサンプルをご利用いただけます。 Java のサンプルは、オンラインラーニングの以下のページでご紹介しています(英語のみ)。Welcome to the Java QuickStart! #Java #JDBC #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 263
記事 Toshihiko Minamoto · 2021年8月24日 8m read AWS Lambda の IRIS Python Native API IRIS ソリューションを Amazon Web Services エコシステム、サーバーレスアプリケーション、または boto3 を使用した Python スクリプトにスムーズに統合する方法を探している場合は、IRIS Python Native API を使用するのが最適です。 IRIS で何かを取得したり設定したりしてアプリケーションに素晴らしい機能を備える必要があるまで、本番の実装を大々的に構築する必要はありません。したがって、誰かにとって重要なものまたはあなた以外にはまったく重要でないもの(これも同じくらい重要なことです)を構築できるようにこの記事が役に立てればと思います。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 363
記事 Mihoko Iijima · 2021年8月23日 1m read 管理ポータルの InterSystems IRIS Business Intelligence 用メニュー:Analytics(または DeepSee)関連ページを開くとエラーになる場合の対処方法 これは InterSystems FAQ サイトの記事です。 InterSystems IRIS Business Intelligence 用メニューの Analytics(または DeepSee)を使用するためには、使用するネームスペース用ウェブアプリケーションパスを Analytics(またはDeepSee)に対応するように設定変更する必要があります。 詳細については以下のドキュメントをご参照ください。 【IRIS】InterSystems IRIS Business Intelligence の Web アプリケーション設定について 【2015.1~2018.1】DeepSee の Web アプリケーション設定について 【~2014.1】%CSPページへのアプリケーション・アクセスの制御について/特殊なケース: DeepSee #ヒントとコツ #分析 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 133
記事 Mihoko Iijima · 2021年8月23日 4m read データベースファイルのサイズを圧縮する方法 これは InterSystems FAQ サイトの記事です。 ※データベースファイルとは、IRIS.DAT、および、CACHE.DATのことを指します。 Caché/Ensemble 2018.1.4、IRIS 2019.1.2/2020.1.0 以降のバージョンより、データベースファイル のサイズの縮小に、データベースの「圧縮」と「未使用領域の削除」機能をあわせて使用できます。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 1.1K
記事 Toshihiko Minamoto · 2021年8月18日 13m read InterSystems IRISで階層型データを使用するためのPHPモジュール PHP はその公開当初から、多くのライブラリや市場に出回っているほぼすべてのデータベースとの統合をサポートしていることでよく知られています(またそのことで批判を受けてもいます)。 にもかかわらず、何らかの不可解な理由により、グローバル変数については階層型データベースをサポートしませんでした。 グローバル変数は階層情報を格納するための構造です。 Key-Value型データベースにある程度似ていますが、キーを次のようにマルチレベルにできるという点で異なっています。 #API #Code Snippet #SOAP #キーバリュー #クラウド #Caché #InterSystems IRIS #InterSystems IRIS for Health #Open Exchange #その他 Open Exchange app 0 0 0 213
記事 Makiko Kokubun · 2021年8月18日 1m read 動画:InterSystems IRIS データプラットフォーム概要 *この動画は、2021年2月5日に開催したウェビナーのアーカイブです。 InterSystems IRIS data platform は、拡張性に優れ、相互運用性、分析機能を備えたアプリケーション開発のためのデータプラットフォームです。この動画では、これからインターシステムズのデータプラットフォーム製品をお使いになる開発者の方を対象に、その特徴を20分でご紹介します。 https://www.youtube.com/embed/SqPfBDqps8I[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。] このような方を対象としています。 #Webセミナー #初心者 #InterSystems IRIS 1 0 0 123
質問 Yuji Ohata · 2021年8月17日 $SYSTEM.OBJ.ImportDir()利用時のSourceControlの利用について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 スタジオ以外でSourceControlを利用されている方がいれば教えてください。 現在SourceControlを用いて、コンパイル前に自動コードレビュー(静的解析)を行うような仕組みを構築しております。実際にスタジオやVSCodeでの保存時には、上記の仕組みが動作しソースチェックが行われるのですが、clsの一括取り込みを行おうと『$SYSTEM.OBJ.ImportDir()』を実行した際にはSourceControlが動作していないように見えております。 以下のような形でメソッド実行しているのですが、オプション等の不備になるのでしょうか? > Do $SYSTEM.OBJ.ImportDir("ファイルが存在するパス","*.cls;*.mac;*.int;*.inc;*.dfi","ck",,1) #ObjectScript #InterSystems IRIS 0 2 0 198
お知らせ Mihoko Iijima · 2021年8月12日 InterSystems IRIS Analytics コンテスト開催します! 開発者の皆さん、こんにちは! 次回開催の InterSystems オンラインプログラミングコンテストについてご案内します! 🏆 InterSystems IRIS Analytics Contest 🏆 応募期間は 2021年8月23日~9月5日 です! 💰 賞金総額: $8,750 💰 (投票期間は 2021年9月6日~9月12日、勝者発表は 9月13日を予定しています) コンテスト専用ページ(https://contest.intersystems.com)もできました! #イベント #コンテスト #分析 #InterSystems IRIS #IRIS contest #Open Exchange 0 1 0 162