다운로드
소프트웨어 개발
계정
다운로드
소프트웨어 개발
Login
Forgot Account/Password
계정 만들기
언어
도움
언어
도움
×
Login
Login Name
Password
×
Forgot Account/Password
Translation Status of 한국말
Category:
Software
People
PersonalForge
Magazine
Wiki
검색
OSDN
>
브라 우즈 소프트웨어
>
System
>
TERASOLUNA Framework
>
포럼
>
Open Discussion
>
【バッチFW】バッチ(非同期型)の設計にあたって
TERASOLUNA Framework
Description
Project Summary
Developer Dashboard
웹 페이지
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
다운로드
List of Releases
Stats
소스 코드
Code Repository list
Subversion
View Repository
티켓
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
포럼
List of Forums
Open Discussion (1277)
Mailing Lists
list of ML
terasoluna-information
News
포럼:
Open Discussion
(Thread #21653)
Return to Thread list
RSS
【バッチFW】バッチ(非同期型)の設計にあたって (2009-02-13 15:00 by
Anonymous
#41835)
Reply
Create ticket
非同期型ジョブでのバッチの設計にあたって、アドバイスいただければと思います。
【バッチ処理概要】
複数の支店(それぞれにデータベース有)からデータを取得。
本社のデータベースにすべての支店の取得データを一括でインサートする。
【質問】
①一つのバッチ処理で複数のデータベースから入力データを取得(コレクタ)することは可能でしょうか?
それとも、支店の数だけバッチを作成する必要があるのか、または、一つのバッチで処理する場合には同期実行で支店コードをパラメータとして渡し、順番に実行していくしかないのでしょうか?
②一つのバッチで非同期処理可能な場合、どのような組み立てが可能でしょうか?
機能説明書は読んだのですが、質問部分についての項目が不明(読み落としかもしれません)でした。
どうぞよろしくお願いします。
Reply to #41835
×
Subject
Body
Reply To Message #41835 > 非同期型ジョブでのバッチの設計にあたって、アドバイスいただければと思います。 > > 【バッチ処理概要】 > 複数の支店(それぞれにデータベース有)からデータを取得。 > 本社のデータベースにすべての支店の取得データを一括でインサートする。 > > 【質問】 > ①一つのバッチ処理で複数のデータベースから入力データを取得(コレクタ)することは可能でしょうか? > それとも、支店の数だけバッチを作成する必要があるのか、または、一つのバッチで処理する場合には同期実行で支店コードをパラメータとして渡し、順番に実行していくしかないのでしょうか? > ②一つのバッチで非同期処理可能な場合、どのような組み立てが可能でしょうか? > > 機能説明書は読んだのですが、質問部分についての項目が不明(読み落としかもしれません)でした。 > > どうぞよろしくお願いします。 > >
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: 【バッチFW】バッチ(非同期型)の設計にあたって (2009-02-13 18:09 by
kuramotoki
#41837)
Reply
Create ticket
いただいた質問についてですが、プロジェクトの1バッチ処理の粒度にも関係する内容ですが、
ジョブの個数が膨大で登録しきれない、もしくはマシンリソースを抑える必要があるなど
特別な理由がないならば、支店ごとにジョブを分割し実行していくのが素直な実装のように感じます。
理由は、処理エラー時の対処が複雑になってしまうためです。
以下、個々の質問について回答します。
①について
> 一つのバッチ処理で複数のデータベースから入力データを取得(コレクタ)することは可能でしょうか?
FWデフォルトの実装は、単一のデータソースから取得処理をするようになっているため、
複数のデータベースから取得する場合は、複数のデータソースから取得処理するように
コレクタを自作する必要があります。
ジョブ実装の際にFWの分割実行を使わない場合は、1つのコレクタの中で
逐次複数データソースからデータを集めていくことになりますが、
並列に処理が動かないので性能要件を満たせるか状況次第かと思います。
またデータ取得の順序性なども考慮する必要があるでしょう。
分割実行を使う際は、ジョブコンテキストにどのデータソース(どのDAO)を使うかの情報を与え、
すべてのDAOをDIしておいてどれを利用するか子ジョブ毎に決定する、または
DIコンテナを参照できるようにしておいてgetBeanするなど、
方法はあると思いますが、処理・制御が複雑になるのでお奨めしません。
> 支店の数だけバッチを作成する必要があるのか、または、
> 一つのバッチで処理する場合には同期実行で支店コードをパラメータとして渡し、順番に実行していくしかないのでしょうか?
処理内容によります。
パラメータで処理対象を動的に切り替えて実行すればよいのであれば
そのようにした方が楽かと思います。
その際に、1支店ごとに逐次実行する必要があるのか、複数支店を並列実行できるのかは状況次第ですが、
並列処理をするのであればデータベースの競合が起きないようにお気をつけ下さい。
また、上記の処理は同期/非同期どちらでも実行することができます。
②について
> 一つのバッチで非同期処理可能な場合、どのような組み立てが可能でしょうか?
1つのバッチの意図がうまく汲み取れているか自信がありませんが、
1バッチで全ての支店を処理するという意味であれば、
デーモンをあらかじめ常駐させておき、
ジョブ自体はパラメータで処理対象を切り替える形式にしておき、
その1バッチの中で
・実行したいジョブをすべてジョブ管理テーブルに登録する
・デーモンがすべてのジョブを処理するまで待つ(管理テーブルをポーリングするなど)
とすれば、おっしゃる形に近いかと思います。
冒頭に述べたとおり、可能であればスケジュールバッチとして設計した方が
素直で管理しやすいかと思います。
長文失礼しました。以上です。
Reply to
#41835
Reply to #41837
×
Subject
Body
Reply To Message #41837 > いただいた質問についてですが、プロジェクトの1バッチ処理の粒度にも関係する内容ですが、 > ジョブの個数が膨大で登録しきれない、もしくはマシンリソースを抑える必要があるなど > 特別な理由がないならば、支店ごとにジョブを分割し実行していくのが素直な実装のように感じます。 > 理由は、処理エラー時の対処が複雑になってしまうためです。 > > 以下、個々の質問について回答します。 > ①について > > 一つのバッチ処理で複数のデータベースから入力データを取得(コレクタ)することは可能でしょうか? > FWデフォルトの実装は、単一のデータソースから取得処理をするようになっているため、 > 複数のデータベースから取得する場合は、複数のデータソースから取得処理するように > コレクタを自作する必要があります。 > > ジョブ実装の際にFWの分割実行を使わない場合は、1つのコレクタの中で > 逐次複数データソースからデータを集めていくことになりますが、 > 並列に処理が動かないので性能要件を満たせるか状況次第かと思います。 > またデータ取得の順序性なども考慮する必要があるでしょう。 > > 分割実行を使う際は、ジョブコンテキストにどのデータソース(どのDAO)を使うかの情報を与え、 > すべてのDAOをDIしておいてどれを利用するか子ジョブ毎に決定する、または > DIコンテナを参照できるようにしておいてgetBeanするなど、 > 方法はあると思いますが、処理・制御が複雑になるのでお奨めしません。 > > > 支店の数だけバッチを作成する必要があるのか、または、 > > 一つのバッチで処理する場合には同期実行で支店コードをパラメータとして渡し、順番に実行していくしかないのでしょうか? > 処理内容によります。 > パラメータで処理対象を動的に切り替えて実行すればよいのであれば > そのようにした方が楽かと思います。 > その際に、1支店ごとに逐次実行する必要があるのか、複数支店を並列実行できるのかは状況次第ですが、 > 並列処理をするのであればデータベースの競合が起きないようにお気をつけ下さい。 > > また、上記の処理は同期/非同期どちらでも実行することができます。 > > ②について > > 一つのバッチで非同期処理可能な場合、どのような組み立てが可能でしょうか? > 1つのバッチの意図がうまく汲み取れているか自信がありませんが、 > 1バッチで全ての支店を処理するという意味であれば、 > デーモンをあらかじめ常駐させておき、 > ジョブ自体はパラメータで処理対象を切り替える形式にしておき、 > その1バッチの中で > ・実行したいジョブをすべてジョブ管理テーブルに登録する > ・デーモンがすべてのジョブを処理するまで待つ(管理テーブルをポーリングするなど) > とすれば、おっしゃる形に近いかと思います。 > > 冒頭に述べたとおり、可能であればスケジュールバッチとして設計した方が > 素直で管理しやすいかと思います。 > > 長文失礼しました。以上です。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: 【バッチFW】バッチ(非同期型)の設計にあたって (2009-02-13 18:33 by
Anonymous
#41838)
Reply
Create ticket
kuramotokiさま
早々にアドバイスいただきましてありがとうございました。
内容を吟味して、より環境に見合った形に作り上げていきたいと思います。
作り上げていく中で不明な点があった場合には再度質問させていただきたいと思います。
どうぞよろしくお願いします。
Reply to
#41835
Reply to #41838
×
Subject
Body
Reply To Message #41838 > kuramotokiさま > > 早々にアドバイスいただきましてありがとうございました。 > 内容を吟味して、より環境に見合った形に作り上げていきたいと思います。 > > 作り上げていく中で不明な点があった場合には再度質問させていただきたいと思います。 > どうぞよろしくお願いします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel