0 フォロワー · 74 投稿

初心者タグは、InterSystemsのデータプラットフォームを使い始めた人のための記事と質問をまとめたものです。

記事 Mihoko Iijima · 2020年10月27日 12m read

この記事はこちらの投稿の続きの内容です。

前回の記事では、コンポーネント間のデータ送受信に使用される メッセージ について、作成するときの考え方や定義方法を確認しました。

今回の記事では、コンポーネントの作成方法の中から、ビジネス・オペレーションの作成について解説します。

早速サンプルを参照しながらコードを確認します。

コンポーネント名

役割

Start.FileBS

指定ディレクトリに置かれたファイルを一定間隔で読み取るファイルインバウンドアダプタを利用しているビジネス・サービス

Start.NonAdapterBS

アダプタを利用せず直接アプリケーションやユーザから情報を入力してもらうためのビジネス・サービス

Start.WS.WebServiceBS

Webサービスを利用して情報を入力してもらうためのビジネス・サービス

Start.WeatherCheckProcess

気象情報を取得してからデータベースの登録を行う手順を制御するビジネス・プロセス

Start.

0
0 1089
記事 Mihoko Iijima · 2020年10月27日 8m read

この記事はこちらの投稿の続きの内容です。

前回の記事では、システム統合に必要なコンポーネントの中から、ビジネス・オペレーションの作成について解説しました。

今回の記事では、確認した2つのビジネス・オペレーションを順番を守って呼び出しを行うビジネス・プロセスの作成について解説します。

ビジネス・プロセスは処理の調整役(司令塔)として働きます。

サンプルの中で行いたい処理の調整は、以下の内容です。

手順①    外部の Web API に都市名を渡し気象情報を問い合わせる
手順②    ①の問合せ結果(気象情報)と、処理開始時に受信した購入商品名をDBへ登録する

サンプルのビジネス・プロセスでは、手順① の回答を待って手順② を動かすように調整します。

回答を待つ処理(=同期を取る処理)ですが、例えば、手順① が数日返ってこない場合、どうなるでしょうか?

数日回答を待ち続けている間にビジネス・プロセスへ次々に新メッセージが渡された場合、メッセージは一旦キューに格納されるため消失しませんが、新メッセージの処理をビジネス・プロセスが実行できず処理に遅延が発生します。

メモ: ビジネス・プロセスとビジネス・オペレーションにはキューがあります。

0
0 880
記事 Mihoko Iijima · 2020年10月27日 10m read

この記事はこちらの投稿の続きの内容です。

前回の記事では、システム統合に必要なコンポーネントの中から、プロダクション内の処理の調整役となるビジネス・プロセスの作成について解説しました。

今回の記事では、プロダクションの情報入力窓口である、ビジネス・サービスの作成について解説します。

いよいよ「Interoperability(相互運用性)を使ってみよう!」の最後のコンポーネントです。

ビジネス・サービスは、IRIS 外部からの送信される情報の入力窓口で、外部 I/F に対してアダプタを使用する/しないを選択できます。

サンプルでは、3 種類のビジネス・サービスを用意しています(括弧内のリンクはサンプルコードへのリンク)。

  1. ファイルインバウンドアダプタを利用したファイル用ビジネス・サービスStart.FileBS) 
  2. SOAP インバウンドアダプタを利用する Web サービス用ビジネス・サービスStart.WS.WebServiceBS
  3. アダプタを使用せず、ストアドプロシージャや REST で呼び出されるビジネス・サービスStart.NonAdapterBS
0
0 969
記事 Mihoko Iijima · 2020年7月21日 2m read

IRIS で REST サーバを作成する際に準備する REST ディスパッチクラスを API ファーストの手順で作成する方法を解説します。
(OpenAPI 2.0に基づいて作成したアプリケーション定義を使用してディスパッチクラスを作成する手順を解説します)

このビデオには、以下の関連ビデオがあります。

もくじ

最初~ 復習ビデオ/関連ビデオについて など

2:36~  作成するディスパッチクラスの内容

4:15~ RESTディスパッチクラス:APIファーストで作成する方法(手順説明)

5:55~ アプリケーションの仕様を定義する (例)

