第8回 J2EEのトランザクション処理
丸山不二夫
稚内北星学園大学学長
(http://www.wakhok.ac.jp/)
2002/3/14
コンピューティングにおける |
コンピュータに対する意識の変化 |
この10年で、これまでコンピュータには無縁だった膨大な数の人たちが、新たにコンピュータとネットワークに日常的に触れるようになりました。マシンのスピードとネットワークのスピードが速くなるにつれて、それまでの「食わず嫌い」から、コンピュータは、あっという間に何でも答を出してくれる便利なものだと、IT技術に好印象を持つ人が増えているのは確かです。われわれ、コンピュータで仕事をしている人種にとっては、こうした意識の変化は歓迎すべきことです。
一方では、「PCはフリーズすることがある」「ネットワークはつながらないことがある」という経験をだれもが持つようになりました。そしてコンピュータを知らない人の間に根強かった「コンピュータは間違いがない」という「コンピュータ神話」を信じる人は、あまりいなくなりました。これも当然の変化だと思います(皆さんの「仕事」もこうした「認識」に「貢献」してきませんでしたか?)
プログラマのスキル |
こうした議論は、いわば大衆的な意識レベルを問題にしているのですが、問題はコンピュータを仕事にしている人の意識の変化です。この点では、第1に社会的なニーズが広がる中で、いままでになかった規模で多くの人がプログラムを作るようになっていること、第2にこうしたいわば、「プログラマーの大衆化」がマシン性能が飛躍的に向上する中で進んでいることに注意が必要だと思います。
もちろん、立派なコードを書いている若いプロのプログラマーも、しっかり存在しているのですが、1世代前のプログラマーと比べて、エラーに強い、頑丈なプログラムを作ることへの関心が少し弱くなっているような気がします。正確にいえば、そうしたことを気にしなくてもプログラムが動いてしまうということかもしれません。
典型的なのは、WebにおけるCGIを使ったプログラムだと思います。だれにでも比較的簡単に作れるのですが、いまのPCのパワーとネットワークのスピードを使えば一昔前のオンライン用の大型機を量的にはるかにしのぐ処理が可能になります。こうして、わずかの経験しか持たないプログラマーでも、1日に数万のアクセス処理を行うプログラムを作ることができてしまうのです。1世代前には、1、2年の経験しか持たないプログラマーが、1日数万規模のトランザクションを処理するプログラムを作ることはなかったと思います。基本的には、マシン性能の量的拡大とプログラミングスキルの質の向上との間に、溝が生まれているのではないでしょうか? ここには、落とし穴はないのでしょうか?
ネットワーク・プログラミングの問題 |
これは若い人だけの問題ではないかもしれません。僕たちコンピュータを教える側の問題もあるでしょう。内容的には、いくつかの問題があるのではと考えています。その1つは、現在では、ネットワーク上のプログラムが一般的になっているのですが、ネットワークを利用したプログラムの信頼性にはどのような問題があるのかが、十分に意識されていないことだと思います。
こうした問題については、僕の知る限りでは、Jim Waldo氏らの1994年の論文、「A Note on Distributed Computing」(http://research.sun.com/techrep/1994/smli_tr-94-29.pdf)が古典的な解明を与えています。そこでの次のような指摘は、現在でも有効だと私は考えています。
「ネットワーク上の分散オブジェクト間の相互作用と、ローカルなマシン内の非分散的なオブジェクト間の相互作用との間には、根本的な違いが存在している。さらに言うなら、こうした違いを無視、ないしは否定するようなモデルに基づいた分散オブジェクト指向の仕事は、失敗するように運命づけられている。こうした失敗は、産業界が全体として分散オブジェクトに基づいたシステムという概念を拒絶するという事態を、容易にもたらしかねない危険がある」 |
この論文は、直接には、分散オブジェクト・プログラミングについて論じているのですが、ネットワーク上のプログラムについては、基本的には、同じ問題があるという認識が必要だと私は考えています。
トランザクション処理の必要性 |
今回のテーマであるトランザクション処理も、大規模なアプリケーションを開発する際には、ぜひ身に付けておいてほしいプログラミング技術の1つです。残念ながらWeb上のアプリケーションの中には、ほとんどトランザクション処理を考えていないものもあるようです。ローカルなデータベースの読み書きでもトランザクション処理は大事なのですが、先に見た、ネットワーク・プログラミングの問題と結び付くと、トランザクション処理の必要性は、もっと高まります。ネットワーク上の分散トランザクション処理というのは、実は、なかなか面倒で厄介なものなのですが、ここでは、非常に単純化した形でトランザクション処理の必要性を説明してみたいと思います。
1/5
|
J2EEの基礎(第8回) | |
コンピューティングにおけるトランザクションの必要性 | |
トランザクションの基礎を知る | |
J2EEのトランザクション | |
トランザクション属性の特長 | |
トランザクション属性 |
連載内容 | |
J2EEの基礎 | |
第1回 Java Pet Storeで、J2EEを体験する(1) | |
第2回 Java Pet Storeで、J2EEを体験する(2) | |
第4回 J2EEアプリケーションを構成するコンポーネント | |
第5回 データベースのブラウザを作る | |
第6回 EJBにおけるコンテナとコンポーネント | |
第7回 J2EEのセキュリティのキホンを知る | |
第8回 J2EEのトランザクション処理 |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|