フォト
無料ブログはココログ

Cache/CSP

2013年11月18日 (月)

シャドウィング(サーバーの2重化)

業務システムにも色々とありますが、Cacheを利用したシステムの場合、年中無休(24時間×365日)の運用が求められるケースが多いと思います。
しかしながら、残念なことにコンピュータ(ハードウェア)は壊れてしまうことがあります。コンピュータ(ハードウェア)の故障時にどうやって業務を続行させるかは大きな課題となります。

お金をかけて、コンピュータ(ハードウェア)を頑丈にするのも1つの考え方ですが、視点を変えて、コンピュータ(ハードウェア)は壊れるもの、という前提に立って考えてみることも大切かも知れません。

Cacheの場合、データベースの内容を自動的に瞬時に(1~2秒以内)バックアップ用のCacheにコピーする機能があります。
シャドウィングと呼ばれる機能ですが、この機能を実際に使用してみると、便利なことがわかりました。
(1)データベースの内容(データ)がコピーされるのは、当然として、プログラムもコピーされ、さらに自動的にコンパイルされます。
(2)サーバー1台に対して、シャドウサーバー(待機用サーバー)を2台以上設定することができます。
(3)サーバー1台に対して、シャドウサーバーを親子でチェーンすることができます。サーバー→シャドウサーバー(親)→シャドウサーバー(子)など。

シャドウィングは設定方法も難しくなく、また、サーバーを再起動したときには、自動的にシャドウィング機能が再開されます。

Cacheの3台構成は、実際にコンピュータ(ハードウェア)が故障した時に、非常に有効に機能すると考えられます。
費用的には、コンピュータ3台分の費用が発生しますが、Cacheはマルチサーバー用のライセンスで2台以上をカバーできます。つまり、2台以上、何台になっても追加の費用は発生しません。
VPN等でネットワークを接続しておけば、物理的に離れた場所でシャドウィングを実施することが出来ます。(150km程度離れた場所のサーバーに対してシャドウィングの実験しましたが、データは瞬時にコピーされていました。)

案外便利で安心できる機能ですよ。

何かの参考にして頂ければ有り難いです。

(^.^)/~~~

2012年9月 7日 (金)

CacheにもTry...Catch があった

Cacheの場合、プログラムを実行中に何らかのエラーが発生した場合には、$ZTRAPという特殊変数を利用して、エラーをコントロールできる仕組みがあります。
例: http://training.intersystems.com/tutorials/DocBook.UI.Page.cls?KEY=RCOS_vztrap
Main
   SET $ZTRAP="*OnError"
   WRITE !,"$ZTRAP set to: ",$ZTRAP
  // program code
OnError
   // Error handling code
   QUIT

最近のCacheでは、Try...Catch という命令が装備されたようです。
例: http://training.intersystems.com/tutorials/DocBook.UI.Page.cls?KEY=RCOS_ctry
  TRY {
    KILL x
    WRITE !,"x is an undefined variable"
    SET a=x
  }
  CATCH exceptionvar
  {
      WRITE !,"this is the error routine"
      WRITE !,"the error was: ",$ZERROR
      WRITE !,"the error was: ",$ECODE
  }
  WRITE !,"this is where the code falls through"
  WRITE !,"the error was: ",$ZERROR
  WRITE !,"the error was: ",$ECODE

何かの参考にして頂ければ幸いです。

今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2012年6月17日 (日)

ダイナミックSQLの新しいクラス

CacheでダイナミックSQLを利用する場合の新しいクラス「%SQL.Statement」が提供(追加)されています。以前は「%ReseultSet」でした。
この%SQL.Statementクラスを利用すると、%ReseultSetよりも処理が速いそうです。
具体的なコードは下記のようになります。

SET myquery = "SELECT Name,DOB FROM Sample.Person"
SET tStatement = ##class(%SQL.Statement).%New()
SET qStatus = tStatement.%Prepare(myquery)
SET rset = tStatement.%Execute()
WHILE rset.%Next() { Set n=rset.Name,dob=rset.DOB }

大きな違いは、データの取得用コードが「Set name=rset.Data("Name")」から「Set name=rset.Name」に変更になったことでしょうか?

他にも色々と良い事があるようです。
詳細は下記のURLから「Caché 新機能のご紹介」をダウンロードして御確認下さいね。Page6~7辺りです。
https://www.intersystems.co.jp/events/2012/2012-symposia/

