ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

ヴォルデモートに挑戦!

2010-06-05 03:38:55 | PG(NoSQL)

Voldemortに挑戦と言っても、喧嘩を売ってはいけない名前を言ってはいけないあの人に戦いを挑んだという意味ではなく(笑)、Project VoldemortのDBをインストールしてみたという意味。

Apache CassandraがGoogle BigTableとAmazon Dynamoをベースにしていて、VoldemortがDynamoをベースにしているらしいから 似ているのかと思ったら、全然違った(汗)
Voldemortの方は素のキーバリューストア(KVS)らしい。とってもシンプル。
CassandraやHBaseが列指向(カラムファミリー型)と言っている意味がよく分かった(つもり)。KVSの「キー」が列指向の「行キー」に相当し、何でも入れられる「バリュー」部分に「列(カラムファミリー)」の考えを持ち込んだのが列指向だと思われる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Cassandra0.6.2の変更点

2010-06-01 01:03:15 | PG(NoSQL)

いつの間にかApache Cassandraの0.6.2が出ていたので、変更点をちょっとだけ確認してみた。

WindowsでDBサーバーを起動するためのcassandra.batでCASSANDRA_HOMEを指定しない場合のデフォルトの場所が修正されている!
これで環境変数CASSANDRA_HOMEを自分で事前にセットしておく必要が無いなー
と思ったら、CLIを起動するcassandra-cli.batは変わっていないので、CLIを使うなら、やっぱり指定しておかないとダメなようだ(苦笑)
きっと0.6.3で直るんだろうな~^^;
(横並びチェック不足だぞー!)

で、一番気になっていたHadoopのバグだが。
CHANGES.txtにはcontrib/word_countとかHadoopという文字があったので期待したんだけど、直ってる箇所が違う!(苦笑)
Hadoop用のColumnFamilyRecordReaderでソケットをクローズしていないのも気にはなってたんだけどさ^^;
二重読み込みの問題は、0.6.3で修正対象(CASSANDRA-1042)のようだ…。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseのトランザクション

2010-05-17 23:59:59 | PG(NoSQL)

なんと、HBaseではトランザクションを使える!
contrib(寄贈されたソース)だから、多少設定(準備)は要るけど。

排他の仕方がRDBのロック方式(悲観的並行性制御と呼ぶらしい)ではなくOCC(楽観的並行性制御)というものだそうなので、そこのコーディング方法はちょっと違うみたい。

しかし、なんだ、これでデータ一貫性に関してはHBaseでは悩むことは無さそうだなー。
(実際の信頼性や性能面がどうなのかは分からんけど)

Windowsで動かしているとDB自体はCassandraの方が軽そう(起動は遥かに速いしCygwinも要らない)ので、開発・製造で使うならCassandraの方がいいかなーと思い始めてたんだけど。
つまり、単体試験用に各開発者のPC(Windows)でDBを動かすことを考えるなら、Cassandraの方が軽くていい。
あるいはDBサーバーを立てて皆で共有する場合、Cassandraならキースペースをユーザー毎に分けてカラムファミリーは同一にしておけば、お互いに影響することなくデータを更新できる。(設定ファイルでキースペース名を指定するような事は、RDBでデータソースを切り替えるようなものだから、特に違和感は無い)

でもCassandraではまだHadoopも使えないしデータの整合性の取り方も(不勉強なので)まだ分からないし、まさに一長一短状態だなー(苦笑)
そもそもHBaseのcheckAndPut()に当たるものも無いのでは、整合性なんか取れっこないような気がするのだが…?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Cassandra0.6.1のHadoopのバグ

2010-05-13 23:03:48 | PG(NoSQL)

Apache CassandraJavaからのデータアクセスは一通り試したので、次の目標であるHadoopへ。

Cassandraは0.6からHadoopに対応したとのことで、ソースのアーカイブのcontrib/word_countにWordCountのサンプルが入っている。(やはりHadoopのサンプルと言えばWordCountなのか(笑))
WordCountSetupはデータを準備するプログラムらしいが、実行するとUnavailableExceptionが発生するので、とりあえず断念。CLIから手動でデータを適当に登録して、WordCountを実行してみた。
こちらはまぁ動いたのだが、なぜか一部のデータが二重にカウントされる…!

どうやらデータを一通り読み込んだ後、末尾のデータを除いてもう一度読み込みを行っているようだ。
ColumnFamilyRecordReaderの中のget_range_slices()が返すデータがソートされていない事に起因している気がする。

ちょっと調べてみると、さすがに既にバグとして挙がっているようだ(苦笑)
Cassandra0.6.2で対応されるのかな?
しばらく待ちだな…。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Cassandraに手を出してみる

2010-05-09 23:39:14 | PG(NoSQL)

最近HBaseをいじっていたけれど、列指向分散DBには他にも色々あるらしい。
・HBase(BigTableのJavaによる実装)
・Cassandra(BigTableとDynamoの合体。Javaによる実装)
・Hypertable(BigTableのC++による実装)
・Voldemort(DynamoのJavaによる実装)(名前を言ってはいけないあのお方と何の関係が?^^;)
・CouchDB
・MongoDB
etc
…誰かがそのうち違いを正しくきれいにまとめてくれるでしょう(他力本願)

いわゆるNoSQLと呼ばれるDBの群雄割拠時代に入ってきたところなので、どれを勉強しておけばいいのか、いまいち見当が付かない…。
ApacheプロジェクトにすらHBaseとCassandraの2種類あるけど、どうなるのやら。

とりあえず、Apache Cassandraをちょっと試してみようと思う。
まだWindowsへのインストールと起動確認しかしていないが、ここまでだったら(笑)HBaseよりも圧倒的にお手軽。Cygwinとか要らないし。
ただ、テーブル構造でいきなり悩む。key/valueストアという点ではHBaseと変わらないだろうと思ったら、そこからして微妙に大違い(苦笑)

Voldemortも名前からして興味あるが(笑)、検索すると違うものが上位に出てきて不便だぞ(爆)
そういう意味じゃCassandraも同じだけど(苦笑)、まぁ「Apache Cassandra」で区別できるから。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする