0 フォロワー · 163 投稿

SQLは、リレーショナルデータベースにデータを格納、操作、および取得するための標準言語です。

記事 Hiroshi Sato · 3月 3, 2025 1m read

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

IRISには、データ項目の値を実体として持たずに、何らかの演算処理の結果として提供する機能があります。

これを計算プロパティまたは計算フィールドといいます。

計算プロパティを定義するためには、最低限以下の手順を実行します。

プロパティ定義にSqlComputedキーワードを含めます。

プロパティ定義にSqlComputedCodeを含めて、値を算出するための処理ロジックとして含めます。

または、SqlComputedCodeを含めずに、代わりに<プロパティ名>Computationという名前のクラスメソッドを記述します。

以下は、Age(年齢)プロパティを計算プロパティとして定義した例になります。

0
0 59
記事 Toshihiko Minamoto · 2月 27, 2025 7m read

説明

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる Flask アプリケーションのテンプレートです。

インストール

  1. リポジトリをクローンする
  2. 仮想環境を作成する
  3. 要件をインストールする
  4. docker-compose ファイルを実行する
git clone
cd iris-flask-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up

使用法

ベース URL は http://localhost:53795/flask/ です。

エンドポイント

  • /iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。
  • /interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。
  • /posts - Post オブジェクトの単純な CRUD エンドポイント。
  • /comments - Comment オブジェクトの単純な CRUD エンドポイント。

このテンプレートからの開発方法

WSGI 導入記事をご覧ください: wsgi-introduction

0
0 90
記事 Megumi Kakechi · 2月 26, 2025 2m read

これは InterSystems FAQ サイトの記事です。
埋め込みSQLの出力ホスト変数は、SQLCODE=0(埋め込みSQL正常終了)の場合のみ、正しい値が設定されていることが保証されます。

InterSystems製品のバージョンによっては、SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。

特に、IRIS2021.1以降のバージョンでは、SQLCODE=100 の場合、INTO 節で指定された出力ホスト変数は NULL("") にクリアされますので注意が必要です。

Cacheや、IRIS2020.x 以前のバージョンでは、明示的な値のクリアを行っておりませんでしたが、こちらについても値は保証されるものではありません。

埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
また、エラーチェック以外でも、SQLCODE = 0(データあり) の場合と SQLCODE = 100(データなし) の場合は処理を分けるようにし、SQLCODE = 100 の場合は出力ホスト変数を参照しないようご注意ください。


例)
誤った使用例:

0
0 55
InterSystems公式 Masahito Miura · 2月 21, 2025

2025 年 2 月 15 日 – 警告:SQLクエリが間違った結果を返す

インターシステムズは、SQL クエリが不正な結果を返す原因となる 2 つの問題を修正しました。さらに、日付/時刻データ型の処理における不整合を修正しました。この日付/時刻データ型の処理の修正により以前の不整合な動作に依存していた既存のアプリケーションでは、異なる予期しない(正しい)結果が返される可能性があります。

DP-436825: ラテラル結合を使用したSQLクエリが間違った結果を返すことがある

0
0 72
質問 Yuji Ohata · 11月 22, 2024

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

IRISに直接Insert文を発行する時と、JDBCを経由してInsert文を発行する時とで、
挙動差異があるように見受けれれまいたので、何かご存知な方がいらっしゃれば教えてください。

次の様なテーブルがあります。

それに対してDBeaverとIRIS管理ポータルからInsertを実行します。

★DBeaver

★IRIS管理ポータル

この後実際に作成されたグローバルの情報を確認すると、
『VARCHAR型』で作成したカラムに数値をInsertした際に、
実データの型が異なっていることがわかります。

DBeaver(JDBC) ➡ 文字列で登録
IRIS直     ➡ 数値で登録

個人的には『VARCHAR型』に数値が入ること自体がおかしいので、
DBeaverの方がまし(ホントは型違反とかになってほしい)と思うのですが、
この差異が何で発生するのか、また回避する方法をご存じな方がいらっしゃれば情報共有頂きたいです。

また、そもそもIRISはRDBを使っても型チェックが曖昧になるものなのかも気になっています。
さすがに数値のカラムに文字列を入れようとすると怒られるのですが、
上記の様な場合にチェックの仕組みが働かないのには違和感がありました。

3
0 145
質問 Yuji Ohata · 12月 4, 2024

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

