1.加载全量索引时,为什么要将数据库表中的数据导出到文件中,而不是直接从数据库中读取 ?
当多实例部署的时候,如果多实例同时从数据库中读取全量数据,会给数据库造成巨大的压力。关于数据保存在文件中,IO 耗时的问题大可不必担心,计算处理能力肯定不是瓶颈。
2.你可以将全量数据导出的功能改写为一个微服务吗 ?需要考虑功能抽象,因为后续可能添加其他的维度扩展表。(可以在 imooc-ad-service 下面实现,微服务的名字可以是 ad-data-dump)
- pom中引入common和sponsor依赖,并引入starter-web,eureka-client,mysql,jpa,jdbc等依赖
- 配置yml, 包括 端口号,spring-name,jpa,datasource,eureka
- 将DumpDataService类放到该模块下,controller调用dumpAdTableData方法
3.广告数据之间存在层次划分,隐式的表达了数据之间的依赖关系,你能想到更好的数据结构去表达它们吗 ?
首先,层次之间的依赖关系不能改变。但是,有些数据结构我们可以修改实现,例如地域维度方面,目前的设计只能支持省和市都提供的情况。但是,如果我想检索一个省的广告数据,就需要把各个市都列出来,这显然是不合理的。所以,可以考虑将地域索引数据重定义,支持省和市的匹配。
实现读取保存的全量文件,去加载全量索引实现。
实现的逻辑是先定义一个方法用于将文件的数据一行一行加载到数据中,然后定义一个初始化函数,在其中对之前定义的各个层级间的数据实现全量索引的加载。需要注意的是&