ここの記事
日本の裏側で熱く燃えるオープンソースデータベースFirebird (1/2)
http://www.itmedia.co.jp/enterprise/articles/0609/05/news009.html
によると(以下斜体は上記記事より)
Firebirdは、Bolandが販売しているInterBaseから派生したオープンソースのデータベースである。日本では、オープンソースのデータベースといえばPostgreSQL対MySQLの様相だが、ワールドワイドでは、MySQL対Firebirdの調査結果があるくらい人気があるデータベースだ。
だそうな。ふーん。。。
じゃあ、とりあえずみてみるか。。ってーんで、
Firebird日本ユーザー会
http://tech.firebird.gr.jp/firebird/index.php?firebird_xsite=0
のページにいってみた。
そこから、まあ、ダウンロードできるわけだが、そんなこたー、もー、どーでもいい、
問題は
Firebirdの特徴
http://tech.firebird.gr.jp/firebird/index.php?firebird_xsite=70
の「MGA」にこんなことが書いてあるのだ
(以下斜体は上記特徴の説明より引用)
Firebirdの独特の特徴である「マルチ・ジェネレーション・アーキテクチャー」によって、どのような場合でもデーターベース・エンジンは同じレコードの複数のバージョンを扱うことが出来るので、全てのトランザクションは他の並行するトランザクションの影響を受けずに自身のバージョンを持つことが出来ます。(読込は書き込みをブロックしませんし、書き込みは読込をブロックしません)
えっ、読込が書き込みをブロックしないで、トランザクション処理ができる??
並行処理で、他の人に書き込まれたら、どーなるの?
以下、妄想です。
これをつじつま合わせて理解すると。。。
1.トランザクションをスタートさせると、自分の領域ができる。
→ふつう、これって、ワーキングセットって言うと思うけど、
これを、バージョンっていってるのかなあ?
2.更新は、そこを更新する(自分の領域のデータを更新しているだけ)。
3.コミットをかけた瞬間に、シンクロナイズドして、自分の領域に
ためておいたものの、更新処理に入り、
そこですでに、他の人が更新をかけていたら、ロールバックをかける
ってかんじなのかなあ??
うーん、どんなんだあ・・・??いまいち、イメージわかない。。