开发者社区> 问答> 正文

Flink中的RocksDB的术语Column Family具体是什么?

Flink中的RocksDB的术语Column Family具体是什么?

展开
收起
游客vwuxaq6iqaowc 2021-12-09 14:18:14 861 0
1 条回答
写回答
取消 提交回答
  • Column Family 在RocksDB3.0,增加了Column Families的支持。

    RocksDB的每个键值对都与唯一一个列族(column family)结合。如果没有指定Column Family,键值对将会结合到“default” 列族。

    列族提供了一种从逻辑上给数据库分片的方法。他的一些有趣的特性包括:

    支持跨列族原子写。意味着你可以原子执行Write({cf1, key1, value1}, {cf2, key2, value2})。 跨列族的一致性视图。 允许对不同的列族进行不同的配置 即时添加/删除列族。两个操作都是非常快的。

    列族的主要实现思想是他们共享一个WAL日志,但是不共享memtable和table文件。通过共享WAL文件,我们实现了酷酷的原子写。通过隔离memtable和table文件,我们可以独立配置每个列族并且快速删除它们。

    每当一个单独的列族刷盘,我们创建一个新的WAL文件。所有列族的所有新的写入都会去到新的WAL文件。但是,我们还不能删除旧的WAL,因为他还有一些对其他列族有用的数据。我们只能在所有的列族都把这个WAL里的数据刷盘了,才能删除这个WAL文件。这带来了一些有趣的实现细节以及一些有趣的调优需求。确保你的所有列族都会有规律地刷盘。另外,看一下Options::max_total_wal_size,通过配置他,过期的列族能自动被刷盘。

    如果类比到关系型数据库中,列族可以看做是表的概念。

    2021-12-09 14:18:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载