![]() |
1
27
我认为你的大多数担忧都是不必要的。回答一个又一个问题: 1) 最大的问题是自定义属性,每个事件都不同。为此,您必须使用 EAV (entity-attribute-value) 设计重要的问题是,这些属性可以有哪些类型?如果不止一个,例如字符串和整数,那么它就更复杂了。这种设计通常有两种类型:
因此,这些表格看起来像:
2) 你所说的分割是什么意思?查询事件的各种参数?在上面提到的EAV设计中,您可以这样做:
这将选择APP_LAUNCH类型的所有事件,其中APPVERSION为>4和APP_NAME包含“Office”。 3) EVENTTYPE表可以达到一致性的目的,即您可以:
或者,您可以使用ID作为数字,并在EVENTTYPE表中具有事件名称-这节省了空间,并允许轻松重命名事件,但您需要在每个查询中加入该表(导致查询速度较慢)。取决于节省存储空间的优先级与较低的查询时间/简单性。 4) 时间戳范围查询在您的设计中实际上非常简单:
5) “为每个事件插入一行不好吗?” 这完全取决于你!如果您需要每个这样的事件的时间戳和/或不同的参数,那么您可能应该为每个事件设置一行。如果有大量相同类型和参数的事件,您可能可以像大多数登录系统所做的那样:聚合发生在一行中的事件。如果你有这样的直觉,那么这可能是一条路要走。 6) “我没有足够的SQL经验,不知道这些查询在可能数十万个这样的条目上是如何执行的” 成百上千个这样的条目将被毫无问题地处理。当你达到百万时,你将不得不更多地考虑效率。 7) “当我希望客户端真正获得分析时,聚合表或内存缓存是否有助于缓解问题?” 当然,如果查询速度变慢并且需要快速响应,这也是一种解决方案。但是,您必须引入一些机制来定期刷新缓存。它过于复杂;也许最好考虑聚合输入上的事件,请参见5)。 |
![]() |
BujarA · 未识别Google Analytics参考源 7 年前 |
![]() |
marcin2x4 · MS Access-重复值之和 7 年前 |
![]() |
J88 · Firebase/GTM:自定义标签 7 年前 |
![]() |
dhin · 特定用户点击分析中的广告跟踪 7 年前 |