ご参考にして頂ければ幸いです。

今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2012年5月 1日 (火)

CacheSQLGateway(2012)

CacheとRDBを連動させて利用する仕組み(CacheSQLGateway)を利用して、リンクテーブル機能とデータ移行機能を利用する手順を紹介した資料を、下記のページからダウンロードして頂く事ができるようになりました。

今回、RDBには、MySQL5.5を利用しています。MySQL5.5のダウンロード、インストール方法についても記載しています。

CacheSQLGatewat2012

何かの参考にして頂ければ幸いです。

今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2011年6月 6日 (月)

SQLコマンド(2)--使いたくないIndexを指定する

SQLコマンドで条件を指定すると、Cache内部で自動的に「最適な」Indexを選択して利用します。
しかし、必ずしも期待したIndexが利用されるとは限りません。

そこで、「
%IGNOREINDICES」という命令を利用します。
利用方法は、From句のすぐ後に、%IGNOREINDICES IdxAなどのように記述します。使用したくないIndexが複数あるときには、IdxA,IdxB のようにカンマでつないでいけます。

例:
Select *
        From 
%IGNOREINDICES IdxA
                Animal.DOG
        Where
                    (Name = 'TARO')        -- <- コメントにするときには、「--」を付けます
                    And
                    (Zip     = '123-456')

色々と面白いことができるものです。

今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2010年6月 1日 (火)

32,000文字の壁をなくす設定

長い文字列のサポート

このプロジェクトでは、ローカル文字列およびグローバル文字列の長さの上限は、360 万文字まで拡張されています。長い文字列のストレージは、8KB ブロックを使用しているデータベースでのみサポートされます。
長い文字列のサポートを有効化するには、管理ポータルの [ホーム] > [構成] > [詳細設定] を使用します。カテゴリは [その他] で、設定名は [EnableLongStrings] です。
このサポートは、関数 $ZUTIL(69, 69) を使用して設定することもできます。

---以上、Cacheのドキュメンテーションより抜粋。

このオプションをON(レ)にしない場合には、文字列は3.2万文字までとなります。
このオプションをOnにした時には、それなりにメモリ消費量が多くなるようです。具体的な数字は確認できませんでしたが...

もし、Cacheをインストールしている環境であれば、下記のURLで説明ページを表示することができます。
http://localhost:57772/csp/docbook/DocBook.UI.Page.cls?KEY=GCRN_rn0701


今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2010年4月29日 (木)

クラス定義作成ツール


Cacheでクラス定義をした内容をExcelに出力するツールです。

下記のURLからダウンロードしてご利用頂けます。
ソースコードも同梱ですので、出力される内容を自由に変更することができます。
http://www.mvb-cappa.com/cache/samples/CDL_EXCEL_Cache2008_1.html

Cache2010での動作確認できました。Excelは2007を利用しました。

なお、Cache2010で利用する場合には、TableOutputCache2010.xmlファイルをCache スタジオでインポートして下さいね。
TableOutput.xml ファイルをインポートしてもコンパイル時にエラーが発生します。コンパイル時のチェックが厳しくなったんですね、きっと。Cache2008ではOKだったようです。

今日も皆さんに良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2010年1月31日 (日)

Cache?

割と昔からCacheで業務システムを開発してきましたが、最近、Cacheの名前を見る機会が増えてきたことは、Cacheに関わる一員として嬉しい限りです。
これは、開発元のインターシステムズジャパン株式会社(日本法人)様の努力の賜物と思います。

個人的には、Cacheはとても使いやすいデータベースだと感じています。
例えば、
・テストケース的に開発して、ドンドン成長させることができる
 これはクラス(テーブル)定義の柔軟性が大きいように思います。
 データタイプを変更させてもアプリケーションプログラムに影響を与えない、とか、自分の好きな形にデータを編集して格納したり取り出したりできたり...ちょっと敷居が高いかもしれませんが、とても興味深いことができますね。
・取り敢えず、処理が速い
 これは、Cacheのコア技術の賜物でしょうか?
 Indexを設定すると、検索処理は高速になるが、データ更新処理は遅くなる...といったことは、極端に多種類Indexを設定しない限り、体感的に速度低下は感じない、という安心感がありますね。おおよそ、20種類以上のIndexを1つのクラス(テーブル)に設定しなければOKのようです。
 IndexデータにIndex以外のデータを持たせることができるのも有難いですね。私は、データベースのデータを消さない(Delete処理しない)というのが、基本的な考え方なので、削除日を使って、活きてるデータかどうかを確認していますが、その削除日をIndexに持たせたりしています。こうする事で、Indexデータ(本体のデータに対して小さいです)のRead処理で済む場合があるので、結果的に処理が速くなりますね。
