ClickHouse的BitMap只能用于存储整型,其用于存储用户画像数据的原理为:
对于一个画像需求,可能涉及到多个tag,每个tag都可能有多个tag value,例如性别这个tag,就有男,女两个tag value。
- 普通的宽表是对每个用户的所有标签对应的value保存到一条数据里面。这样有多少个用户就会有多少条数据。
-
使用BitMap来存储则是:
用户所有tag的tag value对应于1条数据,使用一个BitMap类型字段来保存所有对应用户的id,注意此时id只能为整型。
对于查询多个标签值的用户,则只需要找出标签值对应的用户对应的BitMap,然后进行与运算,结果就是所有符合条件的用户的id。