V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  thedinosaurmail  ›  全部回复第 1 页 / 共 1 页
回复总数  13
70 天前
回复了 OliverDD 创建的主题 程序员 对数据库感兴趣,但完全接受不了 cpp
那就学编译原理,学完编译原理再看 cpp
84 天前
回复了 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 求和。
84 天前
回复了 zdking08135 创建的主题 程序员 请教一个系统设计题
直接写 clickhouse 就行 ,不需要怎么设计设计
uid ,country ,province ,create_at

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

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

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

如果是前后端都想学就学 js/ts/react
105 天前
回复了 iszengmh 创建的主题 React 为什么我感觉 react 很难学
我不喜欢 vue 那种写法,还挺喜欢 react 的写法
106 天前
回复了 nnegier 创建的主题 C 还是不太理解 C 静态库和动态库?
静态库就是每次进程启动都要塞进内存里面, 所以每个进程都有一模一样的内容
动态库就是共享内存 share 这块内容 ,这样可以减少资源
120 天前
回复了 deku9 创建的主题 MySQL 关于 Mysql 的 b+树顺序存储的问题
字符串可以 ascii 比较 , 怎么比较可以看 mysql 的 Collation
https://dev.mysql.com/doc/refman/8.0/en/adding-collation.html#:~:text=A%20collation%20is%20a%20set,orders%20characters%20based%20on%20weights.

一般用: utf8mb4_unicode_ci
127 天前
回复了 rayn32 创建的主题 Linux 怎么管理服务器和不同的服务
k8s
小米
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4733 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.