最近需要实现一个业务,大致的内容是为了提高效率,把数据库中的信息定时同步到内存中,然后使用内存查询,提高效率。然后在实现过程中遇到了一个问题,需要同步的信息约9万条,但是这9W条数据对应了133W个图片,大概一个id十几张图片吧。存储这些图片的时候,遇到了小问题。
项目原本使用的结构是:
List<String,Map<String,Object>>
使用车辆的vin做主键,查询相关信息。但是当遇到图片时,使用这个结构就出现了问题,图片库的信息结构是:
- vin1,图片1
- vin1,图片2
- vin3,图片3
使用list存储,相当于我的一个list存储了133W条数据,效率相当的低下,并且查询的时候效率也不高。
后来一直就在想做成查询时直接查数据库,不做加载,但是这样就相当于每次连接都加载一次数据库,效率也是比较低。
后来突然发现自己陷入了一个结构上的误区,如果我使用:
Map<String,List<String>>
这样的结构就可以以Vin做主键,后缀图片信息list,直接将数据减少到了9W条,并且查询时可以直接使用map.contains处理。
其实这个问题并不是一个困难的技术问题,只是因为陷入了原有项目的影响,先入为主的使用了原来的数据结构,没有好好思考本质的问题,导致思路进入了岔路,浪费了许多时间。