6:19~ IRISにアプリケーション仕様を登録する(説明)など

7:40~ POST要求の実行 (例)

8:24~ 実演

 ↓実演で使用したURL↓
 http://localhost:52773/api/mgmnt/v2/user/crud2

10:32~ (POST要求の)実行結果

11:50~ ベースURLの設定(管理ポータルでの設定)+ 実演

13:23~  curd2.

0
0 410
記事 Minoru Horita · 2020年7月21日 10m read

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

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

その他の記事

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

0
0 623
記事 Mihoko Iijima · 2020年7月20日 1m read

IRIS で作成する REST サーバの仕組みを解説します。


このビデオには、以下の関連ビデオがあります。

もくじ

0:55~ 今回の説明内容解説と関連ビデオについて

3:00~  RESTとは?

3:52~  動作の仕組み

6:23~ RESTディスパッチクラスとは

8:04~ RESTディスパッチクラスの実装方法

8:34~ RESTディスパッチクラス:全て手動で作成する方法 概要

9:30~ RESTディスパッチクラス:APIファーストで作成する方法 概要

11:12~ 共通:ベースURLの設定(管理ポータルでの設定)

11:37~最後まで 確認できたこと

※YouTubeでご覧いただくと、もくじの秒数にジャンプできます。

0
0 840
記事 Mihoko Iijima · 2020年6月28日 3m read

この連載記事では、InterSystems IRIS をはじめて操作される方を対象に、IRIS のインストールから、開発環境作成、各種言語からのアクセス方法についてご紹介していきます。

以下3つのビデオは、基本操作をご紹介するビデオです。既にご存知の内容が多い場合は、各種アクセス方法をご紹介するビデオからぜひご参照ください。

基本操作編ビデオシリーズ

0
3 1219
記事 Mihoko Iijima · 2020年6月28日 1m read

基本操作編ビデオシリーズ:その2

IRIS で開発を始めるために必要な準備について以下の内容をご説明します。

  • 管理ポータルの起動方法
  • ネームスペースの作成方法
  • IDEからIRISへ接続する方法

もくじ

最初から ~ 6:50 管理ポータルの開き方とメニューについて

7:03 ~ 12:50 ネームスペースとデータベースについて

12:50 ~ 17:10 ネームスペース、データベースの作成実演

17:10 ~ 20:50 スタジオを使用する場合の設定内容

20:50 ~ 22:35 スタジオ:IRISへの接続実演

22:35 ~ 26:50 VS Codeを使用する場合の設定内容

26:52 ~ VS Code:IRISへの接続実演

※YouTubeでご覧いただくと「もくじ」に記載の秒数クリックでビデオをジャンプできます。

その他ビデオ一覧は索引ページをご参照ください。

《2021/7/21 ビデオを更新しました》

VSCode の ObjectScript エクステンションを利用して IRIS に接続する説明を更新しました(settings.json に接続情報を設定する方法の解説に変更しました)。

0
0 853
記事 Mihoko Iijima · 2020年6月28日 3m read

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.

0
0 1202
記事 Mihoko Iijima · 2020年6月28日 2m read

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

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

0
0 598
記事 Minoru Horita · 2020年6月26日 6m read

アイリスデータセットのK平均クラスタリング 

みなさん、こんにちは。 今回はアイリスデータセットでk平均アルゴリズムを使用します。 

注意:Ubuntu 18.04、Apache Zeppelin 0.8.0、python 3.6.5で以下を実行しました。 

概要 

K平均法は、クラスタリングの問題を解決する最も単純な教師なし学習アルゴリズムの1つです。 このアルゴリズムは、同じグループ内のオブジェクト(グループはクラスターです)が他のグループ内のオブジェクトよりも(意味的に)互いに類似するようにすべてのオブジェクトをグループ化します。 例えば、緑の芝生に赤いボールのある画像があるとします。 K平均法はすべてのピクセルを2つのクラスターに分割します。 1番目のクラスターにはボールのピクセルが含まれ、2番目のクラスターには芝生のピクセルが含まれます。 

