V2EX thedinosaurmail
 thedinosaurmail 最近的时间轴更新
thedinosaurmail

thedinosaurmail

V2EX 第 673366 号会员,加入于 2024-01-26 11:26:17 +08:00
thedinosaurmail 最近回复了
2024-04-16 17:35:26 +08:00
回复了 OliverDD 创建的主题 程序员 对数据库感兴趣,但完全接受不了 cpp
那就学编译原理,学完编译原理再看 cpp
2024-04-02 12:25:57 +08:00
回复了 zdking08135 创建的主题 程序员 请教一个系统设计题
在使用 ClickHouse 进行表的设计时,针对您的需求,我们需要考虑如何优化存储和查询效率,尤其是面对大规模数据和复杂查询(如跨地域合并统计)。以下是一个基于您需求的示例表结构,包括了用户 ID 、打点时间、地域信息和打点数。

首先,考虑到数据量和查询需求,建议使用 MergeTree 系列引擎,它适用于大数据量的存储和分析,支持高效的数据插入和实时查询。

表结构设计
sql
Copy code
CREATE TABLE user_events
(
`event_date` Date,
`user_id` UInt64,
`city_id` UInt32,
`country_id` UInt32,
`event_count` UInt32,
`event_datetime` DateTime
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, country_id, city_id, user_id)
SAMPLE BY user_id
SETTINGS index_granularity = 8192;
字段解释:
event_date: 打点发生的日期,用于分区和快速过滤。
user_id: 用户的唯一标识符。
city_id: 城市的唯一标识符,需要有一个额外的映射表来解释每个城市 ID 对应的实际城市。
country_id: 国家的唯一标识符,同样需要一个映射表来详细说明。
event_count: 该用户在该日的打点数,考虑到您的业务场景,可能需要在数据插入前进行聚合计算。
event_datetime: 打点的具体时间点,支持精确到秒的时间戳,可用于进一步的时间序分析。
注意事项:
分区策略:根据 event_date 进行分区,可以有效地管理数据的存储和查询,尤其是对历史数据的分析。
排序键:通过(event_date, country_id, city_id, user_id)进行排序,优化查询性能,特别是当进行地域和时间范围的查询时。
采样:通过 SAMPLE BY user_id 支持对数据进行采样查询,适用于需要估算或快速分析的场景。
索引粒度:index_granularity 设置为 8192 ,这是一个平衡查询速度和存储效率的配置。根据实际数据量和查询模式,这个值可能需要调整。
多地域查询设计思路:
对于跨地域的统计分析,可以在查询时通过 GROUP BY 语句实现。例如,如果需要合并计算用户在同一天内不同城市(或国家)的打点数,可以通过将 user_id 和 event_date 作为聚合的关键字,然后对 event_count 求和。
2024-04-02 12:25:49 +08:00
回复了 zdking08135 创建的主题 程序员 请教一个系统设计题
直接写 clickhouse 就行 ,不需要怎么设计设计
uid ,country ,province ,create_at

主要是要判断好按什么排序就行
2024-04-02 11:50:14 +08:00
回复了 zdking08135 创建的主题 程序员 请教一个系统设计题
clickhouse , 10 亿还好 ,按天分区就行
2024-03-20 14:35:18 +08:00
回复了 ljian6530 创建的主题 Linux Ubuntu22.04 爱之初体验
debian 桌面的路过 , 感觉 debian 很稳定
2024-03-14 12:19:56 +08:00
回复了 Dffcc 创建的主题 程序员 Stack overflow 发问被踩
搜索一下提问的智慧
要先写:
1 遇到什么问题
2 自己做了什么努力
3 努力之后报了什么错误,希望遇到什么帮助

如果这么写,他们会很开心帮忙你的
2024-03-14 12:17:23 +08:00
回复了 anUglyDog 创建的主题 程序员 程序员第二门语言
后端的话如果主力语言是弱类型语言比如 php ,就可用学 java/c++/rust/go
后端如果主力语言是 java ,可用学 rust/js/c/groovy/go
也就是主力弱类型语言就学一门强类型语言
如果主力语言是有 gc ,就学一门无 gc 的语言

如果想 nlp 就 python+ c++ + rust

如果是前后端都想学就学 js/ts/react
2024-03-12 09:48:22 +08:00
回复了 iszengmh 创建的主题 React 为什么我感觉 react 很难学
我不喜欢 vue 那种写法,还挺喜欢 react 的写法
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     892 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 11ms UTC 19:34 PVG 03:34 LAX 12:34 JFK 15:34
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86