目次


LDD Today

Dominoデータベースの添付ファイルを、LEIを使ってスクリプティングなしでRDBMSへ移動させるには

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: LDD Today

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:LDD Today

このシリーズの続きに乞うご期待。

添付ファイルがある文書をRDBMSへ転送して、RDBMSのアプリケーションから添付ファイルにアクセスしたいと考える方は多いと思います。LotusScriptを使えば可能ですが、もっと簡単な方法があるのです。この記事では、Lotus Enterprise Integrator (LEI) 6.xを使って、どのようにすればDominoデータベースの添付ファイルをRDBMSテーブルへ移動させるかについて解説します。一度だけの転送の実行を目標に置くならばRDBMSに格納されたファイルへのアクセスはread/writeでも安全と思われますが、Dominoサーバー側からも引き続きRDBMSに格納されたファイルへのアクセスがあるならば、RDBMS側での添付ファイルへのアクセスはread-onlyにしておく必要があります。

この記事では、読者がLotus Enterprise IntegratorとDominoについてよく知っていることを前提としています。

手順

添付ファイルをRDBMSテーブルへ移動させるステップは、経験を積んだLEIユーザーにはとてもシンプルに見えるでしょう。また、経験のないかたでもそんなに難しく見えることはないでしょう。以下が手順になります。番号が振ってありますが、詳細について順に後ほど解説しています。

  1. 選択複製式を使用して、文書を含まずに、Dominoデータベースの設計すべてを複製します。
  2. RDBMSにテーブルを作成し、Dominoデータベースのデータ・フィールドを格納できるようにします。(この例では、DB2 UDBを使用して言えます。)
  3. RDBMS内の外部キー・テーブルを使い、バーチャル文書アクティビティーをLEIで作成します。(バーチャル文書に必要) また、RDBMSに添付ファイル格納用のテーブルを作成します。
  4. バーチャル文書アクティビティーを実行します。
  5. 複製したデータベースから選択複製式を取り除き(すべての文書が複製されます。) 、新規のレプリカと元のレプリカとの間で複製を実行します。

最後のステップを終了すると、複製されたデータベースのデータ文書は仮想化され、添付ファイルはRDBMSテーブルへ格納されます。これ以降RDBMSの添付ファイル・テーブルのフィールドはRDBMSのアプリケーションからもアクセスできるようになります。但し、更新はできません。その理由はバーチャル文書アクティビティーの動きを壊すからです。外部キー・テーブルに格納されているフィールドもまた、ファイルに付いての情報を持っており、Notes C APIを使った場合のみ外部キー・テーブルに格納されているデータ構造にアクセスすることが可能です。

2つのDominoデータベースを定期的に複製するように設定した場合には、バーチャル文書アクティビティーによりRDBMSのテーブルは常に最新の状態に維持されます。常に最新の状態にするべきか、あるいはある特定のタイミングで最新であれば良いかはニーズに合わせて判断してください。

ここで使用するサンプルは最もシンプルなものです。ATTACHというフォームをベースして作成したDominoデータベースのサンプル文書を以下に示します。

図1. 添付ファイル付き文書
添付ファイル付き文書

文書内に3つのフィールドがあることが分かります。

  • DOCIDには文書を見つけるためのキーが格納されています。
  • AUTHORには文書の作成者リストが格納されています。
  • ATTACHには、添付ファイルが貼り付けられるリッチテキスト・フィールドです。

複製の作成

データはなく、設計だけが選択複製されたデータベースを新規に作成します。Notesクライアントのワークスペースからデータベースを選択します。「ファイル」-「複製」-「新規」を選択します。ダイアログボックスで、詳細設定をクリックします。複製の設定で詳細タブを選択して選択複製の式を入力します。

図2. 複製の設定
複製の設定
複製の設定

選択式のオプションにチェックを入れて、式のフィールドにSELECT Form = "foo"と入力します。このようなフォームは存在しませんから文書は何も複製されないことになります。OKをクリックして、Notesクライアントから複製を強制実行させます。

LRDBMSテーブルの作成

次に、RDBMSのテーブルを作成した、ATTACHというフォームのフィールド・データを保持できるようにします。

列名タイプ・スキーマタイプ名長さスケールヌル値
DOCIDSYSIBMINTEGER40No
AUTHORSYSIBMCHARACTER2000Yes
ATTACHMENTSYSIBMARCHAR for bit data320000Yes

ATTACHMENTというカラムをBLOB型で定義することはできますが、このフィールドにはアイコンと添付ファイルに関連するテキストのみを格納するだけで、実際の添付ファイルが格納されるわけではありません。ですので、そんなに大きくサイズを取っておく必要はありません。ビット・データについてはVARCHAR型を使うと、DB2ではテーブル内のレコードの作業を行う際によいパフォーマンスが出ます。

LEIバーチャル文書アクティビティーの作成

これでRDBMSのテーブルが作成できましたし、Dominoデータベースもできました。次に、LEIのバーチャル文書アクティビティーを作成します。(LEIバーチャル文書アクティビティーは仮想の添付ファイル機能も備えており、Dominoデータベース内の添付ファイルを、バーチャル文書を使ってRDBMSへ置くことができます。) これを行うには、まず最初にRDBMSへの接続文書を定義する必要があります。DB2の接続文書はこのようになります。

図3. DB2への接続フォーム
DB2への接続フォーム
DB2への接続フォーム

この接続設定では、DB2クライアントで定義されたDB2データベースへの接続を指定しています。また、接続に使うユーザー名やパスワードも設定します。その他にやることはありません。他のフィールドは空のままで、汎用的に使えるDB2の接続設定となります。データベースで利用可能なテーブル全てへのアクセスが可能になります。

以下にバーチャル文書アクティビティーの設定例を示します。