私自身SQLがあまり得意ではなく、
業務で書いてみたもののパフォーマンスがよくなく、
不要なループが含まれていた、無駄な検索条件が含まれている…なんてことが多々あります。

IRISの管理コンソールなどにはいろんな機能があると思うのですが、
パフォーマンス改善をするために利用できるツールなどはあったりしますでしょうか?

何かご存知の方がいらっしゃいましたら、情報共有頂けますと幸いです。

2
0 57
記事 Toshihiko Minamoto · 11月 21, 2024 6m read

image
コミュニティの皆さん、こんにちは。
この記事では、iris-RAG-Gen という私のアプリケーションをご紹介します。

iris-RAG-Gen は、IRIS Vector Search の機能を使用して、Streamlit ウェブフレームワーク、LangChain、および OpenAI で ChatGPT をパーソナライズするジェネレーティブ AI 検索拡張生成(RAG: Retrieval-Augmented Generation)アプリケーションです。 このアプリケーションは IRIS をベクトルストアとして使用します。
image

アプリケーションの機能

  • ドキュメント(PDF または TXT)を IRIS に取り込む
  • 選択されたドキュメントの取り込みを使ってチャットする
  • ドキュメントの取り込みを削除する
  • OpenAI ChatGPT
0
0 81
記事 So Ochi · 10月 13, 2024 10m read

はじめに

生成AIを活用したアプリケーション開発は、Python、JavaScriptなどのメジャー言語による体験記事がよく見られます。一方、IRISのObjectScriptの開発に言及された記事は比較的少ないのが現状です。そこで、本記事では生成AIがObjectScriptの開発にどこまで活用できるのかを検証しました。

特にDevOpsのプロセスにおいて、生成AIは様々なシーンでの活用が期待できます。今回は開発工程に注目し、以下の観点から生成AIの有効性を調査しました。

  • 開発
    • コードの自動生成
    • 環境構築のアシスタント(テーブルの作成)
  • 検証
    • テストデータ生成のサポート

環境

本記事の検証は以下の環境で行いました。

開発環境

  • OS: macOS Sonoma
  • IRIS: 2023.4 (linux)

開発ツール IRISの開発にはStudioやVSCodeなどが利用可能ですが、今回は生成AIの活用に特化したエディタ「Cursor」を使用しました。

Cursorを選定した理由 Cursorは、生成AIによる支援機能に特化したコードエディタで、以下の特徴があります:

0
0 297
記事 Mihoko Iijima · 8月 9, 2024 36m read

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

この記事は、2024年7月に開催された「InterSystems Pythonプログラミングコンテスト2024」でエキスパート投票、コミュニティ投票の両方で1位を獲得された @Henry Pereira Pereira さん @José Pereira さん @Henrique Dias Dias さんが開発された sqlzilla について、アプリを動かしてみた感想と、中の構造について @José Pereira さんが投稿された「Text to IRIS with LangChain」の翻訳をご紹介します。

第2回 InterSystems Japan 技術文書ライティングコンテスト 開催! では、生成AIに関連する記事を投稿いただくと、ボーナスポイントを4点獲得できます📢 @José Pereira さんの記事を💡ヒント💡に皆様の操作体験談、アイデアなどを共有いただければと思います。

開発されたアプリSQLzilla についての概要ですが、Open Exchangesqlzilla のREADMEに以下のように紹介されています。

「SQLzilla は、Python と AI のパワーを活用して、自然言語の SQL クエリ生成を通じてデータ アクセスを簡素化し、複雑なデータ クエリとプログラミング経験の少ないユーザーとの間のギャップを埋めます。」

1
0 165
記事 Tomoko Furuzono · 8月 4, 2024 1m read

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

区切り識別子は、区切り文字で囲まれた一意の識別子です。
InterSystems SQL は、その区切り文字として二重引用符 「"」 をサポートしています。
一方、リテラル値を区切る場合は、一重引用符「'」を使用します。
例えば、下記のSQLにおいて、
①は、Nameの値が「AAA」という文字列である、という検索条件と解釈されますが、
②は、Name列 = AAA列、という結合条件と解釈されます。※実際にAAA列が無ければエラーとなります。

select * from Samle.Person
whereName = 'AAA'


select * from Sample.Person
whereName = "AAA"


