Open sunsuk7tp opened 13 years ago
RangeSlice可能なabstractクラスRangeDBInstanceを別に用意して、keyの値だけでなく、tokenもストアするようにした。 これを実装したRangeMySQLInstanceを追加しました。
keyとtokenの値が同じpartitionerに限り、通常のMySQLInstanceでRangeSliceを可能にしました。 また、RageSliceにもput/get同様、ストアドプロシージャを用いてます。
レンジクエリを行うには、マッチングに各Rowに対してPartitionerに応じたTokenをストアする必要がある。 現在のStorage Engine Interfaceの実装では、<String rowKey, ColumnFamily cf>というKV形式のものをバイナリでストアしているが、これにToken情報を追加してやる必要がある。
MySQLやMongoDBなどでは単純にカラムを追加してやるだけで良いが (ただし通常のput/getの性能はダウン)、 Redisのような単純なKVSだとこれは実現が難しい。
どのように対処するかは今後考えていきたい。