sunsuk7tp / MyCassandra

This project is MyCassandra. MyCassandra is a modular cloud storage where the storage engine is exchangeable from Cassandra's storage engine like Bigtable to MySQL or Redis or the others.
Apache License 2.0
22 stars 3 forks source link

レンジクエリについて #3

Open sunsuk7tp opened 13 years ago

sunsuk7tp commented 13 years ago

レンジクエリを行うには、マッチングに各Rowに対してPartitionerに応じたTokenをストアする必要がある。 現在のStorage Engine Interfaceの実装では、<String rowKey, ColumnFamily cf>というKV形式のものをバイナリでストアしているが、これにToken情報を追加してやる必要がある。

MySQLやMongoDBなどでは単純にカラムを追加してやるだけで良いが (ただし通常のput/getの性能はダウン)、 Redisのような単純なKVSだとこれは実現が難しい。

どのように対処するかは今後考えていきたい。

sunsuk7tp commented 13 years ago

RangeSlice可能なabstractクラスRangeDBInstanceを別に用意して、keyの値だけでなく、tokenもストアするようにした。 これを実装したRangeMySQLInstanceを追加しました。

sunsuk7tp commented 13 years ago

keyとtokenの値が同じpartitionerに限り、通常のMySQLInstanceでRangeSliceを可能にしました。 また、RageSliceにもput/get同様、ストアドプロシージャを用いてます。