WR blog

about Enterprise IT, Oracle Database, Jazz/Fusion Music, etc…

WR blog RSS Feed
 
 
 
 

Archive for Event

PofEAA 5th

PofEAA第五回読書会に参加してきた。

発表に関連した議論の内容を中心に、箇条書きでメモ。

セッションステート

レコードデータとサーバセッション

セッションステートをRDBに書き出したレコードはレコードデータではない。 publicかつpersistentなデータがレコードデータであると理解した。

文中の「データベースとサーバセッションの中間の位置」とは何か?

中間の位置ではなく、中間の特性(?)ということみたい。 「位置」なる訳は、かなりグレー。

セッションの特性に応じて、セッションアフィニティ(=スティッキー)にすべきか?セッションマイグレーション(セッションレプリケーション)すべきか?が変わってくると思われる。

具体的には・・・ セッションに格納するデータ量の大小、セッションの維持時間 セッションに格納するデータ量が多い場合→ アフィニティ? セッションの維持時間短い場合→ アフィニティ?

(セッションアフィニティに関連して)ロードバランシングについて・・・

書籍では「クライアントIPアドレスによってロードバランシングする」なる記載があるが、SSLのキーでロードバランシングできるものもある。暗号化の影響を受けず、かつ、決め細やかなロード バランシングが実現できる。 書籍では、「クライアントIPアドレスによるロードバラシンシングが機能しにくい」例として、Proxyサーバを介したアクセスとなるAOLが上げられている。が、日本の場合、Docomoが問題となりやすい。

DOCOMO携帯からのアクセスの場合、リクエストのたびにIPアドレスが変化するので、IPアドレスでロードバランシングすることは問題。サブネット単位で行う必要が有るようだ。

Session Stateとパフォーマンス

ステートの格納先をServerとするか?DBとするか?の選択基準としては、パフォーマンスよりリソースの観点が重要なのでは? ちなみに、「パフォーマンス」のファウラー流定義は、邦訳 P6あたりにある。

PHPにはセッション情報をインメモリに持つ手段が無い。

スクリプト起動のモデルがCGI的である故 デフォルトで、セッション情報はファイルに格納する RDBMSのテーブル(永続化ストレージ or インメモリ)に格納することもできる。

Rails

セッションID?セッションステート?の保存先としてメモリ、DB、ファイルが選択可能 フレームワークレベルでのクラスタリングの考慮は特に無い。

用語「MySQLセッションステート」

PHPな人はステート情報でもなんでもMySQLに格納するに格納する様をさした言葉みたい。データの特性に応じてインメモリテーブル、ディスク上のテーブルなどを使い分ける。 上記に関連して・・・、 はてなのMySQL使用方法

検索用DBサーバ、INSERT用DBサーバが別 DBフォレスト前段にキャッシュサーバが大量に・・・

最近は、サーバアフィニティで設計するケースが多いかも。

サーバはめったに壊れないし。

AJAXならば、サーバ側で状態を保持しなくてもOK(らしい。WR:よく理解できず・・・)

ただし、システム全体をAJAXだけで構築することは一般的でないため、結局、サーバ側でもログイン情報を持つことになる。

典型的な事例:ファイルのダウンロード(サーブレットなどを用いて実装するのが一般的)

分散ストラテジー

パフォーマンス比較

別プロセス vs 別ノードで、あまり差異が無いのでは? (ある参加者が昔測定した結果)同一プロセス:別プロセス:別ノード = 1:?(ききそびれ・・・):数千、数万倍オーダー CORBAにおける、別プロセス:別ノードの比較 → 別プロセス:別ノード=1:10程度

考察:OSがループバック通信の最適化がしている可能性がある。 UNIXドメインを使うともっと速い(Solaris2.4 では、共有メモリで実装している。速いことが期待できる) また、Windowsの場合、同一ノード内別プロセス通信 → Local RPC で通信 ⇒速い!

EJB1.4とWebサービス

コーディングレスでWebサービス化可能

発刊時点ではEJB1.4は存在しない。

CORBAにも類似の仕組み(IIOP over HTTP)が存在するが、Webサービスというわけではない。over HTTPなだけ。 XML Webサービスのパフォーマンス

RPCに比べると2,3桁違う Apache XML-RPCと比較してもWebサービスは1,2桁遅い やっぱりRMIは圧倒的に速い

理由のひとつ:ソケットのキープアライブをする。 これだけでも5倍ぐらい差が出るはず。

DTO:ローカルとリモートの2つあることに注意!

