个人设想的冷热数据架构

1、热数据 vs 冷数据

对比热数据冷数据
访问频度常访问不常访问
存放策略放内存放硬盘

e.g.
两个接近的商品【A:蛋黄酥】和【B:月饼】
假设A和B每年都被访问365次
A每天都被访问1次
B仅在中秋前被访问365次,其余时间几乎不被访问
于是认为:A是热数据,B是冷数据
对此,A应长期放内存,以便快速访问;B应长期放硬盘,在中秋前再放到内存

1.1、冷热转换

夏装和冬装 具有季节性
夏季时,夏装 成为 热数据,冬装 成为 冷数据
冬季时,夏装 成为 冷数据,冬装 成为 热数据

2、个人构想的【冷热数据自动转换】模型

2.1、Python真代码伪实现

class Queue:
    def __init__(self, size=3):
        self.size = size  # 队列大小(内存大小)
        self.queue = []
        self.hot = {}
        self.cold = {chr(i + 97): i for i in range(26)}
        self.check_queue()

    def visit(self, x):
        """访问"""
        if x in self.queue:
            y = self.get_hot(x)
            del self.queue[self.queue.index(x)]  # 更新队列
        else:
            y = self.get_cold(x)
        self.queue.insert(0, x)  # 入队
        self.hot[x] = y
        if self.queue.__len__() > self.size:
            del self.hot[self.queue.pop()]  # 出队
        print(y)

    def get_hot(self, x):
        """访问热数据"""
        return self.hot[x]

    def get_cold(self, x):
        """访问冷数据"""
        from time import sleep
        print('冷数据查询有延迟。。。')
        sleep(1)
        return self.cold[x]

    def check_queue(self):
        """查看队列"""
        print('队列:{}'.format(self.queue))
        print('热数据:{}'.format(self.hot))
        print('冷数据:{}'.format(self.cold))


print('程序开始'.center(50, '-'))
q = Queue()
while True:
    a = input('输入一个字母:').strip()
    try:
        q.visit(a)
    except KeyError:
        print('查看队列状况')
        q.check_queue()

3、个人构想的【冷热数据存储】模型

使用频度存储方式
内存
固态硬盘
机械硬盘
极低机械硬盘+压缩
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值