本工程是【复赛】比赛时选手需要下载的工程,选手实现工程内 TSDBEngineImpl 类。 评测程序会将选手提交的修改后的本工程代码进行编译并调用选手实现的 TSDBEngineImpl 类的接口进行测试。 其他参赛说明及本文档均未说明或不清楚的问题可询比赛客服。
- structs 文件夹:定义了一些数据结构。选手不能修改。
- TSDBEngine.java:接口定义类,选手需要实现对应接口。选手不能修改本类。
- TSDBEngineImpl.java:选手需要实际实现的类。
评测程序可能会执行的操作:
- 写入测试。
- 正确性测试。
- 重启,清空缓存。
- 重新通过先前的数据目录重启数据库,数据库需要加载之前持久化的数据。
- 正确性测试。
- 读取性能测试。
- 压缩率测试。
参赛选手所实现的简易版数据库存储引擎需要满足以下要求:
基于提供的 CodeBase 工程进行实现。实现的存储引擎也需要实现指定接口以实现与评测程序的交互(详细的接口定义可参见提供的代码工程)
存储引擎支持数据按“表”进行组织,其中入库的数据集模型满足以下要求:
唯一标识 timestamp 指标 1 指标 2 … 指标 60 车辆标识码 1 时间戳 1 值 1 值 1 … 值 1 车辆标识码 2 时间戳 2 值 2 值 2 … 值 2 车辆标识码 3 时间戳 3 值 3 值 3 … 值 3 以上数据均为虚拟数据。
车辆唯一标识是一个字符串类型作为入库数据对象的唯一标识。
时间戳是一个以 8 字节整型数表示的 Unix 时间戳(语义精确到毫秒)。
指标的类型有以下三种可能:
不定长度的字符串类型。
8 字节浮点数类型。
4 字节整数类型。
评测程序将数据写入前会将写入数据集的 Schema 信息(包含表名、标签名、字段名及类型)通过建表接口传给存储引擎。存储引擎需要实现的写入接口需要能够支持满足 Schema 信息条件的数据集写入。
在评测程序测试查询之前会进行重启操作,存储引擎需要能够将写入的数据落盘到本地存储上。
存储引擎还需要基于 CodeBase 中定义的查询接口实现数据的检索查询能力。
选手编写的程序实现除了 CodeBase 中给定的 Dependency 之外,无法依赖任何其他第三方 Dependency。
16/3467
运行时需要指定JVM参数
com.alibaba.lindorm.contest.test.TestMyDb