ファウラーは、リモートDTOのみをDTOと読んでいるかも。(狭義の/J2EEパターンの文脈におけるDTO?)

オンライン型バッチ処理

書籍所有者は2名だけ。orz. ま、しょうがないか。 30分弱で10スライド進んだ。

あと33スライド(笑)

APPサーバ~DBサーバ間NWラウンドトリップ回数削減のtips

SQLステートメントのセミコロンつなぎ JDBC batchUpdate (ひがさんのコメントの内容を忘れた・・・)

一旦リストアしてリラン pattern

いったんリストアしてリランなんて、60’sのテクニックだぜ! 単にリランしても無駄なケースが多いのでは?

バッチ失敗の原因はデータ不備。よって、投入データorマスタデータの修正後にリランするのが常套手段と思われる。

とすると、夜間張り付いている人が必要だよね?

バッチリランのため、外部からログイン可能/状態チェック可能な経路/手段を設けておいたケースあり

ミニバッチ pattern

読み取り一貫性問題: みんなあまりピンと来てないみたいなので、次回もうすこしブレークダウンして・・・ ミニバッチの並列実行: 並列実行を想定して物理設計しないと(Oracleパーティション&ディスク構成とか?)。無闇に並列化してもNG

そもそも、オンライン型バッチの必要性って?

システムの全サービスをインサービス状態のままでバッチを実行するのではなく、バッチ実行が影響する特定のサービスをアウトオブサービス状態とするのが一般的では?

システム要件的に許されるならば、それが(コスト的に)一番かも。

「エンタープライズシステムはバッチでしょう!」ということなので、次回も地味に頑張ります。

その他

この人数になってしまうと、さすがにハンドル名と顔を一致させるのはムリ。

名札の導入に期待!

懇親会は1hほどで退散 ⇒ 友人のLive@三宿へ。

WOMeeting2005/07

行ってきた。

Practical WebObjects読書会 Chap11 : XML

毎月恒例のPractical WebObjects読書会 今回のサマリは、Chapter 11. XML and WebObjects をTさんにお願いした。

内容は、XML技術の概要と、WOの持つXMLシリアライズ/デシリアライズ機能を使ったデモアプリケーションの説明 。

著者の用意しているデモアプリケーションの機能・意味合いがちょっと微妙で、XMLシリアライズ/デシリアライズ機能をうまく使ったモノでないため、実際にどのような方面でシリアライズ/デシリアライズ機能を使うべきかがイメージしにくかったようにも思う。 終わった後にTさんと話したのだけど、やっぱりWebサービスを絡めないとご利益が出てきにくいのかもしれない。

Seasar 2 for WO Developer

kakudaさんの発表。

kakudaさんのプレゼンテーションは、概念的なところの説明から、実際のDI動作のデモまでと、非常に準備に手がかかったすばらしいものでした。

試用レベルでも、DIを使ったことがあるのがkakudaさんと自分だけということに驚いた。WO屋さんは、やっぱり一般的なjava屋さんとは違うみたい(笑)。

皆、DIという概念を全く知らなかったのため、デモの説明を理解するのに苦労していたように思えた。やはり、最初は理解しにくいかもしれない。

ただ、私はWO屋さんにDIという概念をこの場でどうしても理解して欲しかったので、 (あえて)暴論気味に、「結局はファクトリですよ。DIというのは。」的な説明をした。 新しい概念を理解してもらうには、既存の似た概念を引き合いに出すのが手っ取り早い。 もちろん、あくまでも「似た概念」に過ぎないので、同じところもあれば、違うところもあるのだけど、 とりあえずのスタートとしては「ファクトリ」を引き合いに出して説明するのがよいと判断した。(その場では)

続けて、「ファクトリはコード内の条件分岐(かそれに類するもの)で生成する具象クラスを決定するが、DIは外だしにした設定ファイルで生成する具象クラスを決定する」という点を説明。微妙に嘘も歩けど、従来は「コード」で実現していたものを、「コンテナ+設定ファイル」で実現しているという位置づけにしたほうがわかりやすかろうと、あえて言い切った。

また、kakudaさんのデモや、「WOにDIを適用するにはWOComponentのpageWithName()をオーバライドして、内部でS2Container#getComponent()を呼び出して云々」なる説明を通して、Seasarの特性である「インスタンスレベルのAOP」という概念も理解してもらえたようだし、よかったのではないでしょうか。うんうん。と自画自賛。

飲み会

まだ風邪が治っていないので、飲み会はご遠慮させていただいた。

J2EE勉強会 第10回

参加させていただいた。

