通过查看tikv的代码,看上去region只是一个在tikv层面出现的概念,不太清楚是否region的概念也在rocksdb中有所体现。一个region是否对应着一个sst?或者是一个sst会存有不同region的一部分。
sst的compaction和region的迁移,是否存在联系??
感觉有些想不通,期待回复,谢谢
通过查看tikv的代码,看上去region只是一个在tikv层面出现的概念,不太清楚是否region的概念也在rocksdb中有所体现。一个region是否对应着一个sst?或者是一个sst会存有不同region的一部分。
sst的compaction和region的迁移,是否存在联系??
感觉有些想不通,期待回复,谢谢
看PTCA的课程吧,看完了会有个大概清晰点的概念的
region 是针对很多层的热点写,热点读,以及调度的场景综合的解决思路,和SST 的关系不是太大
rocksDB和SST 有密切关联
SST只存在新旧迭代,和迁移无关;
谢谢,看起来region只是一个逻辑上的概念,一个region的key可能分散在不同的sst中。
我的理解是:
当我们要进行写操作时,需要找到这个key可能分属的region,然后写到这个region所属的节点。当时这次写入我们并不知道这个key最终会位于哪个sst,如果我给rocksdb的block cache分配很小的内存,那么可能在读取这个key时,仍旧需要遍历很多sst。
我的问题是:
当我们需要对region进行迁移时,我们是不是需要将这个region的所有key从不同的sst读取出来,然后将这些key/value复制到另一个节点。
当我们读取一个key时,我们只能通过region清楚这个key具体分布在集群中哪个节点上,具体的读和region没有关系,依然交由rocksdb,走正常的读流程。
同样,当我们进行scan操作时,也只会判断这个范围的key在哪个节点上,仍旧需要交由rocksdb去进行读操作,而如果region分属于不同的节点,我们如果去返回一个全局一致性的结果呢?
我看你对这块的知识理解很零散,我的理解可能也不够太深,无法帮你太多,还是建议去官网学习
谢谢!
https://tikv.org/deep-dive/key-value-engine/rocksdb/ TiKV首席工程师讲如何使用RocksDB的这篇演讲稿也有很多细节可以帮助理解。比如迁移的那一块,是通过RocksDB的ingest SST file实现的。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。