本篇我們會分兩部分 - 校驗和去重
前面講到的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})
這樣在data層,看到的就是一個個hash過的object,對於重複的hash就會自動覆蓋