找到的所有文档,不管是 IBM 开发者社区的专业文档,还是复制粘贴党的,甚至英文文档,对 rowkey 一般都会提到一个设计思路和一个设计原则:
- 设计思路,尽量用 rowkey 查询,所以 rowkey 要尽量包含索引字段
- 设计原则,为了避免热点,rowkey 不要自增长,最好是散列化,有的文档直接推荐 Md5
问题:除了用 rowkey 查询唯一一条数据外,这两个之间不是自相矛盾吗? 又或者,有什么散列方式是可以在散列化之后,还能在范围查询的时候使用到 rowkey 的。
假如我有三个索引字段:ID``DATE``TYPE,该怎么设计 rowkey,才能既满足散列话,又能够利用 rowkey 进行“ ID=5,DATE between 2018-12-01 and 2018-12-10 ”这样的范围检索。