IRISをアップグレードすると、SQLクエリオプティマイザの機能向上により、旧バージョンとは異なるクエリプランによるクエリ実行コード(クエリキャッシュ)が作成される場合があります。
ほとんどの場合はパフォーマンスが向上するのですが、稀にパフォーマンスが低下するケースもあります。

・アップグレードによりオプティマイザが改善しているとはいえ、中には遅くなるクエリがあるのではないか?
・予期しないSQLの問題が起きるのではないか?
・アップグレード後に全てのクエリパターンをテストするには時間と労力がかかりすぎる

このように、機能向上よりも安定性を優先して「今までのプランのまま実行したい」というご要望もあることでしょう。
こちらの記事では、そのようなお客様への解決策をご案内します。

2 0
0 87

SFTPサーバ側で公開鍵と秘密鍵を作成し、それをIRISサーバにコピーして、%Net.SSH.Session() の AuthenticateWithKeyPair() を使用してSFTP接続する一連の手順(サンプル)をご紹介します。


【環境】

SFTPサーバ:CentOS8
SFTPクライアント:Windows10 & IRIS2023.1.2
SFTP接続用ユーザ:mysftpuser


【手順】

(1) CentOSでSSHの公開鍵と秘密鍵を作成します (今回は、RSA方式、4096bit)

ssh mysftpuser@172.18.xx.xx でログインし、以下 mysftpuser として作業します。

1 0
0 403

IRIS側の処理は、IRISでREST APIを実装する方法を理解していれば、簡単です。

前回のログイン処理でユーザー認証をIRIS側でどのように実装されているか確認して見ましょう。

まずはディスパッチクラスの定義です。

Shop.Brokerというクラスの中で定義されています。

checkpasswordというメソッドが最後に定義されていて、最終的にShop.Rest.Customer:checkPasswordという(クラス)メソッドが呼ばれているのがわかると思います。

ここで定義しているパラメータは、とりあえずおまじない的に含めておくことをお勧めします。

(説明し出すと少し長くなるので)