リテラル値(文字列、数値)を示す区切り文字として二重引用符「"」を使用したい場合は、
下記を実行し、この区切り識別子サポートするためのオプションを無効にします。

0
0 92
記事 Mihoko Iijima · 2月 29, 2024 5m read

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

新しいインデックスを定義した後、インデックスの再構築が完了する前にクエリを実行するとデータが存在しているにもかかわらず「検索結果0件」や検索結果数が徐々に増えるような状況が発生します。

インデックスを永続クラス定義(またはテーブル定義)に追加しコンパイルすることで今まで使用していたクエリ実行経路が削除され、再度同じクエリを実行するタイミングで新しいインデックス定義を含めた実行経路が作成されるためです。(この時にインデックス再構築が完了していないとインデックスデータが存在しない、または不完全であるため0件や徐々に検索結果数が増えるような状況を起こします。)

これを起こさなために、新しいインデックスの再構築が終了するまでクエリオプティマイザにインデックスを使用させないように指定する方法が用意されています。

※ 2024/8/2: 2024.1以降から利用できる方法を追加しました。

2024.1以降

CREATE INDEXのDEFERオプションを使用します(オプションを付けないCREATE INDEX文では、作成時にインデックスの再構築も同時に行われます)。

1
0 355
記事 Megumi Kakechi · 7月 28, 2024 2m read

これは InterSystems FAQ サイトの記事です。
通常SQLCODE -114(一致する行が既に別のユーザにロックされています)のエラーはロックが競合した場合に発生します。

こちらはレコードロック競合があったり、ロック閾値を超える更新を行いテーブルロックに昇格した際に、そのテーブルレコードに対して別のプロセスよりSelectを行い共有ロックを取ろうとして失敗した(ロック待ちがタイムアウトとなった)場合に発生します。

Selectで共有ロックを取る場合というのは、IRIS の ISOLATION LEVEL がREAD COMMITTED(デフォルトはREAD UNCOMMITTED)で、Selectを行った場合です。

例:Sample.Personテーブルにテーブルロックがかかった状態で以下を実行する場合

0
0 178
記事 Megumi Kakechi · 7月 23, 2024 4m read

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

JDBC および ODBC 経由でInterSystemsIRISから外部データベースにアクセスしたい場合、SQLゲートウェイを使用しリンクテーブルを作成して接続できます。

2023.1以降のバージョンでは、リンクテーブルに加えて、外部テーブル/FOREIGN TABLE を使用することが可能となりました(2024.1時点で実験的機能)。

外部テーブルというのは、物理的に別の場所に保存されているデータを IRIS SQL に投影する非常に便利な機能です。
外部テーブルを使用する場合は、Java(2023.1の場合は1.8~)を事前にインストールし、JAVA_HOME環境変数を設定するだけで、簡単に接続することが可能です。

※JAVA_HOME環境変数設定例:
 


外部テーブルの使用方法については、以下の記事で紹介しております。
レシピデータセットを外部テーブルで読み込み、組み込みPythonでLLMを使って分析する (Langchain + OpenAI)
 

こちらの記事では、外部テーブルで作成できる2種類のテーブル(「CSVファイル直接接続」と「外部DBへのJDBCゲートウェイ経由での接続」)の簡単なサンプル作成例と、外部テーブルの特徴を紹介しています。
 

0
0 258
記事 Megumi Kakechi · 7月 16, 2024 2m read

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

SQLゲートウェイの接続設定は管理ポータルで作成できますが、プログラムでも作成が可能です。

管理ポータル:
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続]

こちらのトピックでは、ODBC/JDBCそれぞれの設定をプログラムで行う方法をご紹介します。


--- SQL Gateway for ODBC ----

set gc = ##class(%SQLConnection).%New()
 set gc.Name = "test"set gc.DSN = "IRIS User"set gc.Usr = "_system"set gc.pwd = "SYS"set gc.bUnicodeStream = 1set gc.useCOALESCE = 1write gc.%Save()
 


--- SQL Gateway for JDBC ----

0
0 169
記事 Toshihiko Minamoto · 7月 16, 2024 12m read

Pandas は単に人気のあるソフトウェアライブラリだけではありません。 これは、Python データ分析環境の基礎でもあります。 その単純さとパワーで知られており、データの準備と分析の複雑さをより扱いやすい形態に変換する上で不可欠な多様なデータ構造と関数が備わっています。 これは、主要なデータ管理および分析ソリューションである InterSystems IRIS プラットフォームのフレームワーク内で、主要評価指標(KPI)やレポート作成用の ObjectScript などの特殊な環境に特に関連しています。
 
