Topic15 競合文書にご用心

 

前々回、前回と複製の話をしてきました。たかがデータ同期の話なのにもううんざりしてると思いますが、もう少しだけお付き合いください。

 

新任太郎「大変です、シンガポールと複製しているDBの掲示板のビューがなんかおかしくなってしまいました。なんか、ファイナ○ファンタジーのクリスタルみたいのがいっぱい出てます!」

 

どれどれ、みせてください、あぁ、競合文書ができてますね。

 

新任太郎「競合文書?とうとうNotesの世界にまで競合の波が!どうしましょう!うちの会社の商売」

 

落ち着いてください。競合文書はあくまでNotesの用語で、御社のコンペティターが増えてヤバいという話ではありません。

 

競合文書とは、DBをいくつかのサーバーに置いて複製している環境で、近しいタイミングで同一の文書に編集がかかり、その後に複製によるデータ同期がかかると作成されるものです。

 

新任太郎「さっぱり意味がわかりません。ニーチェか何かの格言ですか?」

 

違います。では、順を追ってシナリオを見てみましょう。こんな感じで競合文書はできます。(東京とシンガポールの時差は考慮から外します)

 

・東京本社とシンガポール支社で掲示板を一時間おきに定期複製している

 ・東京本社のユーザーが、新年の社長訓示のお知らせを掲載した(PM1:00)

 ・一時間おきの定期複製処理が流れ、シンガポールにお知らせが複製された(PM2:00)

 ・誤字脱字に気づいた東京本社のユーザーが、社長訓示の書かれたお知らせ文書の内容を少し編集した(PM2:10)

 ・一方そのころ、社長訓示にいたく感動したシンガポールのユーザーが、社長訓示文書を編集し、シンガポール社員たちの笑顔の写真を追加した(PM2:30)

 ・一時間おきの定期複製処理が流れた(PM3:00)

 ・掲示板のビュー上にダイアモンドが出現。そう、それこそ競合文書

 

新任太郎「ファミコンの裏技の出し方みたいですね」

 

そう楽しいものでもありません。このメカニズムはよく覚えてくださいね?

 

 

 

要するに、複数のサーバー上で同一のレプリカを管理している場合、可能性として、同じ文書を同じようなタイミングでいろんなサーバー上で編集してしまう可能性がありますが、これが実際起きたとき、「じゃあ、どっちの編集を活かして、どっちを負けにする?」という判断をくださなくてはいけないわけです。この時、負けた方の文書のことを、競合文書と呼びます。

 

新任太郎「あ、じゃあダイアモンドが付いた方の文書は競合文書だったんですね。それにしても、どちらが勝つかは、どんな基準で決まるんですか?

 

そうですね。いくらDominoが賢くても、内容の正当性とかから、どっちの文書を勝たせるかなんて判断できません。あくまでシステマチックに、以下の基準で勝敗は決まります。

 

 

 

新任太郎「えっ、更新した回数が多い方が勝つんですね。てっきり、後に編集した方が最新とみなされて勝つのかと思ってました」

 

そこが不思議ポイントではあるのですが、優先すべきは編集回数です。そこが同じ場合は、おっしゃるように、後に編集した方が勝ちます。競合文書ができてしまった後の対処は、次のスライドで確認してください。

 

 

Topic16 消したはずの文書が復活する?~削除スタブの不思議~

 

次によくある複製のトラブルですが、消したはずの文書が復活するという事象です。

 

例えば半年前に、とあるお知らせの文書を削除したとします。その後、何らかのトラブルがシンガポールで起きて、シンガポール側の掲示板DBを1年前のバックアップからリストアする。その後、定期複製が流れたタイミングで、削除したはずのお知らせ文書が、リストアしたDBから流れてきてしまうのです。

 

 

新任太郎「シンガポール側でリストアしたのが、削除する前のDBなんだから、流れてきて当然という気もしますが、そもそも、『無くなってしまった』文書の話なんでややこしいですね」

 

その通りです。この文書は『無い』のが正しいのか、それとも新しく作られたから『ある』べきものなのか、これってどうやって判断するんでしょうか。

 

実はNotes DBには「削除スタブ」というものが含まれており、ここに、消えているべき文書のリストが載っています。複製処理が流れる際、Dominoサーバーはここを見て、削除スタブにあればその文書を消すのが本来の動作です。

しかし、削除した文書のリストをいつまでも全量持ち続けると、不要な情報でいっぱいになってしまうので、定期的にNotes DBは古い削除文書情報をリストから除外していきます。これを、「削除スタブのパージ」といいます。

 

先ほどの例の場合、お知らせの文書を削除したのは半年前で、既に削除スタブがパージされてしまっていたために、シンガポールから流れてきた文書が「削除されているべきもの」と判断できず、復活してしまったんですね。

 

削除スタブが、いつの分まで保持されているかは複製のオプションで確認できますので、一度チェックしてみてください。

 

 

新任太郎「細かすぎる話で、なんだか、眠くなってきました」

 

細かすぎて伝わらない技術情報で残念です。だけどこういう事象、いったん遭遇すると本当に大変ですよ。掲示板の全文書について、消えてるべきか一文書ずつチェック棚卸してプチプチ削除したりする羽目にもなりかねません。競合文書も含めて、複製は便利でありながらトラブルの火種にもなりやすいものですので、気を付けてください。

最後に、複製関係のログの見方を載せておくので、参考にしてください。

 

 

 

 

今回はこの辺で。ではまた次回。