主题:千万级数据如何进行缓存
目前有3个方案去解决这个问题,如下:
方案1. 采用自定义缓存,直接把1千万数据,根据数据标识作为key放到hashmap里面,每次查询的时候就直接根据key去找到相应的记录,并更新对应的查询次数,并定时把记录写到文件里面,防止数据全部丢失,此方案优点是快,缺点是需要太多的内存,如果缓存里面没有这条记录,需要把这条记录也加进去,不知道会不会太慢。
方案2. 采用关系数据库,比如oracle,把这些记录都放到oracle的表里面,每次查询的时候到oracle里面去查,但是这么频繁的操作和这么大的数据量,查询的速度可能会大打折扣,符合不了要求。
方案3. 采用内存数据库,比如fastdb,h2之类的内存数据库,这个不是很熟悉,也没有经验,只是大概的想到可以这么做。
现在倾向于使用方案1,请探讨一下,方案1是否可行?方案2,3是否存在可优化的地方?