・Q&Aに親切に回答していただけるので安心
 これは、直接的なCacheの特性ではありませんが、業務処理で使用していますので、何かの時にすぐに対応して頂けるのは、とても心強いですし、その事を私たちのお客様に対してもアピールできます。

弱点としては...
・書籍がない
・技術者が少ない
・情報が少ない
・失敗したら言い訳できない(著名なRDBだと言い訳できるのかどうかは不明ですが...)
・実態が分かりづらい?(RDBとしても動作しますが、まずオブジェクト指向データベース、ということから始まるので、全体像が掴みづらいのでは?自分たちでは使えない、と感じてしまう方もいらっしゃるかも...)

もっとCacheが利用されることで、IT運営に関わるコストを低減する事ができ、今まで「無理では」と思われていたような情報活用が進んでいくことを、個人的にも切望しますし、それが多くの企業・団体のためになると信じています。
CSPはとても良い技術だと思います。

明日から、また顔晴ります!
今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

2010年1月17日 (日)

Cache2009.1.3とDreamweaverの拡張機能ファイル

今日、Cache2009.1.3というバージョンを入手できましたので、早速インストールしてみました。
O/SはWindowsServer2008で、開発するアプリケーションはCSP(Webアプリケーション)です。
私は、CSPでの開発にDreamweaverを利用しています。バージョンは8という古いものですが、個人的には問題ないので便利に利用しています。

ところで、
DreamweaverでCSPの開発をする場合、「Macromedia 拡張機能パッケージ(*.mxp)」をインストールすると、拡張子cspのファイルをhtmlファイルのように扱ってくれるので、とても便利です。

Cache2009.1.3をインストール(インストールタイプを「カスタム」として全機能をインストールしたつもり)した後、DreamweaverのExtension Managerを利用して、拡張機能パッケージをインストール使用としましたが...どこにも*.mxpファイルがありません。(例えば、CacheServerPagesCS4.mxp というファイルです。Cacheを既定値でインストールすると、C:\InterSystems\Cache\dev\csp\dreamweaver 配下にあるはずです。)

色々と実験した結果、Cacheインストール時に、インストールタイプを「開発」でインストールしないと、mxpファイルがコピーされないようです。

ということで、
もし、DreamweaverでCSPを開発することがありましたら、参考にして下さいね。
Cacheのインストールはインストールタイプ「開発」でどうぞ。

~~~今日も良い事が山ほど起こることをお祈りしています~~~

2009年4月 7日 (火)

バッチ処理にはCacheが良いなぁ

色々なデータベースがありますが、私はCacheが好きです。
処理が速いとか、色々な理由がありますが、私としては、
「バッチ処理が組める」
というところが一番良いと考えています。

バッチ処理というのは、月次の締処理とか、請求書発行処理とか、長い時間かけて集計をしたりする処理です。
昔は、バッチ処理とオンライン処理などと呼んでいました。
最近は、あまりバッチ処理という言葉を耳にしなくなりました。

実際に業務システムを構築すると、結構、色々なバッチ処理を作成しなければならない場合があります。(人間バッチ処理、というのもあるそうです。人海戦術というか...)
Cacheでは、専用のスクリプト(プログラム言語)を利用してバッチ処理を組むことができます。
分かりづらいかも知れませんが、COBOLでバッチ処理を作成する雰囲気です。

ついでに、何故か、妙に処理が速いです。
技を使っているわけでもなく(個人的に技を持っていないので ^_^; 技は使っていません)、単純な処理を繰り返し実行する場合でも、想像以上に処理が速いので、自分でプログラムを作っておきながら驚くこともありました。
嘘っぽいですが、MS-ACCESS+MS-SQL Serverで6時間かかっていた処理が、5分程度になった、という経験があります。(ハードウェアが違うとか色々要素はありますが...ちなみに、ハードウェアの価格は10分の1程度に安くなったようです。)

そのうち、もっとバッチ処理に強いデータベースが登場するのでしょうね。

今日も良い事が山ほど起こることをお祈りしています。(^.^)/~~~

より以前の記事一覧