当遇到海量数据存储瓶颈时,除了可以将数据拆分到不同的机器,还可以先在当前服务器上构建垂直的层次存储结构,这样不单可以节约服务器资源,还可以减少分布式存储网络通信开销与风险。这也是生活中常见的解决方案:高楼大厦,立体车库等通过立体方式来节约土地。充分利用各个维度的空间。
具体方案如下:
一、建立存储的三层架构
1、缓存区
热点数据缓存在内存里,加快存储速度
2、工作区
用关系数据库来存储最新操作数据、热点数据、全局数据。
1)业务系统里用到的数据都是有关系的,所以使用关系数据库是最直接的方式,但关系数据库随着存储数据量的增长,性能会下降,所以要通过算法每天更新热点数据和将不够热的数据转移到冷库中来存储以维持关系数据库的数据量在可接受的范围内。
2)记录最新的操作数据,有需要的话还要从冷库里将相关的数据调出来作为热点数据使用。
3、冷库
1)NOSQL或硬盘文件形式来存储,存储结构为KEY-VALUE,根据数据特点还要将数据按区、块、类型这样的层级结构或扁平的模糊查找结构来存储,并建立起数据地址登记表
2)通过加硬盘的方式来扩容,扩展较灵活。
二、热度算法
1、二八原则
这是海量数据产品的特点,你的产品数据可能只有百分之二十是被使用到的,你的用户群里可能只有百分之二十是活跃的。但这百分之二十不是固定而是流动的,今天这百分之二十与明天的百分之二十可能不是同一批数据或人,所以要通过算法来更新热点数据。
2、不同的业务类型有不同的热度分析方法
例如电商的用户访问频率通常是一月几次,而社交类的用户可能频率是天天访问,但如果有些天中断了,可能就会有较长一段时间不会再访问。