アイリスデータセットは、3種のアイリスの花の特徴をいくつか含むテーブルです。 種には「Iris-setosa」、「Iris-versicolor」、「Iris-virginica」があります。 それぞれの花には5つの特徴(花びらの長さ花びらの幅がく片の長さがく片の幅種 )があります。 

要件の確認 

まず、すべての要件を確認しましょう。 次のように、ターミナルに「which python3」貼り付けてください。

0
0 1063
記事 Minoru Horita · 2020年6月3日 10m read

前のパート(12)では、ツリーとしてのグローバルを話題に取り上げました。 この記事では、それらを疎な配列と見なします。 

疎な配列は、ほとんどの値が同一であると想定される配列の種類です。 

疎な配列は実際には非常に大きいため、同一の要素でメモリを占有することには意味がありません。 したがって、疎な配列を整理し、重複した値の格納にメモリが浪費されないようにすることには意味があります。 

疎な配列は、JMATLABなど一部のプログラミング言語では言語の一部になっています。 他の言語では、疎な配列を使用できるようにする特別なライブラリが存在します。 C++の場合は、Eigenなどがあります。 

次の理由により、グローバルは疎な配列を実装するのに適した候補であると言えます。 

  1. 特定のノード値のみを保存し、未定義のノード値を保存しないこと。 
  1. ノード値のアクセスインターフェースが、多くのプログラミング言語が多次元配列の要素にアクセスするために提供しているものとよく似ていること。 
Set ^a(1, 2, 3)=5 
Write ^a(1, 2, 3) 
  1. グローバルはデータを格納するためにかなり低レベルの構造を採用しているため、優れたパフォーマンス特性を備えていること(ハードウェアによっては毎秒数十万から数千万のトランザクションを処理可能、1をご覧ください)。
0
0 857
記事 Minoru Horita · 2020年6月2日 14m read

最初の記事については、パート1を参照してください。 

3. グローバルを使用する場合のさまざまな構造 

順序付きツリーなどの構造には、さまざまな特殊ケースがあります。 グローバルを使用する上で実用的な価値があるものを見てみましょう。 

3.1 特殊ケース1  - 枝のない1つのノード 

グローバルは配列のようにも、通常の変数のようにも使用できます。 例えば、カウンターを作成する場合を考えてみましょう。 

Set ^counter = 0  ; カウンターの設定 

Set id=$Increment(^counter) ;  アトミックなインクリメント操作 

また、グローバルには値に加えて枝を持たせることができます。 一方が他方を除外することはありません。 

3.2 特殊ケース2  - 1つのノードと複数の枝 

実際、これは典型的なキー・バリューベースのデータ構造です。 また、値の代わりに値のタプルを保存すると、主キーを持つ通常のテーブルが得られます。 

グローバルに基づくテーブルを実装するには、カラムの値から文字列を作成し、主キー別にそれをグローバルに保存する必要があります。 読み取りの時に文字列をカラムに分割できるようにするため、以下のいずれかを使用することができます。

0
0 813
記事 Minoru Horita · 2020年4月30日 9m read

データを格納するための魔法の剣であるグローバルは、かなり前から存在しています。しかしながら、これを効率的に使いこなせる人や、この素晴らしい道具の全貌を知る人はそう多くありません。 グローバルを本当に効果を発揮できるタスクに使用すると、パフォーマンスの向上やソリューション全体の劇的な単純化といった素晴らしい結果を得ることができます(12)。 

グローバルは、SQLテーブルとはまったく異なる特別なデータの格納・処理方法を提供します。 グローバルは1966年にM(UMPS)プログラミング言語で初めて導入され、医療データベースで使用されていました。 また、現在も同じように使用されていますが、金融取引など信頼性と高いパフォーマンスが最優先事項である他のいくつかの業界でも採用されています。 

M(UMPS)は後にCaché ObjectScript(COS)に進化しました。 COSはInterSystemsによってMの上位互換として開発されました。 元の言語は現在も開発者コミュニティに受け入れられており、いくつかの実装で生き残っています。 ウェブ上では、MUMPS GoogleグループMumpsユーザーグループISO規格といった複数の活動が見られます。 

最新のグローバルベースのDBMSは、トランザクション、ジャーナリング、レプリケーション、パーティショニングをサポートしています。

0
0 861