場所は秋葉原近くの某研究所さん(名前カードや、注意書きの配布など、キッチリした事前準備に驚きました。ありがとうございました!)でした。

内容は、髪をばっさりと夏仕様にしたひがさんによるJSF(myfaces, s2jsf)のソースコードの追い方講座と、t-wadaさんによるTDDをめぐる混乱について。

t-wadaの日記

JSF(myfaces, s2jsf) のソースコードの追い方講座

箇条書きで。

myfacesの実装はところどころアイタタタな面がみられる。 処理の起点はfacesservletである。 jsfのアーキテクチャはWebObjects Frameworkに酷似している。

画面の構成要素に対して、動的にidが付与され、idがマッチする画面の構成要素に対して処理が実行される リクエスト-レスポンス・ループに関連する状態を管理するクラスはfacescontextである。(WebObjectsの場合、WOContext) リクエスト-レスポンス・ループ処理は、いくつかのフェーズに分割して行なわれる。

WOとの相違点は、validationフェーズが独立して存在すること WOの場合、処理を実装する場所は フェーズx{Application, Session, WOComponent}の掛け算分だけあるのに対し、JSFの場合はもうちょっとシンプルな構成になっているみたい。

JSFは適用領域をWeb/HTML/HTTPに限定していないため、内部のコンポーネントに対して直接???Request, ???Responseを見せない。見せるのはfacesContextのみ。この中にRequest類が入っているようだ。

“Test” という言葉 (TDD話 導入編) by t-wada

後で書きます。

先輩の2次会終了・・・ ほっとした。

大学時代の大先輩の2次会の幹事をおおせつかったので、ここ3週間はいろいろとバタバタしていた。 先週末の日曜日に、その2次会が無事終了。綱渡りのような、トラブル続きの2次会だったので、無事に終えることができてカナリほっとしている。

トラブル(の一部)

ネタがかぶった・・・

バンド連中のネタは事前に把握していたのだけど、新郎職場の素人さんのネタがなかなか決まらず把握し切れなかった。そうしたら・・・・ネタがかぶった。orz. これだから素人はイヤなのよ。 →後輩の機転で、演出を変更し、ことなきを得た。

時間押しまくり・・・

出演時間を守らないバンド大杉!お前ら、15分って言ってあったらだろ?! 幹事を泣かせるなと。 →時間的にスケーラブルにしてあったので、軽めの出し物を1つ削って対処

引き出物が違う!

会場の担当者から受け取ったダンボールの中身が、会場のロゴが入ったグラス。これが引き出物のはずはないし、そもそも、グラスをそのまま渡すなんてありえない! → 会場の不手際でダンボール間違い。置き場から正しいダンボールを発掘した・・・が、その引き出物は仕込が必要なモノだったので人海戦術で対処、対処。つめつめ。仕込が必要ならその旨言ってくれないと・・・。

ギタートラブル!

ただでさえ押しているのに、ギタートラブルでさらに押し・・・・orz. → 片づけを超マッハでやることで対応

ビデオケーブルがない!

ビデオ出力が受けられると聞いたのでアップスキャンコンバータを後輩に手配してもらい、準備万端・・・のはずが、会場には1mのビデオケーブルしかなく、PA卓から客席まで届かない!我々がビデオ出力を使用するということは、前に伝えてあった筈。狭いPA卓に我々が入れない以上、それなりの長さのビデオケーブルがあってしかるべき。 → ビデオケーブル購入で対応

PAが遅刻

論外!約束の時間からかなり遅刻しやがってきた。ムカムカ。おかげでせっかく前倒しして入場したことによるゲインが相殺されてしまった。

ワイヤレスマイク受信機の出力が受けられず

出演者にキャノンでしか受けられないと念押ししていたのにかかわらず、出演者が持ってきたワイヤレス受信機はフォーン出し・・・orz. → 変換ケーブルを買ってくるように依頼・・・したけど最終的な対処方法は不明。なんとかなったらしい。 (つーか、会場にキャノン←→フォーンの変換ケーブルが無いのが大問題なわけだが)

ありがと。

コレだけのトラブルに対処できた理由は、あらかじめ計画を立てて、役割を委譲していたため。 ビデオ担当、オープニング・エンディング担当、司会などもろもろ。

ただ、もちろん、役割を担当してくれた先輩・後輩連中の助けが無くては、うまく行かなかったことは明らか。心から感謝します。ありがと。

PoEAA 4th

PofEAA’s Wiki - PofEAA読書会第4回

行ってきた&発表してきた。

