Loading

SQL Sequencer (SQLS)

SQL Sequencerの概要

SQLSequencer(以下、SQLS)は、予め順番に並べた複数のSQL文を順次実行する仕組みです。

当社は、2000年創業以来、一貫して基幹業務システムを構築してきましたが、画面処理を伴わないプログラム(以下、バッチ処理)の標準化をどうするかの思考過程で生まれたものです。原型は、2005年当時に開発し、実際に利用して、大きな成果を実感しています。以来、当社においてほとんどすべてのバッチプログラミングはしておりません。SQLSに与える実行制御XMLのみの記述で処理を行っております。

SQLSを利用すると大変安価に確実に業務システムを構築できることを実際のシステム構築を通じて実感しています。
必要知識はDB設計技術とSQL文のみです。通常のプログラミングする場合ですと、この他に言語知識、オブジェクト指向知識、ログ出力などの標準化ルールも別途必要になります。

この様にSQLSは、必要最小限の知識でシステム構築に着手できますので、教育を最小限にしてシステム構築業務に参画できることになります。それでなお且つ、生産性が高く、品質のバラツキを少なくできます。業務システム構築の一番重要な知識はDB設計ですが、空いた工数をそちらに振り向けることができます。

当社がSQLSを用いてシステム構築する対象は、これまで、汎用コンピュータ、オフコンで行われてきた領域です。例えば、購買管理、販売管理、在庫管理などの基幹業務です。
そんな活用にあって、処理速度についても問題を感じておりません。SQLSを実行するDB管理システム(以下、DBMS)とハードウエアの進展はすさまじく、10年程度以前の汎用コンピュータと比べても数倍の速度で実行してくれます。またDBMSは、ネットワーク分散も安定しており、複数のコンピュータからの分散処理環境も実現してくれます。 SQLSはDBMSの安定とハード進歩を最大限活用する仕組みなのです。

当社では、SQLSによるバッチ処理のほか、画面プログラムの自動生成、JOBの実行管理システムの整備にも同時に取り組んでいます。SQLSと組み合わせて劇的なコストダウンを実現しています。

一度、SQLSをご評価頂き、その効果を実感してください。

SQL Sequencer (SQLS)動作説明図

SQL Sequencer (SQLS)動作説明図<

機能と特長

1.SQLを順次実行する

  • SQLを順番に記述します。実行結果によって分岐することも可能ですのでSQLの組み合わせがひとつのプログラムの様な振る舞いをします。

2.SQLを外部パラメータの文字列で置換する

  • 予め定められたSQLを実行するだけでなく、実行時にSQLの内容を変化させたい場合があります。例えば、検索条件を変化させたり、UPDATE文に合計値を入れるなどがあります。外部パラメータによるSQLの置換などにより処理の汎用化をもたらします。

3.実行結果で条件分岐する

  • SQLの実行結果によって、処理を分岐させたい場合があります。例えば、SELECT文でレコードの件数を取得し、0件の場合は、処理を中断するなどの場合などがあります。 また、分岐は、前のSQLに戻ることも可能なので、あたかもプログラムの様に振る舞います。

4.エラー処理を行う

  • DBMSが出力するエラーによって分岐することも可能です。キー値の重複、排他競合などの検出も可能です。検出後の分岐も行えます。

5.CSV作成が自由に行える

  • データの出力結果をCSVで受け取りたいケースは結構あります。SQLSでは検索結果をCSVにする機能をご用意しています。

6.LOG出力

  • 実行結果を必要十分な内容でログ出力しています。

7.風神レポートとの連携

  • SQLSはDB操作を自由に行い、結果をCSV、固定長ファイルに出力することが可能です。そのCSVファイルを風神レポートと接続することで、非常に簡単にそして安価に、本格的な帳票出力することが可能になります。
    (→風神レポートのご説明はこちら)

