« 2011年7月 | トップページ | 2011年10月 »

2011年8月30日 (火)

NoSQLにはポータビリティーを高めるという重要なメリットがある

それは特にJavaのWeb開発において有効なのではないかと思う。
HashMapと配列を使用した簡単なデータベースを使用することで
RDBから離れることができる。
そのメリットは何と言ってもRDBを使用しないことによるデプロイの
容易性と移行の容易性である。

このアーキテクチャは簡単なものだがまだ一般的になっていない。

また重要なのは、このアーキテクチャの場合、マルチスレッドが
必須となるので通常のCGIでは不可能だという点である。

CGIではプロセス空間で区切られてしまうため、メモリ内の
共通オブジェクトにアクセスするという手法が取れない。
ソケット通信を使えば可能だがそれはかなり複雑になってしまう。
またその場合は排他制御が別途必要となりかなり高度な技術が必要となる。

Javaの場合はJEEアーキテクチャによりスレッドで動作するため
個々のリクエスト単位(スレッド単位)で共通のオブジェクトに
アクセスできる。

CGIのプロセスでもスレッドでもRDBを使うのならばそれは
言語の外にあるので違いはなくなるが、インメモリデータベース
を使うとなると両者の違いは大きくなる。

WebアプリにおけるインメモリDBのアーキテクチャが
流行らなかったのは、それがマルチスレッドではなく
マルチプロセスをベースにした技術だったからだろう。

JavaならばJEEがあるので自然とマルチスレッドになり、
インメモリDBを自然に使えるようになる。

ただしインメモリDBの場合はトランザクションは自前で
管理しなければならない。
これは仕方が無いが、これがどれほどのデメリットなのかは
実装してみないと分からないのが正直なところだ。

| | コメント (0) | トラックバック (0)

« 2011年7月 | トップページ | 2011年10月 »