データの処理と分析の分野において、Pandas はいくつかの理由により際立っています。 この記事では、それらの側面を詳細に探ります。
 

  • データ分析における Pandas の主なメリット:

ここでは、Pandas を使用する様々なメリットについて深く掘り下げます。 直感的な構文、大規模なデータセットの効率的な処理、および異なるデータ形式のシームレスな操作などが含まれます。 Pandas を既存のデータ分析ワークフローに統合する容易さも、生産性と効率を強化する大きな要因です。

  • Pandas による一般的なデータ分析タスクのソリューション:
0
0 132
記事 Toshihiko Minamoto · 6月 26, 2024 8m read

近頃、LLM や AI などに関する話題で非常ににぎわっています。 ベクトルデータベースもそれなりに関わっており、IRIS 以外では、世界中で多様なサポートがすでに実現されています。

なぜベクトルなのでしょうか?

  • 類似検索: ベクトルでは、データベース内で最も類似する項目やドキュメントを検索するなど、効率的な類似検索が可能です。 従来のリレーショナルデータベースは完全一致検索向けに設計されているため、画像やテキストの類似検索といったタスクには向いていません。
  • 柔軟性: ベクトル表現には汎用性があり、テキスト(Word2Vec、BERT などの埋め込み経由)や画像(ディープラーニングモデル経由)などの様々なデータタイプから導き出すことができます。
  • クロスモーダル検索: ベクトルでは、様々なデータモダリティでの検索が可能です。 たとえば、画像のベクトル表現を基に、マルチモーダルデータベースで類似する画像や関連するテキストを検索できます。

理由は他にも多数あります。

そこで、この Python コンテストでは、このサポートを実装してみることにしました。 残念ながら時間内に完成させることはできませんでしたが、その理由を以下で説明します。

0
0 195
記事 Tomoko Furuzono · 6月 6, 2024 2m read

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

IRIS/IRIS for Health2024.1以降のバージョンのSQLで、JSON_TABLE関数がサポートされています。
【ドキュメント】JSON_TABLE(SQL)

これを使用することにより、JSON形式データを表形式で取得することが出来ます。
【例】郵便番号情報を外部から取得し、表形式にマッピングする。
(取得データ(JSON))

{
	"message": null,
	"results": [
		{
			"address1": "東京都",
			"address2": "新宿区",
			"address3": "西新宿",
			"kana1": "トウキョウト",
			"kana2": "シンジュクク",
			"kana3": "ニシシンジュク",
			"prefcode": "13",
			"zipcode": "1600023"
		}
	],
	"status": 200
}

(SQL例)
 ※下記の実行には、SSL構成が必要になります。事前に構成を作成して、その構成名を使用してください。

0
0 135
お知らせ Mihoko Iijima · 3月 26, 2024

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

(2024/5/30:6月の日時、ウェビナー内容を更新しました)

InterSystems IRIS、InterSystems IRIS for Healthの新バージョン2024.1がリリースされました。

様々な機能の追加や実験的機能としての追加が行われましたが、その中から以下3種類の内容についてウェビナーを開催します!📣

✅4月23日(火)13時半~14時:IRIS 2024.1の管理用Webサーバ(PWS)廃止に備えて

YouTube公開しました👉https://youtu.be/bVwWZt1oNws?list=PLzSN_5VbNaxCeC_ibw2l-xneMCwCVf-Or

✅5月30日(木)13時半~14時:ベクトル検索機能のご紹介

YouTube公開しました👉https://youtu.be/v0G7K2et_Yk?list=PLzSN_5VbNaxB39_H2QMMEG_EsNEFc0ASz

✅6月25日(火)13時半~14時:FHIR新機能のご紹介~2024.1~

オンデマンド配信はこちら👉https://event.on24.com/wcc/r/4597704/ADA161B6446E6BA01623C875CF596FD0
(資料PDFもオンデマンド配信画面よりダウンロードいただけます)
 

2
0 220
記事 Megumi Kakechi · 5月 24, 2024 4m read

こちら の記事では、LinuxでJDBC接続を行う方法  をご紹介しました。

