[Seasar-user:10531] Re: [S2Dao]Timestampの排他について

JUNDU [E-MAIL ADDRESS DELETED]
2007年 9月 14日 (金) 16:31:28 JST


JUNDUです。

"Minoru Taki" wrote:
> 瀧です。
> 
>  お世話になります。
> 
>  S2DaoのTimestampの排他でふと気付いたのですが、
>  自動生成の更新のSQLではnew java.sql.Timestamp(long)を
>  Beanのプロパティにセットする仕様のようですが、、
>  これはプロセスが動作しているシステム時間を表しますよね?
> 
>  同一サーバ内で動作しているなら問題がなさそうですが、
>  APサーバとDBが違うサーバだったり、APサーバがクラスター構成だった場合は
>  厳密な話でいえば完全な排他とは言えないと思います。
> #・・・かといって、直ちに問題がでるかは別ですが。

 この辺りシステムのポリシーなどにもよると思いますが、複数サーバがある場合
は、NTPなどを使って時刻同期をしておいた方が良いように個人的には思います。

>  Timestampをnewするのではなく、SQLでSYSTIMESTAMP(Oracleのみ?)を
>  設定するのであれば問題がない気がしますが、実装できたとしても
>  元のBeanに更新時刻を返すには、再検索せねばならないですよね?

 SEQUENCEのように時刻を取得する部分だけを別SQLに切り出せば出来るかもしれま
せんが、SQLの発行回数は増えてしまいますね。

>  やはり、推奨されるVersionNoでの管理が良いのでしょうか?
> #VersionNoの場合いろいろと心配事が・・・。
>  VersionNoの場合、VersionNoが桁のMax値に到達した場合は、
>  どうなるでしょうか?
>  (サイクリックになる?)

 VersionNoをlongにした場合、18桁まではカウントできるので、よほどのこと(お
そらくアプリケーションのバグ)がなければ、そうそうMAXまで行かない気がします。
自動でサイクリックにすることは現状できませんが、現在値を基準にインクリメント
しているだけなので、運用の中でMAXに達した場合に1に戻すということは可能かと
思います。



Seasar-user メーリングリストの案内