Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

背景

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でボスの体力を削ってる気分で楽しかったので皆さんにもオススメです!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?