今回は、SSL/TLS を使用するように InterSystems IRIS スーパーサーバを構成 した IRIS に対して、JDBCで SSL/TLS 接続をする方法をご紹介します。

LinuxでJDBC接続を行う方法 の記事で紹介している手順で、SSL/TLS なしでJDBC接続できる環境を用意していることを前提にご説明します。

手順は以下のようになります。手順の詳細は、この後で説明します。

1.CA証明書を用意します

2.Java キーストアに証明書をインポートします

3.Java ファイルを含むディレクトリに、SSLConfig.properties という名前の構成ファイルを作成ます

4.Java のコードに SSL/TLS の使用を指定する設定を追加します


1.CA証明書を用意します

最初に、CA証明書を用意します。証明書に問題がないか証明書情報を確認します。
※ ***.***.***.*** :接続先IRISサーバのIPアドレス

0
0 475
記事 Megumi Kakechi · 5月 6, 2024 4m read

前回、LinuxでODBC接続を行う方法 をご紹介しました。

今回は、LinuxでJDBC接続を行う方法 をご紹介します。作業は、root ユーザ で行います。

はじめに、Linuxのバージョンを確認します。

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
:


1. yumパッケージのアップデートを行います

$ su -
Password:
Last login: Tue May  7 01:04:35 UTC 2024 on pts/0
# yum update


2. Java をインストールします

今回は、Adoptium OpenJDK の Version 8 - LTS を使用してテストします。
※ *.tar.gz は、/usr/java 以下にダウンロードします。

#cd /usr/java# ls
OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
# tar zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
:
# ls
jdk8u412-b08  OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
0
0 1342
記事 Megumi Kakechi · 5月 2, 2024 3m read

こちらの記事では、LinuxでODBC接続の設定を行う方法をご紹介します。


はじめに、Linuxのバージョンを確認します。

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
:


1. yumパッケージのアップデートを行います

$ sudo yum update


2. unixODBCをインストールします

$ sudo yum install unixODBC

確認します

$which odbcinst
/usr/bin/odbcinst
$which isql
/usr/bin/isql
$ odbcinst -j
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/ec2-user/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8


3. IRISクライアントをインストールします

0
0 917
記事 Megumi Kakechi · 4月 25, 2024 2m read

大きなサイズのデータを持つフィールドに対してインデックスを作成すると、<SUBSCRIPT>エラーとなることがあります。

これは、グローバルの添え字(サブスクリプト)のサイズには制限があり、制限を超えるとエラーとなるためです。

例えば、以下のようなインデックスの場合、

^Sample.PersonI("NameIdx"," xxx...xxx",1)       =       ""

グローバル名+サブスクリプト部(=の左側)が、エンコード文字数で最長 511 文字を超えるとエラーとなります(日本語の場合はもっと小さな文字数です)。

※ご参考:グローバル参照の最大長


大きいデータを持つカラムに対してインデックスを設定したい場合の回避策としては、こちらの ドキュメント にありますように
「該当のプロパティのインデックス照合文字列を任意の文字数(例:128文字)に制限した照合を定義」
する方法があります。


具体的には、以下の2つの方法になります。
※クラス定義の変更/保存/コンパイル+インデックスの再構築が必要です。

1. プロパティ定義で対応する:

0
0 151
記事 Toshihiko Minamoto · 4月 18, 2024 13m read

我々には、Redditユーザーが書いた、おいしいレシピデータセット がありますが, 情報のほとんどは投稿されたタイトルや説明といったフリーテキストです。埋め込みPythonLangchainフレームワークにあるOpenAIの大規模言語モデルの機能を使い、このデータセットを簡単にロードし、特徴を抽出、分析する方法を紹介しましょう。

データセットのロード

まず最初に、データセットをロードするかデータセットに接続する必要があります。

これを実現するにはさまざまな方法があります。たとえばCSVレコードマッパーを相互運用性プロダクションで使用したり csvgenのようなすばらしい OpenExchange アプリケーションを使用することもできます。

今回、外部テーブルを使用します。これは物理的に別の場所に保存されているデータをIRIS SQLで統合する非常に便利な機能です。

まずは外部サーバ(Foreign Server)を作成します。

CREATE FOREIGN SERVER dataset FOREIGN DATA WRAPPER CSV HOST '/app/data/'

その上でCSVファイルに接続する外部テーブルを作成します。