8.COBOLコンバートに最適

  • 現在でも、多くのシステムはCOBOL系言語で構築されていると思います。COBOLはビジネスシステムを構築する上で非常に便利でしたが、RDBの発達、分散系OSの発展により経済性の面では不利になっていると思われます。COBOLは、抽出、集計、マッチング、並び替えなどの処理をファイル連携で行いますが、それらの処理はSQLの順次実行で代替可能です。

Q&A

Q1.オブジェクト指向プログラミングとの関係をどう考えていますか?

当社もオブジェクト指向に積極的に取り組んでおります。特に画面プログラムにおいては部品(クラス)の組み合わせで、プログラミングを効率化しています。 その中で私たちが着目した点は、これらの画面プログラムと画面を伴わないバッチプログラムに分離してシステム構築するということでした。

Q2.DB操作をクラスに隠蔽するという考え方がありますが?

DB操作をあるクラスに集中させるという考え方は効率的と考えています。当社も画面プログラムではそうしています。でもバッチ処理においては、クラスすら作成する必要が無いと考えています。その中で考えなければいけない事は、クラスは共通クラスを作成する個人・グループにより標準化され、プログラマーに提供しますが、SQLSの場合は、その利用者(機能を作成する人)自身がSQLの基本知識が必要ということです。

しかし、当社としては、「クラス利用者のSQL知識が不要」という考え方には疑問を持っています。また、クラスは言語の種類、バージョンに依存します。ある期間で考えた時、その継続性はDBMSの方に分があると考えています。

Q3.SQL文の方言をどう考えていますか?

現時点で、DBMS間の利用法差異がどの程度存在するかは、明確に存じていません。
しかし、SELECT、UPDATE、INSERT、DELETEの基本構文が異なっているとは思えません。業務システムで利用する命令はこれらがほとんどですからこの問題が発生していると思っていません。

私たちの経験では、OracleとSQLServerでは、DBMS差異をあまり感じませんでした。もしあるとすれば、処理スピード、サポート体制などでしょうか?

Q4.SQLSで出来ないバッチ処理はどんな処理でしたか?

順序が必要な処理です。例えば、トランザクションデータとして、1番目のレコードで、あるテーブルのレコードを作成し、2番目のデータでそのレコードを更新する場合などです。この様な例ですと最初に2番目のレコードで更新すると、NOT FOUNDになってエラーとなります。

この様な場合は、DBMSが用意する手続き言語(Oracleの場合はPL/SQL)を利用しています。このスクリプトもSQLSから起動可能です。これまで、現行システムコンバートの際に何回か遭遇しましたが、新規の場合は設計段階で排除できます。

Q5.運用・保守での利点は?

業務ロジックが動作定義XMLの中に記述されていますので、テキストエディターなどで簡単に確認でき、修正できます。
プログラムソースを開発環境に呼び込んで修正、コンパイルする必要がありませんので問題の修復、機能追加・変更に直ぐに対応できます。

Q6.開発体制をどうしていますか?

業務システムの構築においてDB設計が全てになります。当社の場合、ER図を用いてDB設計しています。ここは熟練者が入念に行います。
このDB設計が終了しますと、動作定義XMLを記述するだけ(機能説明書は作成)になります。新人にはSQL教育のみをしています。
プログラミング教育はキャリアパスの中でどこかで行わなければならない必須知識ですが、DBのデータ処理を行うだけであればSQL教育のみでOKです。

Q7.どの位、生産性は上がりますか?

プログラム作成に比べて、その機能の大きさ、複雑さが異なるのでどの位かは一概には言えませんが、DB構成が作成されていて、機能説明が提示されていれば、SQL文を記述するだけなので、通常のプログラム単位を想定すれば半日を越えることは、まずありません。当然ですが機能設計部分は、両者に差異はありません。

Q8.なぜバッチ処理はSQLSでほとんどど可能と思ったのですか?

システム開発会社である当社が4年ほどのシステム構築業務中でバッチプログラムをほとんど作成しなかったという点。汎用COBOLシステムのコンバート作業(500本-700本規模)でバッチ処理は、全て代替可能であった経験からです。

