Consistent Hashing in AS3

前回のエントリー「Redis AS3クライアント」に関連して、キーの分散処理を行うために Consistent Hashing をAS3で書いてみました。イマドキのNoSQLデータベース(MongoDBなどshardingで分散するもの以外)クライアントならだいたい実装されているアルゴリズムですね。 理論の説明は以下のサイトなどを参考に。 Consistent Hashing スマートな分散で快適キャッシュライフ * Consistent Hashing implementation in AS…

Redis AS3クライアント

前回のインメモリKVSのRedisについての続き。 今回はActionScript3.0用のRedisクライアントについて調べてみました (参照: as3redis)。 結論から書くと、「使うのは控えた方が良い」 ということになるかと思います。以下理由。 (太字になっている部分が特に重要) 古いプロトコルにしか対応していない 分散できない パイプライニング対応部分の設計が良くない 上2つは機能が足りないという点で良くありません。対応プロトコルが古いというのは公開時期を考えると仕方ないことですが、…

mod_dbdでデータベース操作

Apacheモジュールの mod_dbd を試してみます。 mod_dbd はデータベースへのコネクション管理機能を提供するモジュール。 内部で apr_dbd を用いてコネクションプール機能を提供するラッパーモジュールとなっていて、 データベースへの各問い合わせは apr_dbd のAPIを利用します。 Apache Portable Runtime: DBD routines 今回は以下のようなテーブル(dbd_test.user)を対象に dbdtest_module を作ります。 (環境…

MySQLパラメータチューニングメモ

MySQL関連のメモ。 実際に業務で見ている主にメモリ周りのパラメータについて。特別なノウハウ等は入っていない基礎知識程度です。 ——————– MySQLのバッファには以下の2種類のタイプがある。パラメータチューニングの際にはこの2つのタイプの違いを意識しないといけない。 * グローバルバッファ (mysqld内部で1つだけ確保される) * スレッドバッファ (スレッド毎に確保される) スレッドバッファに多くの…

CassandraのMemtableについて

引き続きCassandraについて調査中で、今回はCassandraの内部構造のひとつ、Memtableについて。 Cassandraでの書き込み操作はまずディスク上のCommitLog(書き込み操作のログ)に対して行われ、それからメモリ上のMemtableと呼ばれる構造体に対して書き込まれます。Memtableの構造は以下のようになっていて、ColumnFamily毎に保持されています。Key の列の Token は書き込み要求時にデータを保持するノードを決める際に計算されるものです。 Mem…

Cassandra Java Client

前回 Cassandra Thrift APIのConsistencyLevel と内容的に前後してしまいますが、Cassandra APIのテストコードを一応載せておきます。データ操作(取得/登録/削除)に関するAPIはひととおり使用してあるので、コードを見ればだいたいの使い方は理解できると思います。また、各APIのシグネチャはCassandraのホームディレクトリにjavadocディレクトリがあるのでそこで確認できます。 (org.apache.cassandra.thrift.Cassan…

Cassandra Thrift APIのConsistencyLevel

前回に引き続きCassandraについて調査継続中で、今回はThrift APIの ConsistencyLevel について。以下のサイトの該当項目をざっくりと意訳した程度のメモです。 API06 – Cassandra Wiki Cassandra Thrift APIにおける ConsistencyLevel は、 storage-conf.xml で設定した <ReplicationFactor> (データの複製を保存するノード数)に基づいてread/writeの…