0
0 492
記事 Minoru Horita · 4月 4, 2024 6m read

みなさんこんにちは! 今回は、IRIS 2024.1で実験的機能として実装されたVector Search (ベクトル検索)について紹介します。ベクトル検索は、先日リリースされたIRIS 2024.1の早期アクセスプログラム(EAP)で使用できます。IRIS 2024.1については、こちらの記事をご覧ください。

ベクトル検索でどんなことができるの?

ChatGPTをきっかけに、大規模言語モデル(LLM)や生成AIに興味を持たれている方が増えていると思います。開発者の方々の中には、中はどうなっているのか気になっている方も多いのではないでしょうか。実は、LLMや生成AIの仕組みを理解したいと思えば、ベクトルの理解は不可欠な要素となります。

ベクトルとは?

ベクトルは、高校の数学で習う「あの」ベクトルのことです。が、今回は、複数の数値をまとめて扱うデータ型であるという理解で十分です。例えば、

( 1.2, -4.5 )

という感じです。この例は、1.2と-4.5という2つの数値をまとめており、数値の個数(ここでは2)のことを次元数と言います。我々の生きている場所を3次元空間と呼ぶことがありますが、これは、3つの数値で場所が特定できることを表しています(例えば、緯度、経度、標高の3つで地球上の位置を完全に特定できます)。

ベクトルをどのように使うのか?

1
1 792
記事 Megumi Kakechi · 4月 2, 2024 3m read

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

Caché 2016.2以降(IRISはすべてのバージョン)で、クエリプランの凍結機能 が実装されました。
この機能により、メジャーバージョンのアップグレードを行った場合、既存のクエリプランは自動的に凍結(※)されます。
2023.1以降のバージョンより、アダプティブモードが無効の場合のみ、クエリプランが自動的に凍結されます。有効の場合は、既存のクエリプランは無効になり、新しいシステムでクエリの最初の実行時に新しい最適化されたクエリプランを生成します。既定は有効です。

こちらのトピックでは、
「新しいバージョンにしたのに、一部のクエリで思うようなパフォーマンスが出ない」
「凍結プランが使用されている場合、新しいプランでパフォーマンスがどのくらいでるのかを知りたい」
という場合の確認手順について、ご説明します。
 

%NOFPLANキーワードで新しいプランを試してみる

Frozen Plan (古いバージョンと同じプラン)を使用していて思ったようなパフォーマンスが出ない場合、凍結を解除して新しいプランを試すことが可能です。
新しいプランを試したい場合は、%NOFPLANキーワードをつけてクエリを実行します。
%NOFPLANを付けた方がパフォーマンスが良ければ、プラン凍結を解除して新しいプランで実行するようにします。

0
0 112
記事 Toshihiko Minamoto · 3月 28, 2024 12m read

ローコードへの挑戦

こんな状況を思い浮かべてください。「ウィジェットダイレクト」というウィジェットとウィジェットアクセサリーを販売する一流のネットショップで楽しく勤務しています。先日、上司から一部の顧客がウィジェット商品にあまり満足していないという残念な話を聞き、苦情を追跡するヘルプデスクアプリケーションが必要となりました。さらに面白いことに、上司はコードのフットプリントを最小限に抑えることを希望しており、InterSystems IRIS を使って 150 行未満のコードでアプリケーションを提供するという課題をあなたに与えました。これは実際に可能なのでしょうか?

免責事項: この記事は、非常に基本的なアプリケーションの構築を記すものであり、簡潔さを維持するために、セキュリティやエラー処理などの重要な部分は省略されています。このアプリケーションは参考としてのみ使用し、本番アプリケーションには使用しないようにしてください。この記事ではデータプラットフォームとして IRIS 2023.1 を使用していますが、それ以前のバージョンでは記載されているすべての機能が提供されているとは限りません。

ステップ 1 - データモデルの定義

1
0 151
記事 Megumi Kakechi · 3月 24, 2024 2m read

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

クエリパフォーマンスを左右するクエリプランは、テーブルチューニングを行った結果の統計情報を元に生成されます。

ある環境で期待したプランになったけれど、他の環境では意図したプランにならない場合、(期待したプランとなる)既存環境からテーブル統計情報をエクスポートして別の環境にインポートし、同じ統計情報をもとにしたクエリプランで実行することができます。
 

