SQLでデータにアクセス
先ほど述べたように、IRISではクラス定義を行うと同時にテーブル定義も行われます。IRISはグローバルと呼ばれる高速・軽量なデータベースが基礎になっており、テーブルやクラスは、グローバルに保存されたデータをどのようにアクセスするかという「アクセス・レイヤー」の定義によって実現されます。このことによりIRISでは、同一のデータに対して必要に応じてSQLを使用したり、オブジェクト指向アクセスを使用したりすることが可能となります。
今回は、管理ポータルから、SQLによるアクセスについて簡単に説明します。管理ポータルのメニューから[システムエクスプローラ]→[SQL]を選んでください。次の図のような画面が開くので、ネームスペースが”DRIVE”となっていることを確認してください。”DRIVE”になっていない場合は、隣の「変更」をクリックしてネームスペースを変更してください。
画面右側の「クエリ実行」タブをクリックし、
select * from drivedemo_data.carlatest
と入力して「実行」ボタンを押してみてください。今はデータが入っていないので、一件もヒットしない(0 row(s) affected)と表示されます。
注意
クラス名はDriveDemo.Data.CarLatestですが、テーブル名はDriveDemo_Data.CarLatestとなっていることに注意してください。クラス定義では、”.”で区切られたパッケージを複数階層つなげることができますが、SQLで使用するテーブル名ではパッケージは1つのみです。従って、DriveDemo.Data→DriveDemo_Dataのように、最後の”.”以外は”_”に変換されます。
次に、以下のようなInsert文を実行します。
insert into drivedemo_data.carlatest (CarId, Tm, Speed, BrakeSW, aX, aY, aZ) values ('car1', to_timestamp('2020-01-14 9:00:00', 'YYYY-MM-DD HH:MI:SS'), 30.0, 0, -100, 200, 1000)
1 row(s) affectedと表示されたらInsertは成功です。そして、先ほどのSelect文を再度実行してみてください。そうすると、次の図のように、先ほどInsertした行が表示されます。
ここで、クラス定義のプロパティが、テーブルのフィールドに対応していることに注意してください。
今回は管理ポータルからSQLを発行しましたが、IRISはJDBCなどの標準プロトコルもサポートしているので、他のクライアントプログラムからRDBMSと同様にデータにアクセスできます。
まとめ
今回の記事では、Visual Studio Codeを用いて、IRISにクラスを定義する方法を紹介しました。IRISのデータベースは、高速・軽量なグローバルと呼ばれる構造を基礎としており、クラスのインスタンスはグローバルとして保存されます。また、クラス定義と同時にテーブル定義も自動的に行われます。これにより、必要に応じてSQLによるアクセスとオブジェクト指向アクセスとを自由に選ぶことができます。このような仕組みにより、高速で自由度の高いデータベースを簡単に構築することが可能になります。
次回は、前回構築したインタオペラビリティ機能を拡張して、IRISのデータベースにデータを格納する手順について紹介する予定です。
参考
インターシステムズでは、開発者の皆様にIRISを知っていただくために、いろいろな機能を紹介する短い動画を作成しています(日本語字幕付き)。
インターオペラビリティ機能は以下のURLで説明されています。ぜひご覧ください。