Amazonマーケットプレイスで安価に販売していたので衝動買い。
実は昔から気にはなっていたのだけど、プラットフォームが.netだったので買うのを躊躇していた。
内容はかなりイイ。.netに関係しなくても、トランザクション設計について悩みがある人は、立ち読みして内容を試し読みするぐらいの価値はありそう。私に関しては、少なくとも値段分の元は取れそうな感じである。
.netフレームワークでエンタープライズアプリケーション開発をする人は必読ではないだろうかね。カナリお勧めできます。
以下に、この本の良い点をあげる。
まず第一に、アプリケーション開発者の立場で書かれている点がある。
ACIDなどのトランザクションそのものの概念や、RDBにおけるトランザクションを論じた・解説した書籍は数あれど、アプリケーション+RDB or/and … で構成されるシステム全体においてトランザクション設計をどのように行うか?を論じた本は少ない。和書だと皆無に近いのではないだろうか?この本は、その領域をターゲットとしている。
第二に、トランザクション、同時実行制御、ロック、分離性など、初学者が混同しがちな概念を整理して語っている点。
私は、SQL Serverにおいて、分離性を変えることでどのようにロックの保持期間が変わるか?取得するロックの種類が変わるか?の説明が面白く感じた。(2.2 分離レベルによるロック挙動の変化)
恥ずかしながら、分離性の概念がどのように実現されているかをキチンと理解していなかったため、この箇所を興味深く読ませていただいた。ロック保持に関する概念図とEnteprise Managerのロック状態表示画面を多用して丁寧に解説されているため、非常に理解しやすくなっている。すばらしすぎます。
第三に、わかりやすさを優先しつつも、正しさにも配慮している点。
本書では、おそらくわかりやすさのため、多少の厳密さを犠牲にした記述がされている。
本文で犠牲にした厳密さを補うため、筆者の愛情こもった脚注がたくさん記してある。これまた、すばらしい。
第四に、「くーす」に近いステートレスなクラス設計を説いている点(笑)。
まぁ、COM+の流れから当然なんですが、MSの立ち位置は「ビジネスロジックはステートレス」というもの。
筆者は、これを踏まえつついくつかの補足的な説明をしており、その結論として、
「エンティティ中心のオブジェクト指向設計は、スタンドアロンのシングルユーザアプリケーションに向いているケースが多いが、WebアプリケーションやWebサービスのような、サーバサイドのOLTP型マルチユーザアプリケーションには適していない。」と整理している。まったく持ってそのとおりと感じている。
第五に、具体的なアプリケーション毎に、設計方針を示している点。
対話型アプリケーション、バッチアプリケーション、キュー型のアプリケーションなどのに対して
ある程度具体的な指針を示している。(ただし、本書の中で著者が述べているとおり、「定式化が難しい」ため、さすがに「この記述に従えばうまくいく!」という内容までにはなってない。というか、なりえないよね・・・。)
Leave a Reply