既存環境からテーブル統計情報をエクスポートして、対象環境にインポートする方法

新規環境にてテーブルチューニングをしても思うようなパフォーマンスが出ない場合に、パフォーマンスの出ていたテスト環境と、もう一つの別の環境で同じクエリプランでの実行を試してみたい場合があるかと思います。
そんな時は、テーブル統計情報である選択性(Selectivity)とデータ数(ExtentSize)情報等をエクスポートして、対象環境にインポートする方法が使用できます。
もちろん、データの偏りによってクエリオプティマイザが適切だと判断して作成したプランが最適だと考えられますが、どうしても思うようなパフォーマンスが出ない場合に、原因調査も含めてこちらの方法をお試しください。

以下のように統計情報をエクスポート/インポートすることで、同じテーブル統計情報=同じクエリプラン で実行することが可能となります。

0
0 283
記事 Megumi Kakechi · 3月 11, 2024 2m read

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

SQLのINSERT/UPDATE/DELETE文で大量のデータを更新する際に、高速化する方法をご紹介します。
以下の2つの手順を実行することで、更新処理のパフォーマンスを向上させることが可能です。

1.INSERT/UPDATE/DELETE時にインデックスを作成せず、あとでまとめて作成する

2.INSERT/UPDATE/DELETE時にジャーナルをOFFにする

1は、%NOINDEX キーワードを指定してインデックスの生成を後でまとめて行うことで、インデックスの構築を抑制しパフォーマンスを向上させる方法です。

クエリ実行例は、以下のようになります。

例:
UPDATE %NOINDEX tablename …
INSERT %NOINDEX INTO tablename …
DELETE %NOINDEX FROM tablename ...


更新後、あとでまとめてインデックスを再構築する場合は管理ポータルで行う方法と、コマンドで行う方法の2種類があります。

◆ 管理ポータルの場合...

[システムエクスプローラ] > [SQL]
 (ネームスペース指定&テーブルを選択して) アクション - テーブルのインデックスを再構築...

◆ コマンドの場合...

0
0 917
記事 Megumi Kakechi · 3月 3, 2024 2m read

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

ユーザに権限を与えたい場合、「GRANT」コマンドや「GrantPrivilegeメソッド」を使用しますが、ロールに対しても権限を与えることができます。

例えば、特定スキーマにのみ何でもできるロールを作成し、それを特定のユーザに割り当てるようなことが可能となります。

こちらの記事では、その方法をご紹介します。

(1) GrantPrivilegeメソッドを使用して「スキーマXXX に何でもできるロール」を作成し、
(2) 該当ユーザに (1) のロールを割り当てる


★GRANT文を使う場合

GRANT <priv> ONSCHEMA <your schema> TO <role>


例:ロール testRole に、スキーマ XXX に対する、挿入/更新/参照/削除 の権限を付与します。

GRANTInsert,Update,Select,DeleteONSCHEMA XXX TO testRole
※その他、Alter, References, Execute, Use などの指定も可能です。

こちらは、まだ存在しないスキーマに対しても実行可能です。
XXXスキーマにテーブルが登録されれば、自動的にそのテーブルに対して指定した権限が有効になります。

0
0 128
InterSystems公式 Seisuke Nakahashi · 1月 16, 2024

InterSystems IRIS Cloud SQL と InterSystems IRIS Cloud IntegratedML がリリースされました。これらサービスは、実績やエンタープライズクラスのパフォーマンスおよび信頼性を兼ね備えた InterSystems IRIS テクノロジーをもとにした、クラウド環境におけるソリューション開発のベースとなるサービスです。 

InterSystems IRIS Cloud SQL は、多くのエンタープライズのお客様にご利用いただいている InterSystems IRIS のリレーショナル・データベース機能を、アプリケーション開発者やデータ専門家など幅広いみなさまにお届けする、フルマネージドのクラウドサービスです。InterSystems IRIS Cloud IntegratedML は、DBaaS (database-as-a-service) であるこの InterSystems IRIS Cloud SQL のオプション機能であり、SQL ネイティブによる自動機械学習機能への容易なアクセスを提供します。このサービスを利用して、アプリケーション・コードに簡単に組み込めるシンプルなSQLコマンドセットを通じて、データに近いところで実行されるMLモデルを実装することが可能となり、アプリケーションをより強力なものにすることが出来ます。

0
0 86