全量索引加载的实现

本文探讨了在多实例部署中,全量索引加载为何选择将数据导出到文件而非直接从数据库读取,以减轻数据库压力。同时提出将数据导出功能抽象为微服务的建议,并详细描述了实现步骤。对于广告数据层次依赖,提出了优化数据结构以支持更灵活的地域维度检索。最后,介绍了全量索引加载的具体实现逻辑,强调了加载顺序的重要性。
摘要由CSDN通过智能技术生成

1.加载全量索引时,为什么要将数据库表中的数据导出到文件中,而不是直接从数据库中读取 ?

   当多实例部署的时候,如果多实例同时从数据库中读取全量数据,会给数据库造成巨大的压力。关于数据保存在文件中,IO 耗时的问题大可不必担心,计算处理能力肯定不是瓶颈。

2.你可以将全量数据导出的功能改写为一个微服务吗 ?需要考虑功能抽象,因为后续可能添加其他的维度扩展表。(可以在 imooc-ad-service 下面实现,微服务的名字可以是 ad-data-dump)

  1. pom中引入common和sponsor依赖,并引入starter-web,eureka-client,mysql,jpa,jdbc等依赖
  2. 配置yml, 包括 端口号,spring-name,jpa,datasource,eureka
  3. 将DumpDataService类放到该模块下,controller调用dumpAdTableData方法

3.广告数据之间存在层次划分,隐式的表达了数据之间的依赖关系,你能想到更好的数据结构去表达它们吗 ?

   首先,层次之间的依赖关系不能改变。但是,有些数据结构我们可以修改实现,例如地域维度方面,目前的设计只能支持省和市都提供的情况。但是,如果我想检索一个省的广告数据,就需要把各个市都列出来,这显然是不合理的。所以,可以考虑将地域索引数据重定义,支持省和市的匹配。

实现读取保存的全量文件,去加载全量索引实现。

实现的逻辑是先定义一个方法用于将文件的数据一行一行加载到数据中,然后定义一个初始化函数,在其中对之前定义的各个层级间的数据实现全量索引的加载。需要注意的是&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值