Định Cỡ ClickHouseCalc Cho PostHog Tự Dựng: Bảng `sharded_events`, Funnel & RAM
Trong mô hình định lượng ClickHouseCalc, bảng `sharded_events` của PostHog sắp xếp theo `(team_id, toDate(timestamp), event, cityHash64(distinct_id))` nén gọn sự kiện 920 byte khoảng 11.6 lần với ZSTD(3), giúp giữ trọn lịch sử phễu 365 ngày trên ổ NVMe cố định.
Bảng Định Cỡ Đĩa Nén & RAM ClickHouseCalc Cho posthog-self-hosted-events
| Quy Mô Luồng Ghi | Dữ Liệu Thô | Đĩa Nén MergeTree | Cấu Hình RAM & vCPU | Đối Chiếu Chi Phí (2026-11-12) |
|---|---|---|---|---|
| 10M Events/Day (365d · 9.2 GB/d) | 3.36 TB Raw | 370 GB NVMe (ZSTD-3 + 22% Buffer) | 32 GB RAM / 8 vCPU (Full Stack) | ~$1,450/tháng Metered SaaS vs $19.99/tháng Hostinger KVM 8 |
| 100M Events/Day (365d · 92 GB/d) | 33.6 TB Raw | 3.7 TB NVMe/RAID | 64 GB RAM / 16 vCPU | ~$8,900/tháng Metered SaaS vs $79.00/tháng InterServer Ryzen |
| 500M Events/Day (365d · 460 GB/d) | 167.9 TB Raw | 18.5 TB RAID Array | 128 GB RAM / 24 vCPU | ~$32,000/tháng Metered SaaS vs $149.00/tháng Dedicated Ryzen |
Khóa Sắp Xếp PostHog & Bảng `ReplacingMergeTree` Trên ClickHouseCalc
CREATE TABLE posthog.events_analytics
(
uuid UUID,
event LowCardinality(String),
properties String CODEC(ZSTD(3)),
timestamp DateTime64(6, 'UTC') CODEC(DoubleDelta, LZ4),
team_id Int64,
distinct_id String CODEC(ZSTD(3)),
elements_chain String CODEC(ZSTD(3)),
created_at DateTime64(6, 'UTC') CODEC(DoubleDelta, LZ4)
)
ENGINE = ReplacingMergeTree(_timestamp)
PARTITION BY toYYYYMM(timestamp)
ORDER BY (team_id, toDate(timestamp), event, cityHash64(distinct_id), cityHash64(uuid))
SAMPLE BY cityHash64(distinct_id)
SETTINGS index_granularity = 8192;
Danh Mục Tinh Chỉnh MergeTree ClickHouseCalc Cho posthog-self-hosted-events
- Tách các trường JSON hay lọc (`$current_url`, `$pathname`, `$browser`, `utm_source`) thành cột `LowCardinality(String)` riêng để truy vấn phễu không phải đọc toàn bộ chuỗi JSON.
- Cấp tối thiểu 32 GB RAM tổng khi đặt chung trọn bộ PostHog, Kafka/Redpanda, PostgreSQL, Redis và ClickHouse trên một máy chủ Hostinger KVM 8 hoặc UltaHost VDS.
- Khai báo `SAMPLE BY cityHash64(distinct_id)` trong khóa MergeTree để truy vấn phễu thăm dò 90 ngày chỉ cần quét mẫu 10% người dùng với `SAMPLE 0.1`.
Câu Hỏi Kỹ Thuật ClickHouseCalc Về posthog-self-hosted-events
- Vì sao ClickHouseCalc khuyến nghị dùng ClickHouse Keeper thay cho Apache ZooKeeper trên cụm PostHog?
-
`clickhouse-keeper` viết bằng C++ thay vì Java, giảm bộ nhớ điều phối Raft từ ~2.5 GB JVM Heap xuống khoảng ~250 MB RSS trên máy chủ PostHog tự vận hành.
- ClickHouseCalc tách biệt lưu trữ quay màn hình Session Replay khỏi bảng sự kiện MergeTree như thế nào?
-
Chúng tôi khuyến nghị chỉ lưu metadata phiên trong bảng MergeTree và đẩy các khối dữ liệu DOM rrweb nén sang ổ S3 hoặc MinIO tách biệt với chính sách tự xóa 14–30 ngày.