PofEAA Chap5. Concurrency

ogijunさんのサマリをベースに。

ひがさんとkoichikさんによる(豪華な!)レクチャー風景を見物できて、こっそり満足(笑)。 見た目的に面白く感じたので、携帯のカメラで撮影してしまった。(笑)。

話題に上った分離レベルの話について、詳細に知りたければ 別の書籍にあたるのが良いと思う。分離レベル程度ならば、いくらでも良い解説は読める。 もう少し具体的なレベルで知りたいならば、RDBMS固有の振る舞いに振れた書籍にあたるのが良い。

SQL Serverの場合は、.NETエンタープライズWebアプリケーション開発技術大全 (Vol.5)”がなかなかよい。

そして、Oracleの場合は、

がわかりやすいのでオススメ。(これ以外の書籍がNGというわけではサラサラ無いです。自分が所有している書籍の中では。という意味)

自分の発表: 複雑なトランザクション 1/2

自分の発表のネタは、

の第3部の複雑なトランザクションをサマリ化したもの。これの内容をベースにいろいろ議論した。

時間の関係もあり全部はプレゼン&議論できなかった。 今回扱うことができたのは・・・

8章. 対話型トランザクション処理の設計方法

対話型トランザクション処理とは 業務排他制御による対話型トランザクション処理の設計方法 楽観同時実行制御による対話型トランザクション処理の設計方法

9章. 複雑なトランザクション制御

複雑なトランザクション制御とは ネットワーク障害時のメッセージロスト対策

まで。

記憶している範囲で・・・

論点となったのは

ロックの方式

楽観的同時実行制御における「残念!」は、ユーザーに嫌がられる可能性アリ 在庫引き当ての場合など厳密なモノの管理が求められるケースだと、ここで提示した方法+αが求められるだろう。

会員限定とか、在庫をクラス分けするとかもあり。

楽観的同時実行制御の実現方式であるtimestamp方式は、サーバ時刻ズレなどの問題をはらむ。versionNoが一番ツブシが効く。

二重submit防止とロギング

ビューに対するモデルを、永続化しておき、過去の画面(=ビュー)を再現できることを求められたケースアリ (類似例として?) モデルをXML化しておいたが、予想以上にサイズが大きくなりいろいろ苦労した。 (WebObjects屋的には) ブラウザ戻る対策が主目的であるが、pageCacheとしてメモリ上にレンダリング後の画面データを持つ仕組みが存在している

来月もやります。

PofEAA’s Wiki - PofEAA読書会第5回

残りは・・・

9章. 複雑なトランザクション制御

オンライン型長時間バッチ処理 トランザクションマネージャと連携できないリソースマネージャを含む短時間トランザクション キュー型トランザクション

です。

ここらへんのテーマが気になる人は、第5回PoEAAに参加するか・・・・

をボチっとやっちゃってください。イイ本ですよ。これ。

2005/06/28: 追記

「ネットワーク障害時のメッセージロスト対策」のどこが複雑なトランザクションなの?

という問いに対してイマイチな回答をしてしまったので補足。 HTTPなどのメッセージ転送機構がReliableでなく、Tx配下で動作するRM的に動作できないためです。あの本では、機能を実現する全ての構成要素がReliableでないと「複雑なトランザクション」である。という定義なんです。

あと、2相ロックに関する、私とkoichikさんのやり取りで混乱されていた方いたら、ごめんなさい。 (当然といえば当然ですが)koichikさんの主張が正しいです。 私は(直列可能性を実現するロック方法である)2相ロックと、デッドロックしないロック方法(ロックを徐々に取るのではなく、一気にとる!)をごっちゃにしてました。スンマセン。

最後にkoichikさんにお願い。 クラス正規系(?)に触れているベージュの表紙の本の名称などを教えてください!という思いをこめて「お願いトラバ」!

ん?行かないな・・・。あれれ?

Profile

Jazz/Fusion Musicを愛するIT技術者です。 現在、Oracle Database 関連の仕事をしています。

保有資格

  • Oracle Master 10g Platinum
  • Oracle Master 11g Gold
  • Oracle Master Expert 10g RAC
  • Oracle Master Expert Oracle on Linux
  • LPIC level2
  • 日商簿記3級

連絡先

ご連絡は、wrcsus4 _at_ gmail _dot_ com にお願いいたします。

 

July 2010
M T W T F S S
« Sep    
 1234
567891011
12131415161718
19202122232425
262728293031  

Recent Posts

Recent Comments

Tags

Categories

Pages

Archives

Meta