Day19 Lab 2 - Object storage 数据校验和去重

本篇我们会分两部分 - 校验和去重

前面讲到的Metadata,如果有了Metadata,我们可以做到上述两个部分,这能为储存系统节省许多空间

校验

我们的校验做在API层

if hash == obj_hash:
   if produce_object({'name': obj_name, 'version': version, 'hash': hash, 'obj': open(os.path.join(DIR_PATH, hash), 'rb').read()}):
      return Response(json.dumps({}), status=200, mimetype='application/json')
   else:
      return Response(json.dumps({}), status=400, mimetype='application/json')

python-simple-object-storage/run.py at master · kaichiachen/python-simple-object-storage

可以看到,前端也必须传hash做为参数以保证安全

去重

对於同一个object,他的hash是一样的,因为他们的内容一样,所以去重我们简单的把要消费的资料的名字设定为hash,如下所示

res = Producer.getInstance().send(server, value={f"{content['hash']}-{i}": comp})

https://github.com/kaichiachen/python-simple-object-storage/blob/master/distributed_obj_system/backend/api/obj.py#L46

这样在data层,看到的就是一个个hash过的object,对於重复的hash就会自动覆盖


<<:  连接的原理(基本概念、内连接与外连接)

>>:  Day7: IAM users、group建立

如何让网路社团的发文得到较好的转换效果

透过网路社团发文做行销,因为几乎等於零成本,所以一直都是很热门的行销管道,但要得到好的发文转换效果,...

Day07-Loop

前言 Loop对於程序来说非常非常非常之重要,手动一万次跟电脑做一万次效率差非常多,当然也没有人会去...

Day 20 CSS & HTML5 <CSS的初始化 & HTML5 新增的语意化标签>

CSS的初始化 简单理解 : CSS初始化是指重设浏览器的样式 (也称 CSS reset) 每个网...

Day5 HTML 语法简易介绍(二)

常见的 HTML elements 标题 headings 在 VS code 中输入以下程序码 &...

Day 28 - 用 canvas 与 pdfjs 做文件签名(上)

前述 今天用前面做过的小画家相似功能,来完成一个可以在文件上面签名的功能~ 当然也会有新的东西可以玩...