開発・運用基盤

  1. NET Framework2.0以上
  2. DBMSはOracle、MS-SQLServer
  3. SQL記述はテキストエディターなど
  4. 実行場所はローカル、リモート接続の区別なく利用可能

SQLSと風神レポートで本格的システムが簡単に作れます

SQLSと風神レポートで本格的システムが簡単に作れます

有用性をどう判断しているか

1.社内利用4年間の実績から

当社の開発標準は、汎用コンピュ-タ時代の開発手法(経験)の幾つかを踏襲しています。例えば画面プログラムとバッチプログラムの分離。そしてジョブ管理による実行などです。(最近の開発ですと画面プログラムに多くの機能を実装するケースが多い様に感じております。)
分離したバッチプログラムの部分にSQLSを適用し、業務システムのバッチ処理ではプログラムを製造していません。

■ 効果

  • 新人教育は、SQLと業務とテーブル設計(業務教育)に注力でき即戦力化が可能
  • プログラムを記述しないので品質が一定になる
  • プログラムより生産性が高い
  • 運用・保守はSQLの変更だけとなるので修正・変更管理に強い

2.汎用コンピュータCOBOLプログラムの移行

SQLSを500本規模のCOBOLバッチ処理に適用致しましたが、すべて移行可能でした。COBOLロジックをSQLにする事は当初、速度の点で不安を感じておりましたが、サーバのCPU速度の向上などで、逆に数倍の処理時間の短縮が可能でした。10年程度前の汎用機と比べるとシングルCPU-2GHZ程度(30万円前後のサーバー)でも数倍の高速性があります。
この事から、これまでCOBOLで行ってきた、抽出、集計、並び替え、マッチングはすべてSQLSで可能との自信を得ました。

■ 確認したこと

  • 大規模システムでも構築可能
  • レガシーシステム変換ツールとしても効果がある
  • 当社開発分散JOB実行管理(OnJob)と絡めることで自動化運転化を実践
  • 業務システムは極めて安価に構築可能であることが確認できた

3.風神レポートとの接続

業務システムの多くは、画面での情報入力、バッチ処理、帳票出力となります。汎用コンピュータやオフコンの時代では、帳票出力処理は全プログラムの半分を超えていたと認識しております。
現在では、画面検索の強化、データ渡しによるエクセル連携により、その比率は若干は減っていると考えられますが、まだ結果出力としての帳票の役割は大きいと認識しております。SQLSは、DBの内容を自由にCSV出力できますので、風神レポートと連携して簡単、安価に帳票出力が可能になります。

■ 効果

  • バッチ処理と風神レポートの連携により、大きな開発効率が得られる
  • WEB画面と連動すれば、SQL実行、風神レポートのWEB帳票出力も可能になる
  • SQLS+風神レポートにより、複雑な帳票も簡単に作成できる

製品につきまして(現在、最終調整中)

1.評価版(無料)

機能は製品版と同じですが、SQL数が3つまでの制限があります。その他の制限は製品版と違いはありません。評価版で十分に機能、有効性をご確認後、ご購入願います。

2.SQLSequencer

以下の内容で販売しています。

  • マシン1台当たり1個の購入が必要です。
  • 仮想マシンの場合は仮想マシン毎に1個の購入が必要です。
  • 利用者数、CPUコア数などの制限はありません。

3.製品サポート

  • 製品は1年間のメールでのサポート付きとなっています。
  • その後、年間保守サポートが発生いたします。
  • 2年目以降の年間サポートご加入を条件に無償バージョンアップを行います。
  • メール以外のサポートの場合は、別途、内容協議の上、決定いたします。

4.システム構築コンサルテーション

当社は、2004年当時からSQLSの原型を利用して実際のシステム構築を行って参りました。DBの設計技法、作業用テーブルの工夫、JOB実行方式などです。

また、技術提携しております風神レポートの利用も大変、有意義な利用実績があります。もちろん、SQLSを用いたシステム構築もお請けできます。