nauu / clickhousebook

ClickHouse原理解析与应用实践
Apache License 2.0
199 stars 64 forks source link

30个问题的集合 #38

Open ubyyj opened 4 years ago

ubyyj commented 4 years ago

Pxx代表页码。

【1】P55 "物化视图目前不支持同步删除",为什么呢?MV的更新是在有新数据插入的时候触发;而Clickhouse的数据删除也是以增代删,理论上应该也可以同步啊。 【2】P79 "可执行文件"。非常不理解这种字典的使用场景,它与本地文件有什么本质区别? 【3】P81 上半部分字典配置。如果不只是能指定filter,如果还能指定select字句来增加projection岂不是更加灵活,就像一个view一样。 【4】P83 MongoDB字典,字典的字段如何与MongoDB的字段进行映射呢?MongoDB是支持嵌套的。 【5】P90 "sample by intHash32(UserID)" 加了这句之后,数据的存储模型有什么变化吗?他是如何帮助后面可以高效的采样的呢? 【6】P92 "MergeTree通过标记文件建立了primary.idx稀疏索引与.bin数据文件之间的映射关系"。这里如果能讲primary.idx与.mrk文件的映射关系,读者就会更加清楚了。 【7】P104 minmax的汇总信息以什么方式存储在哪里? 【8】P105 ngrambf_v1 布隆过滤器为什么能提升like语句的查询效率? 【9】P107 每个压缩块都有压缩方式字段,是不是意味着每个数据块都可以使用不同的压缩方式? 【10】P121 "如果一个分区内某一列数据因为TTL到期全部被删除了,那么在合并之后生成的新分区目录中,将不会保护这个列字段的数据文件",如果此时select该字段,会返回数据吗?是返回null还是返回默认值? 【11】P127 "注意,如果一次性写入大于1MB的数据,分区也会被写入cold卷",这个似乎不是很实用,能否根据数据的age来确定是否存到code卷呢?比如1年以前的数据已到cold卷,以节约成本。 【12】P131 "在修改ORDER BY时会有一些限制,只能….",如果新增拍下字段,已有的数据会重建吗?为什么新增排序字段不能通过MODIFY ORDER BY语句完成,而是需要通过ALTER ADD COLUMN完成,这个语句有什么pros/cons吗? 【13】P140 "数据会按照ORDER BY id, ver DESC",为什么是DESC? 【14】P141 应用程序如果决定ver呢?多线程访问下,是不是也存在ver字段冲突?譬如两个线程使用了一样的ver进行插入和删除。 【15】P150 "当通过MySQL表引擎向远端MySQL数据库写入数据的同时,物化视图也会同步更新数据",如果通过MYSQL的原生借口写入数据,而不是从ClickHouse里面写,MV还能同步吗? 【16】P164 TinyLog使用场景是什么? 【17】P166 Log与TinyLog有什么本质区别?比MergeTree好在哪里? 【18】P172 应该是一个笔误 router.post('/ user', …" 斜杆(/)与user之间多了一个空格。 【19】P180 "SAMPL 0.4" 这里是连续的取40%的数据吗?没有任何的随机性? 【20】P185 第5行,表中第二行"1,ClickHouse,105",原表中没有rate=105的表,貌似原始表join_tb2少了一行。 【21】P188 "(3)将右表中未被连接的…",那么左表中未被连接的数据行呢? 【22】P191 "这是因为中执行PREWHERE查询时,只需要获取JavaEnable字段进行数据过滤",WHERE查询时不能这么做吗?这个不应该在优化器里面用户无感的做掉了的么?为什么引入一个新的关键字PREWHERE? 【23】P201 倒数第4行,NULL为什么不是排在最后或者最前? 【24】P212 唯一性,应用侧如何以相同的block写入呢?另外相反,如果确实有2条一样的数据需要插入,如何才能不被reject掉呢? 【25】P215 "/block_numbers …. 都会依照相同的block_numbers顺序进行" 这是为了保证副本merge之后与主副本完全一致? 【26】P216 "/queue ….会将执行任务添加至该节点", 这个添加动作会失败吗?log与mutation的执行顺序重要吗?不同的执行顺序会导致不同的结果吗?貌似insert和delete顺序不同,最终结果是不一样的。 【27】P223 "与此同时,主副本还会锁住执行线程", 锁住执行线程意味着什么?后续无法进行merge计划? 【28】P237 本地表是如何与Distributed表关联起来的?是通过表名的前缀(test_shard_2)关联的吗? 【29】P242 "首先在CH5节点,对分布式表…",Client端可以轮换这个节点,以分散写入压力吗? 【30】P245 "分布式查询的核心流程",这里有可能根据key进行分支裁剪吗?如果一个key肯定不在这个副本上,那就没有必要查它了。

cangyin commented 2 years ago

我看了一下,你的问题好多都应该是自己查找ClickHouse文档就能解决的,一些“为什么”的问题是关于ClickHouse的实现方式的,也不应该问书的作者而应该在ClickHouse社区提issue。

不要把这本书当作你对ClickHouse唯一的知识来源。