LoginSignup
8
8

More than 5 years have passed since last update.

7つのデータベース7つの世界の2日目でRiakを触ったらハマった

Last updated at Posted at 2014-06-30

背景

p68以降の「整合性と永続性」の項にて、N, R, Wの値を適切に設定するとデータの整合性が保てないことを確認したかった。

結果

riak1.4.1では再現可能な状態でriakの整合性を破壊することはできなかった。HTTPによってデータのI/Oを行い、偶発的に404 status codeを得ることができたが、その後のリクエストではデータの整合性が保たれたりした。

考察

riakのデータの整合性を保証するための機構としてvector clock, read repair, AAE(active anti entropy)という機能が存在する。

  • vector clockはriak内でデータのI/O順序などのデータを記録するデータ構造
  • read repairはread系リクエストに際してデータの不整合が確認された場合、vector clockを基にデータを修復する受動的機構
  • AAEは能動的にデータの不整合を検知してデータを修復する機構

なのですが、2013/2のriak1.3においてAAEが実装されていることが判明しています。
7つのデータベース7つの世界は2012年に執筆され、2013/1に訳されているために、AAEを考慮しない構成になっている可能性が高いと考えられました。

その後

dev/dev1/etc/riak(あるいはapp).confにおいてanti_entropy = passiveを設定し、ノードをrelaodしたり試したのですが、一向に整合性を乱せないので諦めました。

7databasesを学ばれる皆さんはお気をつけください。また、何か分かったらご一報をよろしくお願いします。

感想

riak、防御力高い。Erlangの言語仕様(message passing)すごい。
5人で「riakを殺そう」を合い言葉に頑張るの、MMORPGでボスの体力を削ってる気分で楽しかったので皆さんにもオススメです!

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8