目次
データ駆動型とは何か
データ駆動型(Data Driven)とは、言わば、コンピュータの世界におけるコペルニクス的発想です。
すなわち、今までのコンピュータの世界における処理というものは、プロセッサーが中心にあって、そのプロセッサーが人間のように、逐次型で順番にものごとを処理してきました。それに対して、データ駆動型という考え方は次の特徴を持っています。
- 処理の主体がプロセッサーから個々のデータに移っています。
- 従来の処理では、プロセッサーがプログラムの書かれた順で逐次処理をしました。
- 一方、データ駆動型の場合、主体は個々のデータであり、そのデータが変更されたことをきっかけにして処理が行われます。
- 従って、各データの変更による処理は、同時並列的に、かつ、そのデータの変更によって必要とされる処理だけに専念して行えるため、処理が高速化されるだけでなく単純化もされます。
- その結果、データ処理の信頼性も高まります。
- また、違った観点から述べるとするならば、本来の人間の思考に素直な考え方と言えます。今日のプログラム言語は、あまりにもコンピュータ・プロセッサーが順番に処理をするという機械の都合に合わされておりますが、データ駆動型のようにデータを中心に物事を考えられるということは、より人間の考え方に素直であると言えるでしょう。
以上、データ駆動型の概念やしくみの特長について述べましたが、今後、データ駆動型によってデータの数だけ並行に処理することが可能となるため、人間的に処理が分かり易いと同時に、高いパフォマンスを実現することが可能となっています。
DDSATとは何か
データ駆動型システム・アシスト・ツール(Data Driven System Assist Tool:DDSAT)とは、任意のデータの変更をきかっけとして、玉突きのように関連のデータが更新されていく仕組みを提供します。
- 弊社開発のRelational Data Driveb Database:R3D(日本と米国特許取得)の後継システムです。
- R3Dのコンセプトを引き継ぎながらも、さらに、利用範囲を広げ、どのようなDBMSやプログラムからでも利用可能となっています。
- DDSATの利用の構成は、DDSATのサーバを中心として各種サーバからapiにて利用が可能です。
それらの構成は以下のようになります。
- DDSATサーバは、Linux系統のOSのサーバならば、その中に構築することができます。
- DDSATサーバは、万全なセキュリティ対策を施した上で、外部のユーザサーバからのアクセスによって、起動条件に合致したトリガープログラムを起動します。
- この形態は、クラウド方式でも、また、自社内に構築するオンプレミス方式であっても利用が可能となっています。
- データベースにはMySQL、Microsoft社のMSSQL(MS SQL Server)、PostgreSQLなど他、各種DBMSを環境として選ぶことができます。(現在のところ、データ項目のcheck機能は、MySQL、MSSQL、Postgresに限られます)
- さらに、データベースを利用しない場合でも、プログラム内のデータエリアの更新も起動条件とすることができます。
利用の手順の流れは次のようになります。
![](https://rsun.jp/XzLsQ8/wp-content/uploads/2024/06/ddsat_flow1.png)
DDSATの開始宣言
- サーバの起動時に自動的にddsat_startコマンドが実行され、システムが初期化されます。
- 管理者は、DDSATをリスタートさせることもできます。その再起動を行うコマンドがddsat_startコマンドです。
- ddsat_startコマンドは、メモリ内のトリガーなどの登録をすべてクリアしてddsatを初期状態にします。
async function start(){
try {
const response = await fetch("https://ddsat_svr:8081/ddsat_start", {
method: "POST",
headers: {"Content-Type": "application/json",},""}); //---ddsat_startのパラメータは不要。
const result = await response.json();
let pno=result.pno; //---会話番号--最初なので、1が返ります。
let mess1=result.message; //---ddsatからのメッセージ。エラーなしの場合は大文字の"OK"。
} catch (error) {
console.error(" ddsat post error :", error);
}
}
DDSATの稼働状況閲覧
DDSATサーバに対して次のURLを入力することによって監視画面を表示させるとができます。
https://ddsat_svr:8081/ddsat
DDSATコマンドの実行
- DDSATの各コマンドを利用するためには、pnoというprocess numberという会話番号と、その会話番号とセットになって渡される16桁の暗号Keyコードを必要とします。
- DDSATの各コマンド機能を利用するに当たって、まずはDDSATから、このpno会話番号と暗号keyコードを受け取らなければなりません。
- この両者を得るコマンドが、このddsat_beginというコマンドとなります。
利用の例は以下のようになります。
async function begin(){
try {
const response = await fetch("https://ddsat_svr:8081/ddsat_begin", {
method: "POST",
headers: {"Content-Type": "application/json",},""}); //---ddsat_beginのパラメータは不要。
const result = await response.json();
let pno=result.pno; //---会話番号をもらう。実行するたびに1アップします。
let key=result.key; //---暗号Keyコードをもらう。実行のたびに変更されます。
let mess1=result.message; //---ddsatからのメッセージ。エラーなしの場合は大文字の"OK"。
} catch (error) {
console.error(" ddsat post error :", error);
}
}
DDSATトリガープログラムの登録
- どのサーバのどのデータベース、あるいは、どのプログラムのどのデータが変更されたときに起動されるのか、という被起動プログラムを登録します。
- 一度登録しておけば、その後、どのようなプログラムからでも当該のデータが更新されたならば、それをきっかけとしてここで登録したプログラムが起動実行されます。
以下は、その簡単な例です。
async function trigger(pno,keyno){
let json1={
pno : pno ,
key : keyno ,
trigger: {
tr_prog:"http://my_server.jp",
tr_id:"my_trg1" } ,
database:{
db_type: "mysql",
db_server: "localhost:3306",
db_user: "root",
db_pass: "mypass",
db_name: "jinji_db",
db_id: "my_db1" } ,
table:"T001person",
field:{ T001_empno:"k",
T001_name:"u",
T001_birthday:"u",
T001_phone:"u"
}
};
try {
const response = await fetch("https://ddsat_svr:8081/ddsat_trigger", {
method: "POST",
headers: {"Content-Type": "application/json",},
body: JSON.stringify(json1)});
const result = await response.json();
let pno=result.pno; //---会話番号--指定したpnoと同じ番号が返されます。
let mess1=result.message; //---ddsatからのメッセージ。エラーなしの場合は大文字"OK"。
} catch (error) {
console.error(" ddsat post error :", error);
}
}
DDSATデータ操作コマンドの実行
DDSATデータ操作コマンドには、以下があります。
- changeコマンドとは、例えば、業務処理プログラムにてデータべース内、あるいはあるエリアのデータを変更したならば、DDSATに対して変更の通知を行う機能を提供します。
- R3Dと違い、DDSATでは、外にトリガープログラムを持つため、それ故、DDSATに変更の通知をしなければなりません。
- その変更の通知や、あるいは、データの演算結果を知らせるコマンドが、DDSATのchangeコマンド、resultコマンド、そして、複数の結果がそろうまで待ち合わせを行うwait_resultコマンドなどです。
言語仕様や利用法の詳細については、コマンド名をクリックして参照をして下さい。