thedinosaurmail's recent timeline updates
thedinosaurmail

thedinosaurmail

V2EX member #673366, joined on 2024-01-26 11:26:17 +08:00
thedinosaurmail's recent replies
Jan 9
Replied to a topic by ipfox Android 小米 13 手贱升了 hyperos3,崩了
升了,还行
大部分保险都差不多,你有钱就选免赔额低一点的。没钱就选免赔额高一点的。反正都是买个保障。我给我爸买了每年 1k 多的保险。因为有高血压所以买了个健康告知宽松一点的。反正尽早买也有好处。不然年纪大了买不了了
买一些能保到很久之后的。
Apr 16, 2024
Replied to a topic by OliverDD 程序员 对数据库感兴趣,但完全接受不了 cpp
那就学编译原理,学完编译原理再看 cpp
Apr 2, 2024
Replied to a topic by 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 求和。
Apr 2, 2024
Replied to a topic by zdking08135 程序员 请教一个系统设计题
直接写 clickhouse 就行 ,不需要怎么设计设计
uid ,country ,province ,create_at

主要是要判断好按什么排序就行
Apr 2, 2024
Replied to a topic by zdking08135 程序员 请教一个系统设计题
clickhouse , 10 亿还好 ,按天分区就行
Mar 20, 2024
Replied to a topic by ljian6530 Linux Ubuntu22.04 爱之初体验
debian 桌面的路过 , 感觉 debian 很稳定
Mar 14, 2024
Replied to a topic by Dffcc 程序员 Stack overflow 发问被踩
搜索一下提问的智慧
要先写:
1 遇到什么问题
2 自己做了什么努力
3 努力之后报了什么错误,希望遇到什么帮助

如果这么写,他们会很开心帮忙你的
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3135 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 93c8b4a0 · 16ms · UTC 14:35 · PVG 22:35 · LAX 07:35 · JFK 10:35
♥ Do have faith in what you're doing.