数据仓库使用指南
基于现代的数据库 ClickHouse ,我们构建了新一代的数据仓库。与云服务紧密集成,支持将存储数据,日志表数据自动入库,从而为业务运营的统计分析提供强大的数据支持。
新的数据仓库将提供以下独特的功能:
- 基于列的存储,支持高比率的压缩,可以大幅度缩减存储成本;
- 基于列的遍历和向量的运算支持高效的查询效率,可以将原本需要分钟级别的复杂查询,缩短到秒级别;
- 直观的数据视图功能,支持存储中间结果,配合 join 查询,可支持高效率且复杂的二阶查询;
- 更多样的函数,支持更复杂的 SQL 查询,可参考下述「常见用例」小节;
- 无缝对接日志表,可支持多样的数据源实时入库和查询,从而更灵活地集成外部数据源,为业务提供更完备的数据分析能力。
数据入库
在对数据进行查询前,我们首先需要将数据入库。目前,我们主要支持数据存储 Class 的入库。数据存储 Class 又具体分为两类,一类是日志表,另一类则是普通 Class 。
日志表
日志表是数据存储中的一类特殊表,是为了满足业务存储事件,日志等「不变型」数据的需求而设计,这类数据的特点是写入之后不会再修改。这些数据在被收集起来之后,可以应用于业务审计与运营分析,开发者对事件进行追踪等场景。由于该类数据只有追加,没有修改,我们能够提供更大的并发吞吐写入。
开启和接入日志表
在控制台「数据存储」页面,点击创建 Class ,勾选「日志表」选项即可创建日志表。比如我们可以创建一个名为 EventLog
的日志表。
在 SDK 层面,日志表对象的创建与普通对象的创建一致:
// for Android
AVObject event = new AVObject("EventLog");
event.put("eventType", "buttonClick");
event.put("eventName", "orderSubmit");
event.put("eventDate", new Date());
event.saveInBackground();
日志提交后会直接入库数据仓库,并且实时可查。
普通 Class 的同步
普通 Class 对象,由于支持更新,同步到数据仓库的流程要稍微复杂一些。
在控制台「数据存储」-「数据仓库」中,点击创建 Class 同步,选择需要在数据仓库中查询分析的字段,即可开启 Class 到数据仓库的同步。存量数据会即刻开始同步,取决于数据量的大小,同步可能持续较长时间,请耐心等待。
开启同步的 Class ,我们会在次日凌晨同步前一日更新过的数据。因此更新的对象需要在次日才可见。我们还会持续优化该流程,以期实现更实时的同步。