図4. バーチャル文書アクティビティーのフォーム
バーチャル文書アクティビティーのフォーム
バーチャル文書アクティビティーのフォーム

図4では、アクティビティーの名称を示しています。このケースでは、Documents with Attachmentsとなっています。フォームの左側にはこれと関連づけて使用するDominoデータベースが記載されています。このデータベースはLEIがインストールされているサーバー上に置かれている必要があります。(このことは、LEIのRealTime機能についても当てはまります。) レプリカのデータベースを選択した後で、モニターを実施するフォームを選択します。(このケースではATTACH)

Lotus Connectionをフォームの右側で選択します。データ・ソースはDB2の接続設定文書のタイトルになります。接続文書でテーブルが選択されていないので、どのテーブルを使用するかが尋ねられます。この例では前に記されているように、DB2ADMIN.DOCIDSのテーブルになります。

次に、フィールドのマッピングを行わなければなりません。ATTACHフォームの角フィールドはDB2テーブルのカラムにマッピングされます。

外部キー・テーブルの作成

外部キー・テーブルにはLEIでのデータの仮想化に必要なフィールドが含まれています。(この結び付けを実現するキーを使って様々なニーズを満たす動作をさせることができます。詳細についてはLEIのユーザー・ガイドをご覧ください。) LEIのバーチャル文書のフォームにあるボタンを押してテーブルを作成します。

図5. LEIバーチャル文書のフォーム
LEIバーチャル文書のフォーム
LEIバーチャル文書のフォーム

Key Table Optionフィールドでは、Use External Key Tableのオプションを選択します。そして、新規テーブルの名称を入力します。(この例では、DB2ADMIN.DOCID_KEYS) そして、Key Fieldを選択します。このフィールドは外部キー・テーブルのレコードをDB2ADMIN.DOCIDSのテーブルにあるレコードとジョインさせるためのものです。次にCreate External Key Tableボタンをクリックします。すると、選択した内容を確認するダイアログボックスが表示されますので内容を確認後、テーブルを作成します。以下にDB2で作成したテーブルを示します。

列名タイプ・スキーマタイプ名長さスケールヌル値
DOCIDSYSIBMINTEGER40No
EINOTEIDSYSIBMINTEGER40Yes
EIUNID SYSIBMSYSIBMCHARACTER320Yes
EIMODIFIEDSYSIBMTIMESTAMP100Yes
EINOTEPROPSSYSIBMVARCHAR for bit data102400Yes

このテーブルではどのようなDominoのnoteがあるかを示した追加情報を格納させることができます。

添付ファイル・テーブルの作成

最後のステップは、Virtual Attachmentsについてもこのアクティビティー文書でセットアップすることです。これは、Options - Virtual Attachmentsタブで行います。

図6. バーチャル・アタッチメントのタブ
バーチャル・アタッチメントのタブ
バーチャル・アタッチメントのタブ

Attachmentsのフィールドでは、Virtualize Attachmentsのオプションを選択します。そして、新規テーブルの名称を設定します。そしてCreate Virtual Attachment Tableボタンをクリックします。すると、以下のようなダイアログボックスが表示されます。

図7. アタッチメント・テーブルのダイアログの作成
アタッチメント・テーブルのダイアログの作成
アタッチメント・テーブルのダイアログの作成

デフォルトの設定を変更して、添付ファイルを保持するDB2のテーブルは、一つのNotesデータベースだけをサポートすることを定義します。また、Max attachment sizeを100MBから10MBへ変更します。OKをクリックして、DB2にテーブルを作成します。 以下にDB2で作成されたテーブルの例を示します。

列名タイプ・スキーマタイプ名長さスケールヌル値
EIDBIDSYSIBMCHARACTER160Yes
EIFILEIDSYSIBMINTEGER40No
EIFILESIZESYSIBMINTEGER40Yes
EIUNIDSYSIBMCHARACTER320No
EIFILENAMESYSIBMVARCHAR2560Yes
EICONTENTSSYSIBMBLOB104857600Yes

このアクティビティーはこれで正しく定義されましたので保存します。そしてLEIでこのアクティビティーを起動させます。

ワークスペースには、折り重なったアイコンが2つあると思います。一つはデータが入っているもの。そしてもう一つはデータが入っていないものです。データを含んでいないものは、バーチャル文書アクティビティーによって監視されています。選択複製の設定を外せば、文書が複製されるようになります。それを行った後で、Notesクライアントを使って、2つのデータベースを複製します。(あるいは、Dominoサーバーコンソールから複製実行のコマンドを発行します。)

これで、データ文書と添付ファイルは、元のデータベースからバーチャル複製データベースへデータが複製されます。つまり、全てのデータはRDBMSに格納されるようになります。これで他のRDBMSのアプリケーションから添付ファイルが格納されたテーブルを読み出すことができるようになります。DOCIDテーブルと他の情報をジョインさせることも可能になります。これを行うのにスクリプトはどの程度必要だったでしょうか?そう、まったく必要ありませんでした。また、どれくらい時間がかかったでしょうか?個々人によって異なりますが、大体20分といったところでしょうか。

まとめ

LEIは我々の日々の生活を楽にしてくれます。こういったタスクの場合は特にそうです。一回だけ実行すればよいこともあれば、定期的に同期を取るようにする必要があるかもしれません。Lotus Enterprise Integration Webページ(US)は一度ご覧になる価値があるかと思います。まだご覧になったことがないようでしたら是非試してみてください。デモや読み物が多数あります。Enterprise Integration forum(US)は質問して、エキスパートからの回答をもらうにはよい場所です。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=337218
ArticleTitle=LDD Today: Dominoデータベースの添付ファイルを、LEIを使ってスクリプティングなしでRDBMSへ移動させるには
publish-date=05242004