深入解析Mixpanel基础设施
Mixpanel’s analysis UI is powered by an in-house database called Arb, which is built for ingesting, storing, and querying trillions of events in real-time. This page covers the core aspects of our design, the pain points it eliminates for users, and how it compares to other systems.
Mixpanel的分析UI由一种名为Arb的内部数据库提供支持,该数据库专为实时接收、存储和查询数万亿个事件而构建。本页面介绍了我们设计的核心方面,消除了用户的痛点,并与其他系统进行了比较。
Event-Centric
事件中心
Mixpanel is built for ingesting, storing and querying events. Each event has a name, a timestamp, a unique identifier, a distinct_id that identifies the entity that performed the event, and a JSON blob of properties.
Mixpanel专为接收、存储和查询事件而构建。每个事件都有一个名称、时间戳、唯一标识符、标识执行事件的实体的distinct_id,以及一个属性的JSON blob。
{
"event": "Signed up",
"properties": {
"time": 1618716477000,
"distinct_id": "alice@mixpanel.com",
"$insert_id": "29fc2962–6d9c-455d-95ad-95b84f09b9e4",
"Referred by": "Friend",
"URL": "mixpanel.com/signup",
}
}
{
"event": "注册",
"properties": {
"time": 1618716477000,
"distinct_id": "alice@mixpanel.com",
"$insert_id": "29fc2962–6d9c-455d-95ad-95b84f09b9e4",
"推荐人": "朋友",
"URL": "mixpanel.com/signup",
}
}
Events are a simple and powerful way of collecting and storing data for the following reasons:
事件是一种简单而强大的方式来收集和存储数据,原因如下:
- Events map cleanly to real-world actions. When something happens at a point in time to a user, you can track it with all the context you know about that event.
- 事件与现实世界的行为相匹配。当某个事件在某个时间点发生在用户身上时,您可以跟踪该事件及其相关上下文。
- Events are granular. Any question about user engagement, conversion, or retention can be modeled as an aggregation over a user’s event stream. The event data model makes no assumption about the queries it might receive, so it serves as a flexible foundation to power arbitrary queries. Events can be summarized by any property (to form a metric) or segmented by any property (to drill down into a metric) completely on-the-fly.
- 事件是粒度化的。关于用户参与度、转化率或保留率的任何问题都可以建模为对用户事件流的聚合。事件数据模型不对可能收到的查询做任何假设,因此它作为一个灵活的基础来支持任意查询。事件可以根据任何属性进行汇总(形成指标),或者根据任何属性进行分段(深入了解指标),完全实时进行。
- Events are immutable and append-only. When so...