Class Shop.Broker Extends %CSP.REST
{

Parameter CONVERTINPUTSTREAM = 1;

Parameter HandleCorsRequest = 1;

0 0
0 55

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

InterSystems IRIS との通信に SSL/TLS を使用する際のクライアントの構成は、使用する技術によって変わってきます。


1. ODBCクライアント、IRISクライアントから接続の場合(IRISスタジオやターミナルなど)
2. .NET クライアントから接続の場合(SSLDefs.iniは要りません)



★1.ODBCクライアント、IRISクライアントから接続の場合(IRISスタジオやターミナルなど)

ODBCやIRISクライアントから接続する場合は、以下の記事にある設定が必要となります。
具体的には、SSLDefs.iniという設定ファイルを作成し、決められた場所に配置します。

0 0
0 43

先週、私たちはInterSystems IRIS Data Platformを発表しました。これは、トランザクション、分析、またはその両方に関係なく、あらゆるデータの取り組みに対応する新しい包括的なプラットフォームです。 CachéとEnsembleでお客様が慣れ親しんでいる多くの機能が取り込まれていますが、この記事では、プラットフォームの新機能の1つであるSQLシャーディングについてもう少し詳しく説明します。これはスケーラビリティに関する強力な新機能です。

0 0
0 305
記事
· 2020年8月6日 2m read
Python Gateway パート VI: Jupyter

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

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

その他の記事

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

はじめに

Jupyter Notebookは実コード、数式、図、説明文を含むドキュメントを作成および共有できるオープンソースのWebアプリケーションです。

この拡張機能を使用すると、InterSystems IRIS BPLのプロセスをJupyterノートブックとして参照および編集できます。

0 0
0 152

本記事について

InterSystems IRISは、管理ポータルへのアクセス方法がデフォルトではhttpとなっており、クライアントが社内、サーバがクラウドという配置の場合、なんらかの方法でトラフィックを暗号化したいと考える方も多いかと思います。
そこで、AWS上にて稼働中のIRISの管理ポータル(あるいは各種RESTサービス)との通信を暗号化する方法をいくつかご紹介したいと思います。

本記事では、アクセスにIRIS組み込みのapacheサーバを使用しています。ベンチマーク目的や本番環境のアプリケーションからのアクセス方法としては使用しないでください。
短期間・少人数での開発・動作検証・管理目的でのアクセスを暗号化する事を想定しています。

ドメイン名とメジャーな認証局発行のSSLサーバ証明書を用意できればベストなのですが、上記のような用途の場合、コスト面でなかなか難しいと思います。
ですので、下記の証明書の使用を想定しています。
- 自己署名(いわゆるオレオレ証明書)
- 自分で建てた認証局で署名した証明書(いわゆるオレオレ認証局)

また、下記のような実行環境を想定しています。

1 0
0 572
記事
· 2020年10月19日 5m read
SQL パフォーマンスリソース

SQL パフォーマンスリソース

SQL のパフォーマンスについて語るとき、最も重要なトピックとして取り上げられるのが「Indices」、「TuneTable」、「Show Plan」の 3 つです。 添付の PDF にはこれらのトピックに関する過去のプレゼン資料が含まれていますので、それぞれの基礎を一度に確認していただけます。 当社のドキュメンテーションでは、これらのトピックの詳細に加え、SQL パフォーマンスの他のトピックについてもカバーしておりますので、下のリンクからお読みください。 eラーニングをご利用いただくと、これらのトピックをもっと深く理解していただけます。 また、開発者コミュニティによる記事の中にも SQL パフォーマンスについて書かれたものが複数ありますので、関連するリンクを下に記載しております。

下に記載する情報には同じ内容が多く含まれています。 SQL パフォーマンスにおける最も重要な要素を以下に紹介します。

  • 利用可能なインデックスの種類
  • あるインデックスの種類を他の種類の代わりに使用する
  • TuneTable がテーブルに集める情報とそれが Optimizer に対して意味する内容
  • Show Plan を読んでクエリの善し悪しを深く理解する方法
  • 0 0
    0 165

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

    2つのステップにて作業します。

    クラス定義の移行

    クラス定義を別システムへ移行するため、XML形式またはUDL形式(拡張子.cls)のファイルにエクスポートします。

    スタジオでのエクスポート手順は以下の通りです。

    [ツール] > [エクスポート]

    > [追加]ボタンで移行したいクラスを複数選択

    > [ローカルファイルにエクスポート]にチェック

    > ファイルの種類がXMLであることを確認し、ファイル名を入力し、[OK]

    この後、別システム上のスタジオで、エクスポートしたXML、UDLファイルをインポートします。

    この手順で、クラス定義は移行できます。

    スタジオでのインポート手順は以下の通りです。

    [ツール] > [ローカルからインポート]

    > 上記手順で出力したXML、UDLファイルを指定します。

    0 0
    0 269

    優れた執筆者は、題名で読者を引き込み、答えを記事のどこかに隠すべきだと考えられています。 だとすると、私は出来の悪い執筆者ということになってしまいます。私の自尊心は見知らぬインターネットユーザーの皆さんのご意見にかかっていますので、お手柔らかにお願いします。

    0 0
    0 216

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

    1. エクスポートAPI

    a. ルーチンを個別に指定してエクスポートする場合は、$system.OBJ.Export() を使用します。

    例:

    do $system.OBJ.Export("TEST1.mac,TEST2.mac","c:\temp\routines.xml",,.errors)

    指定する形式は ルーチン名.拡張子 で、拡張子は mac,bas,int,inc,obj を指定します。

    エクスポート中のエラーは errors に格納されます。

    $system.OBJ.Export() の詳細はクラスリファレンス %SYSTEM.OBJ を参照してください。

    b. ワイルドカードを使用してエクスポートする場合にも、$system.OBJ.Export() を使用します。
    例:

    0 0
    0 379

    独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。

    0 0
    0 172

    デベロッパーの皆さん、こんにちは!

    最近、当社は InterSystems Package Manager (ZPM) をリリースしました。 ZPM を開発した理由の 1 つは、ソリューションをパッケージ化して ZPM レジストリに提出することにより、そのデプロイを「install xxx package」のようなコマンドを実行するだけの単純な作業にするためです。

    これを行うには、InterSystems IRIS パッケージの中身を説明する module.xml ファイルをリポジトリに導入する必要があります。

    この記事では、module.xml ファイルの異なる構成要素を説明し、独自のファイルを作成する方法をご紹介します。

    まずは、samples-objectscript パッケージから始めます。以下のコマンドを実行すれば、IRIS に ObjectScript のサンプルアプリケーションがインストールされます。

    zpm: USER>install samples-objectscript

    おそらく、これほどシンプルなパッケージはないと思います。以下は、パッケージの中身を説明する module.xml です。

    
    <Export generator="Cache" version="25">
      <Document name="samples-objectscript.ZPM">
        <Module>
          <Name>samples-objectscript</Name>
          <Version>1.0.0</Version>
          <Packaging>module</Packaging>
          <SourcesRoot>src</SourcesRoot>
          <Resource Name="ObjectScript.PKG"/>
        </Module>
      </Document>
    </Export>
    1 0
    0 127

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

    以下例のクラスメソッド getLatestID() のように ObjectScript のクラスメソッドを用意します。
    返したい値を戻り値に指定し、SQLストアドプロシージャ(SqlProc)キーワードを指定するだけで値が返せます。

    ClassMethod getLatestID() As %Integer [ SqlName = getLatestID, SqlProc ]
    {
        set latestID=$Order(^ISJ.TestClass1D(""),-1)
        quit latestID
    }

    操作を試す場合は、以下のクラス定義をご準備ください。

    0 0
    0 232

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

    永続クラス(=テーブル)定義に提供される %BuildIndices() メソッドの引数に、インデックスを再構築したい ID の開始値と終了値を指定することにより、その範囲内のインデックスのみが再構築できます。

    例えば、Sample.Person クラスにある NameIDX インデックスと ZipCode インデックスを ID=10~20 のみ再構築する場合は、以下のように実行します(ID の範囲は、第5引数、第6引数に指定してます)。

    0 0
    0 261

    先日、永続クラスとシリアルクラスからSwagger仕様を生成する必要がありました。そこで、その時のコードを公開することにします(完全なコードではないため、アプリケーション固有の部分を変更する必要がありますが、まずは出発点として使用できます)。 こちらからご利用ください。

    次のクラスがあるとしましょう。

    0 0
    0 125

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

    文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。

     Write $$GetIONames^%SYS.NLS()

    現在のロケールにおいて各デバイス(ファイル、ターミナル等)のデフォルトの変換テーブル名を取得するには、%SYS.NLS.Table クラスを使用します。

    確認方法は以下の通りです。

    (1) システムデフォルト設定を取得するため、%SYS.NLS.Table のインスタンスを生成します。(引数に、"System" を指定します。)

     set obj=##class(%SYS.NLS.Table).%New("System")

    (2) GetIOTable() メソッドを使用して、確認したいデバイスの現在の変換テーブル名を取得します。

    0 0
    0 355

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

    ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。

    ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。

    なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。

    ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。

    0 0
    0 106

    中間データベースを使用して、Grafana と IRIS(または Cache/Ensemble)を使用する方法を説明した非常に有益な記事がコミュニティにいくつか掲載されています。

    しかし私は、IRIS 構造に直接アクセスしたいと考えていました。 特にこのリンクで説明しているように、SQL でアクセス可能なCaché履歴モニターのデータにアクセスしたかったのです。

    https://community.intersystems.com/post/apm-using-cach%C3%A9-history-mon...

    また、データをいじりたくもありませんでした。

    必要とするデータを返すクラスクエリはすでにあったので、それらを、JSON を返す REST クラスに埋め込むだけで良かったからです。 クラス Grafana.MonitorData はまだ含めていません。それでなければならないという理由があるわけではなかったためですが、要望があれば、含めることは可能です。

    0 0
    0 186

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

    InterSystems IRISでは、サンプル定義の一部は、GitHub上に公開しています。

    本FAQ内で登場する Sample.Person のクラス定義とサンプルデータについては、こちら からダウンロードいただけます。
    手順は以下の通りです。

    0 0
    0 129
    記事
    · 2021年12月28日 2m read
    コンパイルフラグについて

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

    コンパイル時のフラグや修飾子の記号と意味については、以下ドキュメントをご参照ください。


    コンパイルフラグについて【IRIS】

    コンパイルフラグについて

    なお、開発環境のスタジオやVisual Studio Codeでは、開発環境の設定画面でフラグを変更できます。

    1 0
    0 538

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

    2023/2/20追記

    チュートリアルページが新しくなり「Developer Hub」に変わりました!

    チュートリアルの種類や使い方については、「InterSystems Developer Hub:クリック1回で開始できるチュートリアル(4種)のご紹介」をご参照ください。


    以下にご紹介しているチュートリアルページは、現在非公開となりますので、Developer Hub をご利用ください!

    0 0
    0 803

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

    Linux上では、以下の手順で InterSystems IRIS (以降IRIS)のインスタンスを削除してください。

    (1) アンインストールしたい IRIS のインスタンスを iris stop で停止

    # iris stop インスタンス名

    (2) 以下のコマンドでインスタンス情報を削除

    # iris delete インスタンス名

    (3) IRIS のインストールディレクトリを rm コマンドで削除

    # rm -r インストールディレクトリ

    IRISは、インストール先のディレクトリのほかに、以下の(a)(b)も使用しています。

    1 0
    0 499

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

    %Persistent クラスに既定で生成される Extent クエリは、ID 順に結果セットを出力することを意図していませんので、これは、仕様通りの動きとなります。

    並び順は、設定されているインデックスにより、変わることがあります。

    0 0
    0 90

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

    CSVまたはURLからCSVデータをプログラムでInterSystems IRISにインポートしなければならない場合があります。 そして、適切なデータ型でクラスが作成され、そのデータがインポートされることを期待するでしょう。

    それを実現するcsvgenモジュールをOpen Exchangeに公開しました。

    IRISにCSVファイルをインポートするだけであれば、次のようにすることができます。

    USER>do ##class(community.csvgen).Generate("/usr/data/titanic.csv",,"Data.Titanic")
    
    Class name: Data.Titanic
    Header: PassengerId INTEGER,Survived INTEGER,Pclass INTEGER,Name VARCHAR(250),Sex VARCHAR(250),Age INTEGER,SibSp INTEGER,Parch INTEGER,Ticket VARCHAR(250),Fare MONEY,Cabin VARCHAR(250),Embarked VARCHAR(250)
    Records imported: 891
    USER>

    または、GitHubのCOVID-19 Dataのように、インターネット上にCSVがある場合は、次のようにしてデータを取得できます。

    USER>d ##class(community.csvgen).GenerateFromURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/05-29-2020.csv",",","Data.Covid19")
    
    Class name: Data.Covid19
    Header: FIPS INTEGER,Admin2 VARCHAR(250),Province_State VARCHAR(250),Country_Region VARCHAR(250),Last_Update DATE,Lat MONEY,Long_ DOUBLE,Confirmed INTEGER,Deaths INTEGER,Recovered INTEGER,Active INTEGER,Combined_Key VARCHAR(250),Incidence_Rate DOUBLE,Case-Fatality_Ratio DOUBLE
    Records imported: 3522
    USER>
    

    0 0
    0 189

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

    答え:必要ありません。

    InterSystems 製品では、クライアント機能用に特別なライセンスを設けておりません。

    通常のサーバーライセンス(サブスクリプションを含む)を保有していれば、そのサーバーライセンスで許容しているキャパシティに応じて、複数のクライアントシステムにクライアント機能をインストールして利用することができます。

    0 0
    0 111
    記事
    · 2021年10月7日 5m read
    ローカル変数スコープの概要

    これは、オンラインドキュメントのさまざまな場所に表示される主題に関する概要であり、主に注釈として表示され、専用の章として表示されることはありません。

    むかしむかし、ある所に... おっと、おとぎ話ではありません。
    Cachéの初めの頃(それからその前にも)、自分のコードを実行するためのパーティションを用意していたことがあるでしょう。 そのパーティションの一部は、すべてのローカル変数が%、A~Z、a~zでうまくソートされていた領域でした。

    また、ローカルに保存する値や情報が何であれ、すべてはそこに保存されており、パーティションでどんなコードを実行する場合でも、可視状態であり、利用することができました。 完全なドキュメントと優良な規律をもって共同作業できている開発者チームであれば、問題はありません。
    [残念ながら、これをおとぎ話にしてはいけません]。

    0 0
    0 189