クリアフィルター
お知らせ
Mihoko Iijima · 2020年11月16日
開発者の皆さん、こんにちは!
第 7 回 IRIS プログラミングコンテストの Interoperability コンテストの投票が始まりました!
これだ!と思う応募作品にぜひ投票お願いします!
投票は、Expert Nomination または Community Nomination のどちらかで行っていただきます。
Experts Nomination
あなたがインターシステムズのプロダクト・マネージャー、InterSystems 開発者コミュニティのモデレーター、またはスペシャリスト・レベル以上のグローバル・マスターであれば、エキスパート推薦(Experts Nomination)に投票してください。
Community Nomination
InterSystems 開発者コミュニティで投稿や返信を行った経験がある場合は、コミュニティ推薦(Community Nomination)で投票してください。
投票は Open Exchange コンテストページで行われ、Open Exchange にサインインする必要があります。
投票期間であれば、一度投票した後も別のアプリケーションへ投票し直すこともできます。
なお、コンテスト参加者は投票週間の間にバグの修正やアプリケーションの改善を行うことができますので、アプリケーションのリリース情報についてもお見逃しなく!(サブスクリプション登録が行えます)
➡️ コンテストの審査・投票ルールはこちらからご確認ください。
お知らせ
Mihoko Iijima · 2020年12月21日
開発者の皆さん、こんにちは。
2020年最後の IRIS プログラミングコンテストの投票が始まりました!🔥 これだ!と思う一押し作品に投票お願いします! 🔥
投票方法は?
今回から投票方法が新しくなりました!Expert Nomination または Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票します。
Community Leaderboard:
順位
ポイト
1位
3点
2位
2点
3位
1点
そして、エキスパートノミネーションからの投票は以下の通りとなりました。
Experts Leaderboard:
エキスパートレベル
順位
1位
2位
3位
GM、モデレーター、プロダクトマネージャーのVIPレベル
9点
6点
3点
グローバルマスターズのエキスパートレベル
6点
4点
2点
グローバルマスターズのスペシャリストレベル
3点
2点
1点
エキスパートリーダーボードの投票はコミュニティリーダーボードにもポイント(1位3点、2位2点、3位1点)が加算されます。
投票方法について
投票は Open Exchange コンテストページで行われ、Open Exchange にサインインする必要があります。
投票期間であれば、一度投票した後も別のアプリケーションへ投票し直すこともできます。
なお、コンテスト参加者は投票週間の間にバグの修正やアプリケーションの改善を行うことができますので、アプリケーションのリリース情報についてもお見逃しなく!(サブスクリプション登録が行えます)
➡️ InterSystems オンラインコンテストの新しい投票ルールについて詳細はこちらをご参照ください。
お知らせ
Mihoko Iijima · 2020年12月28日
開発者の皆さんこんにちは!
第8回 InterSystems IRIS プログラミングコンテスト(Analytics コンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $2,000 は iris-analytics-notebook を開発された @José Roberto Pereira さんに贈られました!
🥈 2位 - $1,000 は website-analyzer を開発された @YURI MARX GOMES さんに贈られました!
🥉 3位 - $500 は iris-analytics-package を開発された @Henrique Gonçalves Dias さんに贈られました!
🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は iris-analytics-package を開発された @Henrique Gonçalves Dias さんに贈られました!
🥈 2位 - $500 は iris-analytics-notebook を開発された @José Roberto Pereira さんに贈られました!
🥉 3位 - $250 は website-analyzer を開発された @YURI MARX GOMES さんに贈られました!
🎊 受賞者の皆様、おめでとうございます!👏
2020年最後の Analytics コンテストにご注目いただきありがとうございます!
さて、次回のコンテストは・・・・・・?
詳細については近日公開予定です!お見逃しなく!
➡️ 詳細はこちらの記事をご参照ください!
お知らせ
Yoichi Miyashita · 2021年4月13日
インターシステムズは InterSystems IRIS および IRIS for Health バージョン2020.4 をリリースしました。本バージョンは、継続的デリバリ(CD) リリースのため、Docker コンテナ として知られる OCI (Open Container Initiative)形式 (for Linux x86-64 および Linux ARM64) のみ入手いただけます。
コンテナイメージは OCI に準拠した Linux x86-64 および Linux ARM64 対応のランタイムエンジンで動作可能です。
あわせて IRIS Studio 2020.4 もリリースしました。
リリースのビルド番号は 2020.4.0.547.0 です。
【新機能のご紹介】InterSystems IRIS Data Platform 2020.4 には、以下の新機能が含まれます。
アプリケーション および インターフェース開発者向け機能
Java SE 11 LTS のサポート (Oracle OpenJDK, AdoptOpenJDK)
JDBC 接続プールのサポート
セグメント化された仮想ドキュメントのルーティングルールに利用できる "foreach" アクションの導入
データベース および システム管理者向け機能
ICM において、System Alerting and Monitoring (SAM) と InterSystems API Manager (IAM) の導入をサポート
管理タスク向け SQL シンタックスの拡張
InterSystems レポートの導入を簡素化
InterSystems IRIS for Health 2020.4 には、上記に加えて、以下の新機能が含まれます。
FHIR プロファイルのサポートを含む、FHIR サポートの強化
IHE プロファイル RMD のサポート
HL7 マイグレーションツールにおける DataGate のサポート
【開発環境】InterSystems IRIS Studio 2020.4 は、Microsoft Windows で動作するスタンドアロンの統合開発環境です。InterSystems IRIS と IRIS for Health 2020.4 以前で動作します。
あわせて InterSystems IRIS は、VSCode-ObjectScript プラグインを利用してVisual Studio Code でのアプリケーション開発もサポートします。Visual Studio Code は Microsoft Windows, Linux, MacOS で動作します。
【キットのご案内】(1) エンタープライズエディションInterSystems コンテナレジストリ (ICR) から、次のコマンドで入手いただけます。 docker pull containers.intersystems.com/intersystems/iris:2020.4.0.547.0 docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.547.0
ICR のイメージ一覧は ドキュメント(英語)をご覧ください。
(2) コミュニティエディションDocker Store から、次のコマンドで 入手いただけます。 docker pull store/intersystems/iris-community:2020.4.0.547.0 docker pull store/intersystems/iris-community-arm64:2020.4.0.547.0 docker pull store/intersystems/irishealth-community:2020.4.0.547.0 docker pull store/intersystems/irishealth-community-arm64:2020.4.0.547.0
上記(1)(2)のコンテナイメージは全て、WRC ダウンロードページのContinuous Delivery カテゴリから TAR 形式で入手いただけます。
(3) Studio, ODBC ドライバ, Web GatewayInterSystems IRIS Studio, ODBC ドライバ および Web Gateway などの各種単体コンポーネントは、WRC ダウンロードページの Components カテゴリから入手いただけます。
【製品ドキュメント】ドキュメント(英語)は以下の通りです。
(1) サポートプラットフォーム
(2) InterSystems IRIS 2020.4
ドキュメント
リリースノート
(3) InterSystems IRIS for Health 2020.4
ドキュメント
リリースノート
お知らせ
Mihoko Iijima · 2021年5月5日
開発者の皆さん、こんにちは!GW は、のんびりゆったり良いお休みになりましたでしょうか🎏?
休み明けにぴったりのコンテストテーマが発表されました!今回は 🔥 FHIR Accelerator 🔥 です!
🏆 InterSystems FHIR Accelerator Programming Contest 🏆
InterSystems FHIR-as-a-service on AWS を使用する、または、InterSystems IRIS FHIR Accelerator を使用したソリューションの開発に役立つアプリケーションを開発し、ご応募ください!
応募期間は 2021年5月10日~5月30日 です!
💰 賞金総額: $8,750 💰
(投票期間は 2021年5月31日~6月6日、勝者発表は 6月7日を予定しています)
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $4,000
🥈 2位 - $2,000
🥉 3位 - $1,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1000
🥈 2位 - $500
🥉 3位 - $250
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
コンテストのスケジュール
5月10日~5月30日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=3週間です。この期間内であればアップロード後も自由に編集できます。)
5月31日~6月6日 投票(1週間)
6月7日 勝者発表(US時間に発表します)
コンテストのテーマ
💡 InterSystems IRIS FHIR Accelerator as a service 💡
InterSystems FHIR-as-a-service on AWS を使用したアプリケーション、または InterSystems IRIS FHIR Accelerator を使用したソリューションの開発に役立つアプリケーションをご応募ください。
アプリケーションの具体例としては
U.S. Core Implementation Guide を含む FHIR R4 をサポートしているアプリケーション
FHIR API をテストでき、理解するために役に立つ開発者用ポータルの提供
API キーや OpenID Connect など、複数の認証方法に対応しているアプリケーション
sFTP 経由で FHIR Bundle の一括インポートが行えるアプリケーション
FHIR リクエストデータのロギングが行えるアプリケーション
HIPAA と GDPR をサポートする ISO 27001:2013 と HITRUST 認証を取得した AWS インフラストラクチャ上に構築したアプリケーション
要件は以下の通りです。
応募対象となるアプリケーション
Open Exchange で新規作成したアプリケーション、または Open Exchange に既にUploadされたアプリケーションであっても大幅に改善されている内容はご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
アプリケーションは、InterSystems IRIS FHIR as a service を使用するあらゆる技術で構築できます。
アプリケーションはオープンソースで、GitHubで公開されている必要があります。
アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。
InterSystems ObjectScript で記述したソースコードがある場合は、(XMLでエクスポートしたファイルではなく)UDL 形式 で提供する必要があります。例
上記要件は、変更される場合もあります。予めご了承ください。
Helpful resources
1. 開発環境テンプレート
近日公開予定です。
2. ドキュメント(英語)
InterSystems IRIS FHIR Accelerator Service
3. InterSystems FHIR を対応しているオンラインコース
Learn FHIR for Software Developers
Building SMART on FHIR Apps with InterSystems FHIR Sandbox
Exploring FHIR Resource APIs
Using InterSystems IRIS for Health to Reduce Readmissions
Connecting Devices to InterSystems IRIS for Health
Monitoring Oxygen Saturation in Infants
同じテーマを利用した日本語による記事もあります(日本語版開発環境テンプレートでは、Bundle リソースで登録できるように改良しています)。詳しくは、「FHIR R4 リソースリポジトリを簡単にお試しいただける開発環境テンプレートのご紹介」をご参照ください。
FHIR Integration QuickStart
日本語による REST クライアントから FHIR R4 リソースリポジトリへアクセスする方法をご紹介するビデオはこちら(日本語)
4. ビデオ
Getting Started with the InterSystems IRIS FHIR Accelerator Service on AWS
(日本語)動画:FHIR+IRIS for Health 101
この動画では、FHIR をご存じない方に向けて FHIR の概要を解説し、日本における FHIR 標準化活動の状況や国内外の事例を紹介しています。後半の16分~くらいからは、InterSystems IRIS for Health が提供する FHIR リポジトリに代表される FHIR 関連機能と、今後の機能ロードマップを紹介しています。
(日本語)FHIR in the Cloud ー FHIR アクセレレータ・サービスのご紹介
FHIR Accelerator Service については動画の10分ごろから解説が始まります。
5. FHIR についての Q&A :
コミュニティの記事については、FHIR タグで探してください。 FHIR tag (US) FHIRタグ(JP)
community.fhir.org へ質問する
6. コンテスト応募方法(このページ末尾のビデオをご参照ください)
審査及び投票ルール
投票ルールは近日公開します。
皆様からの✨素敵な✨プロジェクトをお待ちしております!コミュニティのコーディングマラソンに参加して、優勝を目指しましょう!(ง`0´)ง
❗️ コンテスト規約については、こちらをご参照ください。❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。 InterSystems IRIS FHIR Accelerator Service (FHIRaaS) を AWS で利用するための事前準備についての記事を追加しました!
ぜひご参照ください
お知らせ
Mihoko Iijima · 2021年6月7日
開発者の皆さん、こんにちは!
第12回 InterSystems IRIS プログラミングコンテスト(FHIR Accelerator)への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $4,000 は FHIR Data Studio Connector を開発された @Dmitry Maslennikov さんに贈られました!
🥈 2位 - $2,000 は FHIR Simple Demo Application を開発された @Marcello Correa さんに贈られました!
🥈 3位 - $1,000 は iris-on-fhir を開発された @Henrique Dias さんと @José Roberto Pereira さんに贈られました!
🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は iris-on-fhir を開発された @Henrique Dias さんと @José Roberto Pereira さんに贈られました!
🥈 2位 - $500 は FHIR Data Studio Connector を開発された @Dmitry Maslennikov さんに贈られました!
🥉 3位 - $250 は FHIR Simple Demo Application を開発された @Marcello Correa さんに贈られました!
🎊 受賞者の皆様、おめでとうございます!👏
今回も、コンテストにご注目いただきありがとうございました!
お知らせ
Yoichi Miyashita · 2022年1月31日
インターシステムズは、InterSystems IRIS data platform、InterSystems IRIS for Health、HealthShare Health Connect の バージョン 2021.2 をリリースしました。
【新機能のご紹介】InterSystems IRIS data platform 2021.2 には、以下の新機能が含まれます。
(1) アプリケーション および インターフェース開発者向け機能・Embedded Python・Python を利用した Interoperability プロダクション・Visual Studio Code の ObjectScript 拡張機能・必要最小限のコードで SQL 実行を可能にする、新しいビジネス・サービスおよび ビジネス・オペレーション
(2) 分析 および AI 機能・CSV や JDBC 経由のデータを効率よくロードする新しい SQL LOAD コマンド・Adaptive Analytics の機能強化
(3) クラウド および システム運用者向け機能・InterSystems IRIS アプリケーションからクラウド・サービスへのより簡単な接続や利用を容易にする、新しいクラウド・コネクタ・IKO による Kubernetes リソース管理機能の向上
(4) データベース および システム管理者向け機能・シャードにおける、処理中断を伴わないオンラインでの、ノードをまたいだデータのリバランス・Adaptive SQL エンジンにおける、高速なブロック・サンプリングとテーブル統計の自動収集の利用 および ランタイム情報によるクエリプランの改善・ストリーム および ジャーナルの新しい圧縮機能による、InterSystems IRIS に必要なストレージ容量の削減・システムで提供されているライブラリが使用した TLS 1.3 および OpenSSL 1.1.1 のサポート・キャッシュヒットやファイル読み込みといった、詳細なプロセス統計をレポートする ^TRACE ユーティリティの導入
詳細については、ドキュメント(英語)をご覧ください。
【キットのご案内】InterSystems IRIS 2021.2 は継続的デリバリ(CD) リリースです。CD リリースのメンテナンス・アップデートや SV アップデートは提供していません。CD リリースからのアップグレード・パスは次の CD リリースまたは次の EM リリースになります。
本バージョンでは、Docker コンテナとして知られる OCI 形式に加えて、従来のインストーラ形式のキットもご用意しています。
(1) 従来のインストーラ形式のキットは、WRC ダウンロードページからダウンロードいただけます。(2) コンテナイメージは、InterSystems コンテナレジストリ (ICR) から次のコマンドで入手いただけます。
docker pull containers.intersystems.com/intersystems/iris:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.649.0
ICR のイメージ一覧については、ドキュメント(英語)をご覧ください。
TAR 形式のコンテナイメージは、インストーラ形式のキット同様、WRC ダウンロードページからダウンロードいただけます。
【フィードバックのお願い】新バージョンに関する皆様のご意見をぜひお聞かせください。新しい機能やそれを利用した事例に関するご意見は、弊社アカウント担当 または 開発者コミュニティを通じて、お気軽にお聞かせください。
一部の新機能や製品については、リリース前にユーザの皆様がソフトウェアを評価できるように、アーリーアクセスプログラムを設定しています。これらの取り組みを通して、私たちはターゲットとするユーザーの皆様から学ぶことで、皆様のニーズを満たす製品をリリースすることが可能となります。 プログラムへの参加にご興味のある方は、弊社アカウント担当にご連絡いただくか、開発者コミュニティをご確認ください。
お知らせ
Maki Hashizawa · 2022年2月7日
開発者のみなさん、こんにちは。
インターシステムズジャパンは、3/8(火)~ 3/9日(水)に、オンラインカンファレンス「InterSystems Japan Virtual Summit 2022」を開催致します。
"Innovation in Data - データによるデジタル変革の推進" をテーマに、DX推進に不可欠な健全なデータの提供とデータプラットフォームの最新情報をお届け致します。ご参加をお待ちしております!
⚡️ 現在、事前登録受付中 ⚡️
【InterSystems Japan Virtual Summit 2022 開催概要】
■テーマ:Innovation in Data - データによるデジタル変革の推進
■開催日時:2022年3月8日(火)・9日(水)13:30 - 15:45 (予定)
■開催形式:オンラインライブ配信
■参加:無料(事前登録制)
お申込み・詳細はこちらから
《ゲストスピーカー講演》
「物流業界における真の課題を解決― 運ばない物流を支えるロジスティクス変革システム「Jobs」のご紹介」
株式会社 ビーイングホールディングス 事業開発本部 部長 北川 徹也 様
「情報連携基盤を活用した医療情報二次利用の経験」
岩手医科大学 総合情報センター センター長 田中 良一 様
《技術セッション》
■Embedded Python で広がる InterSystems IRISの世界
■SQLでどこまでできる? ~データロードから機械学習まで~
■オープンソースだけで IRIS on Kubernetesを動かそう
■VSCode、Jenkinsを使用したCICD環境の構築
■FHIR SQL Builder
■ストレージの節約方法について
■ミラーリングを使用したHAおよびDR構成例
皆様のご参加をお待ちしています。
記事
Mihoko Iijima · 2023年2月21日
開発者の皆さん、こんにちは!
開発者向け情報を集めた「Developer Hub」ページが新たに登場しました!
このページには、4種類のチュートリアルが用意されています。チュートリアはブラウザ上で動作し、VSCodeやIRISターミナル、管理ポータルなどチュートリアルで使用するすべての画面が1つのタブ内で開くようになっています。
チュートリアルを試すための事前準備は不要で、クリック1回ですぐにお試しいただけます!(ユーザ登録も不要です)(チュートリアル開始方法は、ページ末尾をご覧ください。)
以下、4種類のチュートリアルの内容をご紹介します。
1) フルスタックチュートリアル
このチュートリアルでは、IRISの管理ポータルを使用してテーブル作成やデータの登録を行ったり、PyODBC経由でSQLを実行してみたり、SQLで登録したデータをオブジェクト操作で修正登録してみたり、サーバ側プログラミングを少し体験したり、RESTサーバの機能をIRISで作成してみたりと、サンプルコードを利用しながら様々な内容をお試しいただけます。
また、作成したRESTサーバの機能を利用して、Vue.jsを使用したオンラインページも作成しています(サンプルの用意があります)。
2) 機械学習の応用
このチュートリアルでは、IRISに組み込まれたAutoML機能である「IntegratedML」をご体験いただけます。
チュートリアルのテーマは「再入院の予測」で、機械学習モデルの作成に必要なサンプルデータもチュートリアルを開始すると用意されます。
SQL文に似たIntegratedML用構文を利用して、モデルの作成、学習、予測、検証を実際に体験することができます。
3) REST + Angular アプリケーション
このチュートリアルでは、IRISだけを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能を作成していく流れを、サンプルコードをコピーしながらご体験いただけます。
4) InterSystems Interoperability(相互運用性)
このチュートリアルでは、Redditに投稿されているデータを定期的にポーリングし、新しい投稿の中からタイトルに「cat」が含まれる投稿のみファイル出力する流れをご体験いただけます。
このチュートリアルを通して、Interoperability(相互運用性)機能の主要なコンポーネントの役割や、提供されているGUIの使い方などをご確認いただけます。
チュートリアルのイメージは以下の通りです。(フルスタックチュートリアルを途中まで進めた状態です)
もしよろしければ、チュートリアルのご意見、ご感想を ディスカッションページ にご記入ください(もちろん、この記事への返信でも大丈夫です!)
ぜひ、お試しください!
お知らせ
Rie Tokue · 2023年2月19日
開発者の皆さん、こんにちは。インターシステムズジャパン、マーケティング担当・徳江です。
弊社では来る3月10日(金)11時~11時45分で、IRIS 2022.3 リリースセミナー(オンライン)を開催いたします。
本セミナーではIntersystems IRIS 2022.2および2022.3の新機能についてSQLに関わる部分を中心に概要をご紹介します。
一番の注目カラムナーは列方向にまとめてデータを扱うことで集計など分析を得意としており、IRISカラムナーの特徴や
ベンチマークテストの結果も含める予定です。この機会に是非ご参加ください。
【開催日時】2023年3月10日(金)11時~11時45分
【開催形式】オンライン
ご登録はこちらから
【アジェンダ】
カラムナー
SQLシンタックスの追加
クラスタの機能追加ほか
【対象者】
IRISに関わる技術者の方
Cachéで開発を行っている方
【以下の方にお勧め】
IRISで管理しているデータの活用をご検討中の方
IRISでの分析性能に課題を抱えている方
記事
Mihoko Iijima · 2020年6月28日
IRIS でのクラス定義の作成、ObjectScript でインスタンスの生成と永続化(保存)の方法について解説します。
もくじ
最初~1:55 前回のビデオの学習
1:55~2:45 今回の説明内容解説
2:45~5:15 クラスの種類について
5:15~13:20 作成するクラスの説明、定義説明
13:20~18:44 スタジオでの作成実演
18:44~22:35 VS Codeでの作成実演
22:35~27:40 ObjectScriptでインスタンス生成
27:40~29:38 インスタンス生成~永続化の実演
29:38~34:54 データの確認
34:54~40:13 マルチモデル(永続クラス=テーブル)の確認
40:13~51:25 JSONとXMLアダプタの操作実演
51:25~57:36 クラスメソッドの定義と実行
57:36~最後まで まとめ
※ YouTubeでご覧いただくと「もくじ」の秒数クリックでビデオをジャンプできます。
その他ビデオ一覧は索引ページをご参照ください。
クラス定義例
/// PersonクラスClass Test.Person Extends %Persistent{
/// 名前Property Name As %Library.String;
/// メールProperty Email As %Library.String;
ClassMethod CreateEmail(account As %String) As %String{ if $get(account)=""{ return "" } return account_"@mail.com"}
インスタンス生成~保存までの実行例
インスタンス生成(Test.Personに継承された%New()メソッドを使用)
set person=##class(Test.Person).%New()
プロパティに値を割り当てる(文字列は二重引用符で括ります)
set person.Name=”テスト太郎”set person.Email=”taro@mail.com”
データベースに保存(Test.Personに継承された%Save()メソッドを使用)
set status=person.%Save()
保存が成功したかどうかの確認(成功すると 1を返し、失敗すると内部文字列を返します)
write status
保存失敗時のメッセージ確認(システムオブジェクトのStatusクラスを利用します)
write $system.Status.GetErrorText(status)
CreateEmail()の実行
戻り値がある場合
set modori=##class(Test.Person).CreateEmail("abc")
戻り値がない場合
do modori=##class(Test.Person).CreateEmail("abc")
グローバル変数を直接操作する例
ID=1の Test.Person の名前(Name)とメール(Email)を出力
write $LIST(^Test.PersonD(1),2)write $LIST(^Test.PersonD(1),3)
ID=1 の Test.Person の名前(Name)を更新
set $LIST(^Test.PersonD(1),2)="やまだたろう"
JSONアダプタの利用例
Test.Person クラスのスーパークラスに %JSON.Adapter クラスを追加する例(追加後、コンパイルが必要です)
Class Test.Person Extends (%Persistent, %JSON.Adaptor)
JSONオブジェクトを作成し、JSON アダプタを利用して Test.Person の新規インスタンス生成する例
set json={} set json.Name="すずき",json.Email="suzuki@mail.com"set p=##class(Test.Person).%New()set st=p.%JSONImport(json)
既存オブジェクトをオープンし(例ではID=1をオープン)JSON文字列に変換
set p=##class(Test.Person).%OpenId(1)set st=p.%JSONExportToString(.moji)write moji
XMLアダプタの使用例
Test.Person クラスのスーパークラスに %XML.Adapter クラスを追加する例(追加後、コンパイルが必要です)
Class Test.Person Extends (%Persistent, %XML.Adaptor)
既存オブジェクトをオープンし(例ではID=1をオープン)XMLに変換
set p=##class(Test.Person).%OpenId(1)set writer=##class(%XML.Writer).%New()set writer.Indent=1set st=writer.RootObject(p)write st // 1が返れば成功
出力された XML を任意のファイル名で保存し、名前やメールアドレスを編集し、今度は IRIS から XML を Read します。
set reader=##class(%XML.Reader).%New()set file="c:\kit\sample.xml"set st=reader.OpenFile(file)write st // 1が返れば成功
読み込んだ XML と Test.Person を関連付けて、Test.Person のインスタンスを生成する
do reader.Correlate("Person","Test.Person")do reader.Next(.obj,.st)zwrite obj
お知らせ
Mihoko Iijima · 2020年7月22日
皆さんこんにちは。
第4回 InterSystems IRIS プログラミングコンテスト(AI/MLコンテスト) への応募は終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
この記事では、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 審査員賞 - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $2,000 は iris-integratedml-monitor-example を開発された José Roberto Pereir さんに贈られました!
🥈 2位 - $1,000 は iris-ml-suite を開発された Renato Banza さんに贈られました!
🥉 3位 - $500 は ESKLP を開発された Aleksandr Kalinin さんに贈られました!
🏆 開発者コミュニティ賞 - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は iris-ml-suite を開発された Renato Banza さんに贈られました!
🥈 2位 - $250 は iris-integratedml-monitor-example を開発された José Roberto Pereir さんに贈られました!
🥈 2位 - $250 は SAPPHIRE を開発された YURI MARX GOMES さんに贈られました!
🎊 受賞者の皆様、おめでとうございます!👏
このエキサイティングなプログラミングコンテストにご注目いただき、また開発いただきありがとうございました!
次回はどんなコンテストでしょう?
InterSystems IRIS プログラミングコンテストシリーズは、開発者の皆様をお待ちしております!
次のコンテストは、まもなく発表されます。コンテスト最新情報のチェックもお忘れなく!
お知らせ
Mihoko Iijima · 2020年10月12日
開発者の皆さんこんにちは!
第6回 InterSystems IRIS プログラミングコンテスト(Full Stackコンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 審査員賞 - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,500 は npm-iris を開発された Henrique Gonçalves Dias さんに贈られました!
🥈 2位 - $1,000 は apptools-admin を開発された Sergey Mikhailenk さんに贈られました!
🥉 3位 - $500 は realworld-intersystems-iris を開発された Dmitriy Maslenniko さんに贈られました!
🏆 開発者コミュニティ賞 - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は npm-iris を開発された Henrique Gonçalves Dias さんに贈られました!
🥈 2位 - $250 は apptools-admin を開発された Sergey Mikhailenk さんに贈られました!
🥈 2位 - $250 は restoreUI を開発された Vasiliy Bondar さんに贈られました!
🎊 受賞者の皆様、おめでとうございます!👏
今回の Full Stack コンテストにご注目いただきありがとうございます!
見事1位🎊に輝きましたエンリケさんより、アプリケーション概要の日本語解説が投稿されています!ありがとうございます!
ぜひ、ご参照ください!
さて、次回のコンテストは・・・・・・?
近日中に発表予定です!ご期待ください! 皆さん、こんにちは!どうもありがとうございました
記事
Tomohiro Iwamoto · 2020年7月16日
この記事ではVMware ESXi 5.5以降の環境にCaché 2015以降を導入する場合の構成、システムのサイジング、およびキャパシティ計画のガイドラインを示します。
ここでは、皆さんがVMware vSphere仮想化プラットフォームについてすでに理解していることを前提としています。 このガイドの推奨事項は特定のハードウェアやサイト固有の実装に特化したものではなく、vSphereの導入を計画して構成するための完全なガイドとして意図されたものでもありません。これは、皆さんが選択可能なベストプラクティス構成をチェックリストにしたものです。 これらの推奨事項は、皆さんの熟練したVMware実装チームが特定のサイトのために評価することを想定しています。
InterSystems データプラットフォームとパフォーマンスに関する他の連載記事のリストはこちらにあります。
注意: 本番データベースインスタンス用のVMメモリを予約し、Cachéに確実にメモリを使用させてデータベースのパフォーマンスに悪影響を与えるスワップやバルーニングの発生を防ぐ必要があることを強調するため、この記事を2017年1月3日に更新しています。 詳細については、以下のメモリセクションを参照してください。
参考情報
この記事に掲載されている情報は経験に基づいており、一般公開されているVMwareナレッジベースの記事やVMwareの各種ドキュメント(VMware vSphereのパフォーマンスのベストプラクティスなど)とCachéの導入要件への対応付けを総括しています。
InterSystemsの製品はESXiでサポートされていますか?
OSが仮想化されている場合を含め、さまざまなプロセッサのタイプとOSに対してInterSystemsの製品を検証およびリリースするのは、InterSystemsのポリシーであり、決まりでもあります。 詳細については、InterSystemsサポートポリシーおよびリリース情報を参照してください。
例えばx86ホスト上のESXiの場合、Caché 2016.1をRed Hat 7.2 OS上で実行することができます。
注意:独自のアプリケーションを作成しない場合は、アプリケーションベンダーのサポートポリシーも確認する必要があります。
サポート対象ハードウェア
VMware仮想化は、最新のサーバーとストレージコンポーネントと合わせて使用した場合に、Cachéでうまく機能します。 VMware仮想化を使用するCachéはお客様のサイトで問題なく導入されており、パフォーマンスとスケーラビリティのベンチマークで実証されています。 適切に構成されたストレージ、ネットワーク、および最新モデルのIntel Xeonプロセッサ(具体的にはIntel Xeon 5500、5600、7500、E7シリーズ、および最新のE5 v4を含むE5シリーズ)を搭載したサーバーでVMware仮想化を実施していれば、パフォーマンスに大きな影響はありません。
通常、CachéとアプリケーションはゲストOSにインストールおよび構成されますが、その方法はベアメタルインストール環境上の同じOSの場合と同じです。
使用されている具体的なサーバーとストレージについてVMwareの互換性ガイドを確認するのはお客様の責任です。
仮想化アーキテクチャ
VMwareは、次のような2つの標準的なCachéアプリケーションの構成で一般的に使用されています。
プライマリ本番データベースのOSインスタンスが「ベアメタル」クラスターにあり、VMwareがWebサーバー、印刷、テスト、トレーニングなどの補助的な本番インスタンスや非本番インスタンスにのみ使用されている構成。
プライマリ本番インスタンスを含むすべてのOSインスタンスが仮想化されている構成。
この記事は両方のシナリオに対応したガイドとして使用できますが、本番を含むすべてのOSインスタンスが仮想化されている2番目のシナリオに焦点を当てています。 次の図は、該当する構成用にセットアップされた典型的な物理サーバーを示しています。
図1. 単純な仮想化されたCachéアーキテクチャ
図1は、VMware HAクラスター内のホストサーバーにN+1の容量と可用性を提供するため、少なくとも3台の物理ホストサーバーを設置している一般的な導入形態を示しています。 リソースをスケーリングするため、追加の物理サーバーをクラスターに追加できます。 バックアップ/復元用メディアの管理や災害復旧のために、追加の物理サーバーが必要になる場合もあります。
VMware vSAN、VMwareのハイパーコンバージドインフラストラクチャソリューションについては、「パート8 - ハイパーコンバージドインフラストラクチャのキャパシティとパフォーマンス計画」を参照してください。 この記事の推奨事項のほとんどはvSANに適用できます。ただし、以下の「ストレージ」セクションにある一部の明らかな違いは除きます。
VMwareのバージョン
以下の表は、Caché2015以降の主な推奨事項を示しています。
vSphereは、vCenterクライアントを介したホストと仮想マシンの集中システム管理を可能にするvCenter Serverを含む製品スイートです。
この記事では「無料」のESXiハイパーバイザーのみのバージョンではなく、vSphereが使用されることを想定しています。
VMwareにはいくつかのライセンスモデルがあります。最終的には、現在および将来のインフラストラクチャ計画に適したモデルに基づいてバージョンを選択する必要があります。
私は普段、ハードウェアをより効率的に使用するための動的リソーススケジューリング(DRS)やストレージアレイ統合(スナップショットのバックアップ)用ストレージAPIなどの追加機能が使える「Enterprise」エディションをお勧めしています。 VMwareのWebサイトには各エディションの比較情報が掲載されています。
vCenter ServerとvSphereのCPUライセンスをバンドルできるAdvanced Kitもあります。 このキットにはアップグレードに制限があるため、通常は成長が予想されない小規模なサイトにのみ推奨されます。
ESXiホストのBIOS設定
ESXiホストは物理サーバーです。 BIOSを構成する前に、次の確認を行う必要があります。
対象サーバーが最新のBIOSを実行していることをハードウェアベンダーに確認すること。
VMware用のサーバー/CPUモデル固有のBIOS設定があるかどうかを確認すること。
サーバーBIOSのデフォルト設定は、VMwareには最適でない場合があります。 物理ホストサーバーを最適化して最高のパフォーマンスを得るため、以下の設定を使用することができます。 ただし、以下の表のすべての設定をあらゆるベンダーのサーバーに適用できるわけではありません。
メモリ
メモリの割り当てについては、以下の重要なルールを考慮する必要があります。
単一の物理ホストで複数のCachéインスタンスやその他のアプリケーションを実行する場合、VMwareには透過的なページ共有(TPS)、バルーニング、スワップ、メモリ圧縮といったメモリ管理を効率化するいくつかのテクノロジーがあります。 例えば同じホストで複数のOSインスタンスが実行されている場合、TPSはメモリ内のページの冗長なコピーを排除することにより、パフォーマンスを低下させることなくメモリのオーバーコミットを可能にします。これにより、物理マシンよりも少ないメモリで仮想マシンを実行できます。
注意: VMwareのこれらの機能やその他多くの機能を利用するには、VMware ToolsをOSにインストールする必要があります。
これらの機能はメモリのオーバーコミットを可能にするために存在しますが、常にすべてのVMのvRAMが使用可能な物理メモリ内に収まるようにサイジングすることから始めることをお勧めします。 実稼働環境ではメモリのオーバーコミットの影響を慎重に検討し、データを収集した後でのみオーバーコミットを実行し、許容できるオーバーコミットの量を判断することが特に重要です。 特定のCachéインスタンスのメモリ共有の有効性と許容可能なオーバーコミットメントの程度を判断するには、ワークロードを実行し、VMwareコマンド(resxtop または esxtopを使用して実際の節約状況を観察してください。
Cachéインスタンスのメモリ要件を計画する際には、この連載の第4回目の記事に戻って参照するのが良いでしょう。 特に、「VMware仮想化に関する考慮事項」セクションでは次の内容を指摘しています。
本番システムにVMwareの予約メモリを設定すること。
共有メモリのスワッピングは避けたい避けるべきであるため、本番データベースVMの予約メモリを、少なくともCaché共有メモリにCachéプロセス、OS、およびカーネルサービス用のメモリを加えたサイズに設定する必要があります。 不確かであれば本番データベースインスタンス用のVMメモリを予約し(100%予約)、Cachéに確実にメモリを使用させてデータベースのパフォーマンスに悪影響を与えるスワップやバルーニングの発生を防いでください。
注意: 大容量のメモリを予約するとvMotionの操作に影響があるため、vMotion/管理ネットワークを設計する際にはこの事を考慮することが重要です。 仮想マシンはターゲットホストに予約したサイズ以上の空き物理メモリがある場合にのみ、ライブマイグレーションまたはVMware HAの機能を備えた別のホストで起動することができます。 これは本番のCaché VMでは特に重要です。 例えば、HAアドミッションコントロールポリシーに特に注意してください。
キャパシティプランニングにより、HAフェイルオーバーが発生した場合にVMを配布できるようにしてください。
非本番環境(テスト、トレーニングなど)ではより積極的にメモリをオーバーコミットできますが、Cachéの共有メモリはオーバーコミットしないでください。代わりに、グローバルバッファを減らすことでCachéインスタンスの共有メモリを制限してください。
現行のIntelプロセッサアーキテクチャには、NUMAトポロジがあります。 各プロセッサには独自のローカルメモリがあり、同じホスト内の他のプロセッサのメモリにアクセスできます。 当然のことながら、ローカルメモリにアクセスした場合はリモートメモリにアクセスする場合よりもレイテンシが低くなります。 CPUの説明については、コメントセクションでNUMAに関する議論が行われている、この連載の3番目の記事をご覧ください。
上記のBIOSセクションで述べたように、最適なパフォーマンスを実現するにはVMのサイズを単一プロセッサのコアとメモリの最大数までに制限するのが得策です。 例えば、キャパシティプランニングにより本番環境で最大のCachéデータベースVMが14個のvCPUと112 GBのメモリを使用することになることが判明した場合、2x E5-2680 v4(14コアプロセッサ)と256 GBのメモリを搭載したサーバーのクラスターが適しているかどうかを検討してください。
理想的には、メモリをNUMAノードに対してローカルに維持できるようにVMのサイズを決定してください。 しかし、これにこだわりすぎる必要はありません。
NUMAノードより大きな「モンスターVM」が必要な場合は、それでもかまいません。VMwareがNUMAを管理して最適なパフォーマンスを実現します。 また、VMを適正化して、必要以上のリソースを割り当てないようにすることも重要です(以下を参照してください)。
CPU
仮想CPUの割り当てについては、次の重要なルールを考慮する必要があります。
本番Cachéシステムのサイジングは、実際の顧客サイトのベンチマークと測定に基づいて行われるべきです。 本番システムには、ベアメタルのCPUコアと同じようにシステムのサイズを最初に決定し、ベストプラクティスに従って仮想CPU(vCPU)を削減できるかどうかを監視する戦略を使用してください。
ハイパースレッディングとキャパシティプランニング
物理サーバーに関するルールに基づいて本番データベースVMのサイジングに着手するには、まず、ハイパースレッディングが有効化された状態でターゲットプロセッサに対する物理サーバーのCPU要件を計算し、それを次のように単純に変換してください。
1つの物理CPU(ハイパースレッディングを含む)= 1つのvCPU(ハイパースレッディングを含む)
ハイパースレッディングによってvCPUキャパシティが2倍になるという誤解が一般的にありますが、 これは、物理サーバーまたは論理vCPUには当てはまりません。 ベアメタルサーバーでハイパースレッディングを使用すると、ハイパースレッディングを使用しない同じサーバーよりもパフォーマンスが30%向上する可能性がありますが、この数値もアプリケーションによって異なる可能性があります。
初期サイジングでは、vCPUが完全な専用のコアを持つことを想定しています。 例えば32コア(2✕16コア)E5-2683 V4サーバーを使用している場合は、利用できるヘッドルームがあることを確認して、最大32vCPUキャパシティの合計になるようにサイジングします。 この構成では、ホストレベルでハイパースレッディングが有効化されていることが前提です。 VMwareは、ホスト上のすべてのアプリケーションとVM間のスケジューリングを管理します。 ピーク処理期間のアプリケーション、OS、およびVMwareのパフォーマンスをしばらく監視したら、より高い整理統合が可能であるかどうかを判断することができます。
ライセンス
vSphereでは、特定の数のソケットまたはコアを持つVMを構成できます。 たとえば、デュアルプロセッサVM(2 vCPU)を使用している場合、2つのCPUソケット、または2つのCPUコアを持つ単一のソケットとして構成することができます。 VMが1つの物理ソケットで実行するのか2つの物理ソケットで実行するのかは、最終的にハイパーバイザーが決定するため、実行の観点からは、大きな違いはありません。 しかし、デュアルCPU VMに実際には2つのソケットではなく2つのコアがあると指定すると、ソフトウェアライセンスに違いが生じる可能性があります。 注意: Cachéライセンスではコア数(スレッド数ではない)が考慮されます。
ストレージ
このセクションの内容は、共有ストレージアレイを使用する従来のストレージモデルに適用されます。 vSANの推奨事項については、「パート8 - ハイパーコンバージドインフラストラクチャのキャパシティとパフォーマンス計画」も参照してください。
ストレージについては、以下の重要なルールを考慮する必要があります。
パフォーマンスを向上させるストレージのサイジング
ストレージのボトルネックは、Cachéシステムのパフォーマンスに影響を与える最も一般的な問題の1つです。これはVMware vSphereの構成についても当てはまります。 最も一般的な問題は、予想される1秒あたりのIOPSをサポートするのに十分な数の物理ディスクを割り当てるのではなく、単にGB容量に合わせてストレージのサイズを決定することです。 VMwareでは同じ物理接続を介してより多くのホストが同じストレージにアクセスできるため、ストレージの問題がさらに深刻になる場合があります。
VMwareストレージの概要
VMwareのストレージ仮想化は、例えば次の3つの層に分類できます。
ストレージアレイは最下層であり、上位層に論理ディスク(ストレージアレイボリュームまたはLUN)として提示される物理ディスクで構成されています。
次の層はvSphereが占有する仮想環境です。 ストレージアレイのLUNはデータストアとしてESXiホストに提示され、VMFSボリュームとしてフォーマットされます。
仮想マシンはデータストア内のファイルで構成され、仮想ディスクはパーティションを切ってファイルシステムで使用できるディスクとしてゲストOSに提供されます。
VMwareは仮想マシンのディスクアクセスを管理するため、VMware仮想マシンファイルシステム(VMFS)とRawデバイスマッピング(RDM)の2つの選択肢を提供していますが、どちらのパフォーマンスもほぼ同じです。 管理を単純化するため、VMwareは一般的にVMFSを推奨していますが、RDMが必要な状況もあるかもしれません。 一般的にはRDMを使用する特別な理由がない限り、VMFSを選択することが推奨されています。VMwareによる新しい開発は、RDMではなくVMFSを対象としています。
仮想マシンファイルシステム(VMFS)
VMFSはVMwareによって開発されたファイルシステムであり、クラスター化された仮想環境(複数のホストから読み取り/書き込みアクセス可能)および大容量ファイルのストレージ専用に最適化されています。 VMFSの構造ではVMファイルを単一のフォルダーに格納できるため、VMの管理が単純化されます。 VMFSは、vMotion、DRS、VMware HAなどのVMwareインフラストラクチャサービスも使用可能にします。
OS、アプリケーション、およびデータは、仮想ディスクファイル(.vmdkファイル)に格納されます。 vmdkファイルはデータストアに格納されます。 単一のVMを複数のデータストアに分散された複数のvmdkファイルで構成することができます。 以下の図の本番VMが示すように、VMには複数のデータストアにまたがるストレージを含めることができます。 本番システムでは、LUNごとに1つのvmdkファイルで最高のパフォーマンスが得られます。非本番システム(テスト、トレーニングなど)では、複数のVMのvmdkファイルがデータストアとLUNを共有できます。
vSphere 5.5の最大VMFSボリュームサイズは64 TB、最大VMDKサイズは62 TBですが、Cachéを導入する場合は別々のディスクグループのLUNにマップされた複数のVMFSボリュームを使用し、IOパターンを分離してパフォーマンスを向上させるのが一般的です。 例えばランダムIOとシーケンシャルIOのディスクグループを分離したり、本番環境のIOと他の環境のIOを分離したりします。
以下の図は、Cachéで使用されるVMware VMFSストレージの例の概要を示しています。
図2. VMFS上のCachéストレージの例
RDM
RDMを使用すると、物理的なSCSIディスクまたはLUNをVMFSファイルとして管理およびアクセスできます。 RDMは物理デバイスのプロキシの代わりに機能するVMFSボリューム上の特別なファイルです。 ほとんどの仮想ディスクストレージにはVMFSが推奨されますが、場合によっては物理ディスクが望ましい場合があります。 RDMはファイバチャネルストレージまたはiSCSIストレージでのみ使用できます。
VMware vStorage APIs for Array Integration(VAAI)
最高のストレージパフォーマンスを得るには、VAAI対応のストレージハードウェアの使用を検討する必要があります。 VAAIは、仮想マシンのプロビジョニングやシンプロビジョニングされた仮想ディスクなど、いくつかの領域でパフォーマンスを向上させることができます。 VAAIは、古いアレイのアレイベンダーからファームウェアアップデートとして入手できる場合があります。
仮想ディスクタイプ
ESXiは複数の仮想ディスクタイプをサポートしています。
シックプロビジョニングでは作成時に容量が割り当てられます。 さらに次のタイプに分かれています。
Eager Zeroed – ドライブ全体に0を書き込みます。 このため、ディスク作成にかかる時間は増えますが、各ブロックへ初めて書き込む場合でも最高のパフォーマンスが得られます。
Lazy Zeroed – 各ブロックへ初めて書き込むときに0を書き込みます。 Lazy Zeroedの場合は作成時間が短くなりますが、ブロックが初めて書き込まれるときのパフォーマンスは低下します。 ただし、それ以降の書き込みはEager-Zeroedシックディスクの場合と同じパフォーマンスになります。
シンプロビジョニングでは書き込み時に容量が割り当てられ、ゼロアウトされます。 書き込みが行われていないファイルブロックへ最初に書き込むときにはI/Oコストが高くなります(Lazy Zeroedのシックディスクの場合と同様)が、それ以降の書き込みでは、シンプロビジョニングされたディスクのパフォーマンスはEager Zeroedのシックディスクと同じです。
どのディスクタイプでも、VAAIはストレージアレイに処理をオフロードすることでパフォーマンスを向上させることができます。一部のアレイはアレイレベルでのシンプロビジョニングもサポートしていますが、シンプロビジョニングされたアレイストレージでESXiのディスクをシンプロビジョニングしないでください。プロビジョニングと管理で競合が発生する可能性があるためです。
その他の注意事項
上記のベストプラクティスのとおり、ベアメタル構成と同じ戦略を使用してください。本番ストレージは、次のようにアレイレベルでいくつかのディスクグループに分割できます。
Caché本番データベースへのランダムアクセス用
バックアップとジャーナルへのシーケンシャルアクセス、およびテスト、トレーニングなどの他の非本番ストレージ用
データストアはストレージ階層を抽象化したものであり、ストレージの物理的な表現ではなく論理的な表現であることを覚えておいてください。 物理ストレージレイヤーを分離せずに特定のI/Oワークロード(ジャーナルファイルかデータベースファイルかを問わず)を分離するために専用のデータストアを作成した場合も、パフォーマンスに望ましい影響はありません。
パフォーマンスは重要ですが、どのような共有ストレージを選択すべきかは、VMwareの影響よりも拠点内の既存インフラストラクチャや予定されているインフラストラクチャによって決まります。 ベアメタル実装と同様、ファイバチャネルSANが最もパフォーマンスが高く、推奨されます。 ファイバチャネルの場合、8Gbpsアダプタが推奨最小値です。 iSCSIストレージは、適切なネットワークインフラストラクチャが導入されている場合にのみサポートされます。例えば、他のトラフィックから分離されたサーバーとストレージ間のネットワーク内のすべてのコンポーネントが10Gb以上のイーサネットとジャンボフレーム(MTU 9000)をサポートしていなければなりません。
データベース用の仮想マシンやI/O負荷の高い仮想マシンには、複数のVMware準仮想化SCSI(PVSCSI)コントローラーを使用してください。 PVSCSIはCPU使用率を削減しながら全体的なストレージスループットを向上させるため、かなりのメリットをもたらします。 複数のPVSCSIコントローラーを使用すると、ゲストOS内で複数の並列I/O操作を実行できるようになります。 また、独立した仮想化SCSIコントローラーを使用し、データベースI/OトラフィックからジャーナルI/Oトラフィックを切り離すことをお勧めします。 ベストプラクティスとしては、1つのコントローラーをOSとスワップに使用し、別のコントローラーをジャーナルに使用し、(データベースのデータファイルの数とサイズに応じて)1つ以上の追加コントローラーをデータベースデータファイルに使用できます。
データベースのワークロードに対応するためのベストプラクティスとしては、ファイルシステムのパーティションを調整することがよく知られています。 物理マシンとVMware VMFSパーティションの両方でパーティションを調整することで、I/Oがトラック境界を越えることでI/Oパフォーマンスが低下するのを防ぎます。 VMwareをテストした結果、VMFSパーティションを64KBのトラック境界に合わせると遅延が減少し、スループットが向上することが分かっています。 vCenterを使用して作成されたVMFSパーティションは、ストレージおよびOSのベンダーが推奨する64KB境界に合わせられます。
ネットワークの構築
ネットワークの構築については、以下の重要なルールを考慮する必要があります。
上記のように、VMXNETアダプタはデフォルトのE1000アダプタよりも優れた機能を備えています。 E1000は1Gbにしか対応していませんが、VMXNET3は10Gbに対応しており、CPU使用率も低くなります。 ホスト間に1ギガビットのネットワーク接続しかなければ、クライアントとVMの通信に大きな違いはありません。 ただし、VMXNET3を使用すると同一ホスト上のVMが10Gbで通信できます。そのため、特に多層デプロイやインスタンス間に高いネットワークIO要件がある場合には違いが生じます。 この機能は、VMを同一の仮想スイッチまたは別々の仮想スイッチ上に維持するためにアフィニティおよび非アフィニティDRSルールを計画するときにも考慮する必要があります。
E1000はWindowsまたはLinuxで使用できる汎用ドライバーを使用します。 ゲストOSにVMware Toolsをインストールしたら、VMXNET仮想アダプタをインストールできます。
次の図は、4つの物理NICポートを備えた典型的な小規模サーバー構成を示しており、インフラストラクチャトラフィック用に2つのポート(管理およびvMotion用のdvSwitch0と、VMがアプリケーションに使用する2つのポート)がVMware内に構成されています。 最高のスループットと高可用性を実現するため、NICチーミングとロードバランシングが使用されています。
図3. 4つの物理NICポートを備えた典型的な小規模サーバー構成。
ゲストOS
以下が推奨されます。
VMwareツールをすべてのVM OSにロードし、ツールを最新の状態に保つことが非常に重要です。
VMware Toolsは仮想マシンのゲストOSのパフォーマンスを向上し、仮想マシンの管理機能を強化するユーティリティスイートです。 ゲストOSにVMware Toolsがインストールされていない場合、ゲストにはパフォーマンスと重要な機能が不足することになります。
すべてのESXiホストで必ず時刻を正しく設定してください。最終的にはゲストVMに影響します。 VMのデフォルト設定ではゲストとホストの時刻は同期していません。ただし、それでも特定のタイミングでゲストはホストと時刻を同期し、その際に時刻が合わないと大きな問題が発生することが分かっています。 VMwareは、VMware Toolsによる定期的な時刻同期ではなく、NTPを使用することを推奨しています。 NTPは業界標準であり、ゲストが確実に正確な時刻を維持できるようにします。 NTPトラフィックを許可するには、ファイアウォールで必要なポート(UDP 123)を開く必要があるかもしれません。
DNS設定
仮想化インフラストラクチャでホストされているDNSサーバーが使用できなくなった場合、vCenterはホスト名を解決できなくなり、仮想環境を管理できなくなります。ただし、仮想マシン自体は問題なく動作し続けます。
高可用性
高可用性は、VMware vMotion、VMware Distributed Resource Scheduler(DRS)、VMware High Availability(HA)などの機能によって提供されます。 Cachéデータベースのミラーリングを使用して稼働時間を増やすこともできます。
重要なのは、Cachéの本番システムをn+1の物理ホストで設計することです。 単一のホストに障害が発生した場合に残りのホストですべてのVMを実行するには、十分なリソース(CPUやメモリなど)が必要です。 サーバーに障害が発生した場合にVMwareが残りのサーバーに十分なCPUリソースとメモリリソースを割り当てることができないと、VMware HAは残りのサーバーのVMを再起動できません。
vMotion
vMotionはCachéと併用できます。 vMotionを使用すると、稼働中のVMをあるESXiホストサーバーから別のESXiホストサーバーに完全に透過的に移行できます。 OSやVMで実行中のCachéなどのアプリケーションがサービスを中断することはありません。
vMotionを使用して移行する場合、VMの状態とメモリ(およびその構成)のみが移動します。 仮想ディスクを移動する必要はありません。仮想ディスクは同じ共有ストレージの場所に残ります。 移行後のVMは新しい物理ホストで稼働します。
vMotionは共有ストレージアーキテクチャ(共有SASアレイ、ファイバチャネルSAN、iSCSIなど)でのみ機能します。 Cachéは一般的に大量の共有メモリを使用するように構成されているため、vMotionで十分なネットワーク容量を使用できるようにしなければなりません。1Gbのネットワークで十分な場合もありますが、より高い帯域幅が必要な場合もあります。または、マルチNIC vMotionを構成することもできます。
DRS
Distributed Resource Scheduler(DRS)はクラスター内の異なるホストサーバー間でワークロードを共有することにより、本番環境で自動的にvMotionを使用します。
DRSはVMインスタンスにQoSを実装し、リソースを過剰に使用している非本番VMを停止して本番VMのリソースを保護する機能も提供します。 DRSはクラスター内の各ホストサーバーの使用状況に関する情報を収集し、クラスター内の各サーバー間でVMのワークロードを分散してリソースを最適化します。 この移行は、自動または手動で実行できます。
Cachéデータベースミラー
最高の可用性を必要とするミッションクリティカルな最上位のCachéデータベースアプリケーションインスタンスの場合、InterSystemsの同期データベースミラーリングを使用することも検討してください。ミラーリングを使用すると次のようなメリットもあります。
最新データの独立したコピーが存在します。
秒単位でフェイルオーバーできます(VMを再起動してからオペレーティングシステムを起動し、Cachéをリカバリするよりも高速です)。
アプリケーション/Cachéに障害が発生した場合(VMwareでは検出されません)にフェイルオーバーできます。
vCenter アプライアンス
vCenter Server Applianceは事前構成されたLinuxベースの仮想マシンであり、vCenter Serverおよび関連サービスを実行するために最適化されています。 私は小規模なクラスターのある拠点にはWindows VMにvCenter Serverをインストールする代わりに、VMware vCenter Server Applianceを使用することを推奨しています。 vSphere 6.5では、あらゆる導入でアプライアンスを使用することが推奨されています。
要約
この記事は、CachéをVMwareに導入する際に検討する必要がある主なベストプラクティスをまとめたものです。 これらのベストプラクティスのほとんどはCachéに固有のものではありませんが、他の最上位のビジネスクリティカルアプリケーションをVMwareに導入する場合に適用できます。
ご質問がある場合は、以下のコメント欄でお知らせください。
記事
Mihoko Iijima · 2020年10月27日
この記事はこちらの投稿の続きの内容です。
前回の記事では、プロダクションとは?について確認しました。また、サンプルコードを動かしながらプロダクションに流れるメッセージの中身をトレース画面で確認しました。
今回は記事では、システム統合を行うための必要な開発内容の中から、コンポーネント間のデータ送受信に使用される メッセージ について、作成するときの考え方や定義方法を確認していきます。
プロダクション(前回の記事)
メッセージ
コンポーネント
ビジネス・サービス
ビジネス・プロセス
ビジネス・オペレーション
メッセージ を作成する前に、サンプルのテーマを再度確認しましょう。
ショッピングサイトを運営している会社があり、季節に合わせ商品情報の表示順を変更する作業を行っています。ところが、季節を問わず良く売れるもの、想定しなかった時期に売れるものもあり、現在の表示順変更ルールにうまく合いません。そこで、季節に合わせた表示順ではなく、そのときの気温にあわせた表示順に変更できないか検討した結果、購入物品に対してそのときの気温を調査する必要が出てきました。気象情報の確認には、外部の Web API が利用できるため、購入されたタイミングで気象情報を収集し、後で確認できるようにデータベースに情報を登録していく予定です。
このテーマから、以下の内容が確認できます。
外部から受信する情報は「購入した商品情報と気象情報の検索に使用する都市名」であることIRIS から外部システムへ処理を依頼するための送信情報は「都市名」であること処理結果である応答内容は「気象情報」であること
このテーマから、システム統合に必要なコンポーネントを実装しますが、その前に、コンポーネントを動作させるためには、中継データであるメッセージを送受信する必要があり、メッセージを利用するためには、メッセージクラスを定義する必要があります。
メッセージクラスは、コンポーネントを動作させるためにどのような情報(=メッセージ)を送受信したらよいかを考えながら設計します。今回の流れでは、以下の2種類の情報が必要となります。
A) 気象情報を取得するため外部Web API に送信する都市名
B) DBに記録するための気象情報と購入商品名
A) の都市名 と B) の購入商品名 は、IRIS への入力情報に含めてもらうことで対応できます。
B) の気象情報は、外部 Web API の応答情報から取得できます。
確認できている情報から各コンポーネントを送受信するメッセージとしてどんな情報が必要になるかを考えた図が以下の通りです。
黄色い吹き出しの1行目がメッセージクラス名、2行目以降にプロパティに何を設定するか、を記載しています。
サンプルコードでは、以下3種類のメッセージを用意しました。
Start.Request(要求メッセージ)サービスからプロセス、プロセスから気象情報取得用オペレーションの呼び出しで、購入商品名と都市名を送信するために使用します。
Start.Response(応答メッセージ)気象情報取得用オペレーションの結果(気象情報)をプロセスに返送するために使用します。
Start.InsertRequest(要求メッセージ)プロセスからDB登録用オペレーションへ気象情報と購入商品名を送信するために使用します。
メッセージはスーパークラスの指定が決まっていて、要求メッセージは Ens.Request 、応答メッセージは Ens.Response を継承します。
以下、要求メッセージ:Start.Request の定義例です。
以下、応答メッセージの定義例です。
DB登録依頼で送付する要求メッセージの Start.InsertRequest は以下の通りです。(天気情報を取得後に返送される Start.Response の情報をそのまま WeatherInfoプロパティに設定する予定で定義しています)
スタジオで作成する場合、メッセージ作成用ウィザードを利用することもできます。
ご参考)スタジオでレスポンスクラスを作成する手順
ここまでのポイント
メッセージクラスは、コンポーネントを動作させるために「どのような情報(=メッセージ)を送受信したらよいか」を考えながら設計します。
各コンポーネントを動かすための情報であるメッセージクラスが実装できたら、次はコンポーネント用クラスを作成します。