記事 Hiroshi Sato · 2022年3月23日 2m read 現在使っているリレーショナルデータベースからInterSystems IRIS Data Platformに移行することは可能ですか? 質問 現在使っているリレーショナルデータベースからInterSystems IRIS Data Platformに移行することは可能ですか? 答え InterSystems IRIS Data Platform(以下IRISと表記)は、SQLをサポートしていますので、多くの場合リレーショナルデータベースで構築されたアプリケーションは、大部分のコードを変更することなくIRISに移行することができます。 ただしSQLの各実装毎にSQL標準を拡張した仕様等があり、それにIRISが全て対応していませんので、コードの書き換えが必要なケースもあります。 また各実装が独自に用意した標準でない通信系API等にも対応していませんので、その場合にはJDBC、ODBCなどの標準的な通信APIに置き換える必要があり、かなり書き換えが必要になります。(使用されているSQL文等はそのまま流用可能な場合が多いです。) さらにそのままコードを移行できるケースであっても動作保証はできませんので、必ず動作確認のためのテスト作業は必要になります。 #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 95
記事 Mihoko Iijima · 2021年3月9日 3m read アプリケーションエラー(^ERRORS)をコマンドで取得する方法 これは InterSystems FAQ サイトの記事です。 SYS.ApplicationError クラスの ErrorList クエリを使用します。 注意1:%SYS ネームスペースで実行します。 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 95
記事 Toshihiko Minamoto · 2021年3月22日 5m read Outlier Selectivity (外れ値の選択性) について Caché 2013.1 より、InterSystems は特殊な値を持つフィールドが使われるクエリプランのセレクションを改善する目的で Outlier Selectivity (外れ値の選択性) を導入しました。 この記事では、「Project」テーブルを例に使い、Outlier Selectivity の概要やそれが SQL のパフォーマンスを向上させる仕組み、またクエリを書く際の注意点などについて解説したいと思います。 Selectivity (選択性) まずは、Selectivity についてさっと説明します。 Selectivity とは、テーブル内の 1 つの列の中にある値に関するメタ情報のことです。 データが典型的なかたちで分布されていると想定した場合、「このテーブル内のこの列に特定の値を持つすべての行を要求するとしたら、通常取得できるのはテーブル内のどの程度の割合であろうか?」という疑問の答えとなる情報です。 #SQL #Caché 0 0 0 93
記事 Toshihiko Minamoto · 2024年2月7日 2m read Postman で Newman テストを作成する方法 コミュニティの皆さん、こんにちは! 私の IRIS Api Tester というアプリで使用する Postman コレクションのテストを作成する方法を説明します。 Newman とは? Newman は、Postman コレクションを拡張可能な方法で自動的に実行できるコマンドラインツールです。 Newman でテストを作成することで、API エンドポイントの信頼性と正確性を確実にすることができます。 この記事では、Postman で Newman のテストを作成する方法と開始に役立つ実用的な例を紹介します。 Postman コレクションを作成したら: テストスクリプトを書き始めることができます。 #API #REST API #テスト #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 2 0 0 92
記事 Toshihiko Minamoto · 2021年12月15日 2m read Ensemble とFile Outbound Adapter - ちょっとしたヒント あるお客様の問題から、この短い記事を書くことにしました。 お客様はEnsembleを使用して、多数のシステムを統合しています。一部のシステムではプレーンファイルのみが使用されています。 そのため、ターゲットファイルへの書き込みには、自然とFile Outbound Adapter を選択しました。 数年もの間すべてが順調に稼働していましたが、最近になって、ファイルに書き込まれるデータが数十メガバイトという大きなサイズに達するようになり問題が出てきました。オペレーションが完了するまでに約30分かかるようになり、プロセス内の後続の処理を待たせなければならないタイミングの問題が発生し始めたのです。当然、連携先のシステムはそれほど長く待つことを良しとしません。 お客様のコードは、以下の疑似コードのようなものでした。 #ヒントとコツ #ビジネスオペレーション #Ensemble 1 0 0 91
記事 Makiko Kokubun · 2021年7月14日 1m read 動画:KubernetesでのIRISの運用とそれを支える仕組み *この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 本動画では、コンテナを開発・デモ環境で使用されている方を対象に、プロダクション環境をコンテナで運用することを目的として Kubernetes の基本及び IRIS data platform の運用を支える仕組みをデモを交えながらご紹介します。 https://www.youtube.com/embed/yKX8wB9d2cs[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。] #Kubernetes #Webセミナー #InterSystems IRIS 0 0 0 91
記事 Toshihiko Minamoto · 2021年4月12日 24m read アトミックでない属性のインデックス作成 (1NF/2NF/3NF)露 からの引用 行と列で特定される位置には、それぞれアプリケーションドメインの値が 1 つだけあります (それ以外は何もない)。 その目的によって、同じ値がアトミックであったり、なかったりします。 例えば、「4286」という値は、 「クレジットカードの PIN コード」を意味するのであれば、アトミックとなります (破損している場合や並び替えられている場合は、使用できません)。 単に「連続する番号」であれば、非アトミックとなります (いくつかに分割されていたり、並び替えられていても、値は意味を成します)。 この記事では、文字列や日付、($LB 形式の) 単純なリスト、「list of <...>」、「array of <...>」といったフィールドの型を伴う SQL クエリのパフォーマンスを向上させる標準的な方法にして検証します。 #ObjectScript #SQL #インデックス付け #オブジェクトデータモデル #パフォーマンス #Caché 0 1 0 90
記事 Hiroshi Sato · 2022年7月20日 2m read IRISの開始/停止の状態をファイルに出力する方法 irisコマンドのqlistまたはlistを使用して出力先をファイルにして出力することができます。 qlistの結果は、^を区切り文字としたテキスト形式で出力されます。 ^で区切られた3番目の部分に稼働状況のデータがあります。 $ iris qlist IRIS > iris.log $ cat iris.log IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris listの場合には、先頭にstatus:と表示された行に稼働状況のデータがあります。 Unix系のOSの場合 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 90
記事 Toshihiko Minamoto · 2021年5月20日 9m read DeepSee: データベース、ネームスペース、マッピング(5/5) 以下の記事は、この連載の締めくくりとして、完全に柔軟なアーキテクチャの例で確認されたすべてのデータベースのリストを掲載しています。 #マッピング #チュートリアル #デプロイ #データベース #分析 #初心者 #InterSystems IRIS BI (DeepSee) 0 0 0 90
記事 Mihoko Iijima · 2023年6月13日 1m read プロダクションをリセットする方法、インバウンドアダプタが持つ情報をリセットする方法 これは InterSystems FAQ サイトの記事です。 注意:本番環境では実行しないでください。テスト環境でご利用ください。 開発時にプロダクションに残っているキューを一括でクリアしたり、プロダクションに関連した一次的な情報をすべて消去したい場合、以下メソッドを利用して実行中のプロダクション情報をリセットできます。 #ヒントとコツ #相互運用性 #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 90
記事 Toshihiko Minamoto · 2023年2月16日 2m read Pythonの使用例として、リクエストをExcelファイルに書き出すためのモジュール 長い間、私たちはクエリの結果をExcelスプレッドシートにエクスポートするユーティリティを使用してきました。 さらに、このユーティリティの修正版を適用し、この修正版では、列のフォーマットを明示的に設定することが プライオリティとなっています。 このユーティリティは %SYS.ZENReportExcelExporter というモジュールを使用し、java プログラムをベースにしています。毎年、レポートが大きくなり、十分なJava RAMがなかったので、環境変数の値を増やさなければなりませんでした。その値が7GBに達し、今、問題になっています。 #Python #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 90
記事 Mihoko Iijima · 2021年7月5日 1m read Extent クエリの結果が ID 順にならないわけ これは InterSystems FAQ サイトの記事です。 %Persistent クラスに既定で生成される Extent クエリは、ID 順に結果セットを出力することを意図していませんので、これは、仕様通りの動きとなります。 並び順は、設定されているインデックスにより、変わることがあります。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #iKnow #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 90
記事 Tomoko Furuzono · 2023年4月11日 2m read マッピングしたグローバルのエクスポートについて これは、InterSystems FAQサイトの記事です。%Library.GlobalクラスのExport()メソッドを使用してエクスポートする際に、エクスポート形式(第4引数:OutputFormat)を 7 の「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」にした場合、マッピングされたグローバルはエクスポートできない仕様となっています(対象はネームスペースのデフォルトグローバルデータベースのグローバルのみ)。マッピングされたグローバルを「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」でエクスポートする為には、%Library.Global.Export()の第1パラメータにマッピング先のデータベースディレクトリを指定します。実行例は以下の通りです。 #グローバル #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 90
記事 Mihoko Iijima · 2024年1月25日 6m read プライベートWebサーバ(PWS)を使用しないバージョンのコンテナ版IRIS利用時のWebサーバ設定例 この記事は、「プライベートWebサーバ(PWS)を使用しないバージョンの新規インストール/アップグレード:概要」の続きの記事で、コンテナ版IRISを利用する場合のWebサーバ設定例をご紹介します。(先に「概要」の記事をお読みいただくことをお勧めします。) バージョン2023.2以降のコンテナ版IRISを利用する場合、以下いずれかの方法で管理ポータルを含めたWebアクセスを行うための設定が必要です。 任意の場所にWebサーバを用意する Webゲートウェイ用コンテナを利用する この記事では、【Webゲートウェイ用コンテナを利用する】方法についてご紹介します。 #Docker #Web Gateway #コンテナ化 #システム管理 #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 89
バージョン2023.2以降のコンテナ版IRISを利用する場合、以下いずれかの方法で管理ポータルを含めたWebアクセスを行うための設定が必要です。 任意の場所にWebサーバを用意する Webゲートウェイ用コンテナを利用する この記事では、【Webゲートウェイ用コンテナを利用する】方法についてご紹介します。
記事 Toshihiko Minamoto · 2023年9月20日 14m read ユニットテスト: ObjectScript コードの品質 主流となっているソフトウェア開発手法では、必ずテスト専用の項目が用意されています。 これは、デリバリーの品質を持続的に達成する上では欠かせないアプローチです。 テストには、以下の 2 種類があります。 #テスト #InterSystems IRIS Open Exchange app 1 0 0 88
記事 Toshihiko Minamoto · 2020年11月18日 1m read 開発者コミュニティでの記事の検索方法 皆さん、こんにちは。開発コミュニティでの検索方法について説明します。 開発コミュニティのページで検索される場合は以下の赤枠の虫眼鏡マークをクリックします。 すると、以下のようにテキストボックスのみ浮かび上がりますので、検索したい文字列を入力します。 #開発者コミュニティのよくある質問 #開発者コミュニティ公式 0 0 0 88
記事 Hiroshi Sato · 2022年8月8日 1m read コンソールログにメッセージを書く方法 これは InterSystems FAQ サイトの記事です。 コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。 以下に例を示します。 %SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)1 WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 88
記事 Toshihiko Minamoto · 2021年4月15日 3m read odt ドキュメントと docx ドキュメントをテンプレートから作成するためのツール 皆さん、こんにちは! 皆さんに私のプロジェクトをご紹介したいと思います。 #Caché Open Exchange app 0 0 0 88
記事 Toshihiko Minamoto · 2021年9月23日 10m read データジャングルの視覚化 -- パート1: グラフを作成しよう この記事は、視覚化ツールと時系列データの分析を説明する連載の最初の記事です。 当然ながら、Caché製品ファミリーから収集できるパフォーマンス関連のデータを見ることに焦点を当てますが、 説明の途中で、他の内容についても解説していきます。 まずは、Pythonとそのエコシステムで提供されているライブラリ/ツールを探りましょう。 この連載は、Murrayが投稿したCachéのパフォーマンスと監視に関する優れた連載(こちらから参照)、より具体的にはこちらの記事と密接に関係しています。 免責事項1: 確認しているデータの解釈について話すつもりですが、それを詳しく話すと実際の目標から外れてしまう可能性があります。 そのため、Murrayの連載を先に読んで、主題の基本的な理解を得ておくことを強くお勧めします。 #Python #オブジェクトデータモデル #ツール #ビッグデータ #視覚化 #Caché 1 0 0 87
記事 Mihoko Iijima · 2023年9月13日 3m read Quick sample:データベース作成チュートリアル(過去のコンテスト投稿記事のご紹介) この記事では、2023年3月1日~31日の期間に開催された「技術文書ライティングコンテスト:InterSystems IRISチュートリアル」に応募された24作品の中から、Heloisa Paivaさんが投稿されたシンプルですぐに試せる記事をご紹介します。 はじめに このチュートリアルは、テストやチュートリアル用のサンプル作成など、あらゆる目的でサンプルデータベースを作成するための、私が見つけた最も簡単な方法についての簡単なチュートリアルです。 ネームスペースの作成 ターミナルを開きます。 次のコマンドを実行します。 "Do $SYSTEM.SQL.Shell()" (※または :sql の入力でもSQLシェルに切り替えできます) "CREATE DATABASE " コマンドを実行します。実行時、作成したいネームスペース名をコマンドの引数に指定します。(TESTネームスペースを作成する例:CREATE DATABASE TEST) これで、管理ポータルから新しいネームスペースを作成するより簡単で素早い方法でネームスペースを作成できます。 #Innovatium #SQL #チュートリアル #InterSystems IRIS 1 0 0 87
記事 Toshihiko Minamoto · 2023年1月24日 4m read ZPM簡単実装クックブック ZPM は、InterSystems IRIS データプラットフォーム用のアプリケーションやモジュールと連携するように設計されています。モジュールを管理するためのCLIであるZPN Clientと、モジュールやメタ情報のデータベースであるThe Registryの2つのコンポーネントで構成されています。ZPM を使用して、モジュールの検索、インストール、アップグレード、削除、公開を行うことができます。ZPMを使用すると、ObjectScriptクラス、フロントエンドアプリケーション、Interoperabilityプロダクション、IRIS BIソリューション、IRISデータセット、またはEmbedded Pythonホイールなどのあらゆるファイルをインストールできます。 今日、このクックブックは3つのセクションについて説明します。 ZPMのインストール モジュールの作成 Registry内のモジュールの検索、インストール、公開 #InterSystems Package Manager (IPM) #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 87
記事 Hiroshi Sato · 2023年12月26日 7m read CSPアプリケーションをReactを使って書き換えるその3 それでは、今回はより具体的にReact開発方法について解説します。ショップデモのリポジトリの配下にreactというディレクトリがあります。 この下にReactのコードがあります。 ここのreact-setup.mdに記載されている通り、前準備としてreactのテンプレートを作ります。 npx create-react-app shopdemo --template typescript あとはこのReactプロジェクトを動かすためのライブラリのインストールを行います。 詳細は、react-setup.mdに書いてあります。 まず3つのディレクトリがあって、これは絶対こうしなければならないというものでもないのですが、基本的なお作法として用意するのが一般的なようです。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 87
記事 Toshihiko Minamoto · 2022年3月29日 3m read Apache Zeppelin + IRIS のクイックスタート Apache Zeppelin は以下を行えるようにする多目的ノートブックです。 データの取り込み データ検出 データ分析 データの可視化とコラボレーション Apache Zeppelin インタープリターの概念に基づき、あらゆる言語/データ処理バックエンドを Zeppelin にプラグインすることができます。 現在、Apache Zeppelin は、Apache Spark、Apache Flink、Python、R、JDBC、Markcown、およびシェルなど、多くのインタープリターに対応しています。 データの洞察を得るための安全な環境を得られます。 Zeppelin のハイライト機能は、JDBC と Spark IRIS のネイティブコネクタを使用して利用することができます。 これは、あなたを軌道に乗せるためのクイックスタートガイドです。 #InterSystems IRIS 0 0 0 86
記事 Mihoko Iijima · 2021年7月5日 1m read データベースの暗号化の仕組み これは InterSystems FAQ サイトの記事です。 バージョン5.1以降、データベース単位に暗号化する仕組みが用意されています。 InterSystems data platform のデータベース暗号化は物理ブロックレベルの暗号化ですので、暗号化のオーバヘッドが非常に少なく、性能への影響が極小化されており、暗号化されている項目のインデックス化に制限等がありません。 関連記事もご参照ください。 データベースの暗号化手順について #ヒントとコツ #暗号化 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 86
記事 Megumi Kakechi · 2023年8月31日 4m read 凍結プラン(Frozen Plan)について IRISをアップグレードすると、SQLクエリオプティマイザの機能向上により、旧バージョンとは異なるクエリプランによるクエリ実行コード(クエリキャッシュ)が作成される場合があります。ほとんどの場合はパフォーマンスが向上するのですが、稀にパフォーマンスが低下するケースもあります。 ・アップグレードによりオプティマイザが改善しているとはいえ、中には遅くなるクエリがあるのではないか?・予期しないSQLの問題が起きるのではないか?・アップグレード後に全てのクエリパターンをテストするには時間と労力がかかりすぎる このように、機能向上よりも安定性を優先して「今までのプランのまま実行したい」というご要望もあることでしょう。こちらの記事では、そのようなお客様への解決策をご案内します。 #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 86
記事 Mihoko Iijima · 2023年2月19日 14m read OpenAPI-Suite(OpenAPI 3.0からObjectScriptコードを生成するためのツールセット):InterSystemsデベロッパーツールコンテスト2023入賞作品のご紹介 開発者の皆さん、こんにちは! InterSystems デベロッパーツールコンテスト2023 の21の応募作品の中から、Experts Nomination 第3位に輝いた @Lorenzo Scalese さんの OpenAPI-Suite(OpenAPI3.0 からObjectScriptコードを生成するためのツールセット)についてご紹介します。 #REST API #開発環境 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 85
記事 Mihoko Iijima · 2023年5月26日 6m read IRISジャーナル(z圧縮済み)をCachéにリストアする方法 これは InterSystems FAQ サイトの記事です。 IRISではジャーナルファイルが自動的に圧縮される仕組みが導入されています。 ジャーナルファイルの圧縮機能について詳しくは、別の記事「ジャーナル圧縮機能について」をご参照ください。 例えば、CachéからIRISへ移行された後に、念のためIRISで更新されたデータを手動でCachéにも反映させたいことばある場合に、IRISのジャーナルファイルをCachéにリストアすることができます。 手順は以下の通りです。 (手順1) IRISのジャーナルファイル(YYYYMMDD.nnnz) ファイルを解凍する(手順2,3) 解凍した ジャーナルファイルを Cachéに転送してリストアする リストアの方法として、以下の2パタンをご紹介 #システム管理 #ジャーナリング #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 85
記事 Toshihiko Minamoto · 2023年10月5日 4m read 分析可視化のカスタマイズ: ダッシュボードとウィジェット。 DeepSee Web パート 2 コミュニティの皆さん、こんにちは! DeepSee Web についてのパート 2 では、DSW のカスタマイズオプションについて説明します。 カスタマイズには、ウィジェットのカスタマイズとダッシュボードパネルのカスタマイズの 2 種類があります。 _開発者コミュニティ分析におけるダッシュボードのカスタマイズ例。_ #デプロイ #フロントエンド #分析 #視覚化 #InterSystems IRIS BI (DeepSee) 0 0 0 85
記事 Mihoko Iijima · 2021年2月19日 2m read InterSystems のガベージコレクション機能について(Java のガベージコレクションとの違い) これは InterSystems FAQ サイトの記事です。 Java のガベージコレクションは、使用しなくなったメモリ上のオブジェクトを自動開放するしくみですが、InterSystems data platform(以下IRISと表記)のガベージコレクションは、意味が異なります。 IRIS では、ディスク上の大量のデータノードを 1 コマンド(killコマンド)で削除する機能があります。 通常、データ容量が増えれば、それに伴い、削除に必要な時間が増加しますが、そうすると、そのkillコマンドを発行したプロセスが、削除が終わるのを待つ時間が増加することになってしまいます。 その様な事象の発生を避けるため、IRIS では、ユーザプロセスが大量のデータを削除する kill コマンドを発行した際に、その場で削除に必要な全ての処理を行うのではなく、削除が必要な開始の場所だけを示して、次の処理に進むようになっています。 #Java #システム管理 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 85
記事 Toshihiko Minamoto · 2022年2月22日 14m read InterSystems IRIS で IMAP クライアントを実装する - パート II 最初のパートでは、IMAP プロトコルコマンドについて簡単に説明しました。このパートでは、IRIS を使用してこれらのコマンドを実装し、独自の IMAP クライアントを作成してみましょう! #InterSystems IRIS 0 0 0 85