Odoo 浅谈Odoo提供的附件机制

Odoo提供的附件机制

Odoo 浅谈Odoo提供的附件机制

存储位置可配置:
  通过 设置-参数-系统参数 定义的关键字ir_attachment.location来控制附件的存储方式。
Odoo 浅谈Odoo提供的附件机制

  • 1.如果未维护记录或者维护记录值不为db,默认存储路径为应用服务器上的/var/lib/odoo/filestore/数据库名称/文件夹,例如/var/lib/odoo/filestore/ 868/9c。

  • 2.将文件的路径写入store_fname字段,file_size表示文件大小,db_datas表示文件以二进制的形式存储在数据库中(这里为空)。

  • 3.如果维护记录值为db,则以binary的形式存储在数据库表db_datas中。

个人总结

  1. 可配置存储方式:
    我们的所有附件数据可以选择保存在数据库db_datas中,还是应用服务器/var/lib/odoo/数据库名/sha1[:2]中。
    如果保存在应用服务器中,系统的数据库会更加轻便,而且附件使用base64编码文件,通过sha1方式给每一个附件文件标定为唯一的记录datas_fname,如果上传相同的文件,数据库store_fname记录只需要放入文件的服务器软地址,不需要再将文件上传,加速了上传的效率。

  2. 同一记录单或不同记录单,相同的文件只会上传一次:
    数据库记录只需要放入相关的访问地址,需要时直接读取,防止多余的空间流失。HRP现有的资质的附件上传方式,采用数据库直接存取二进制文件形式,上传文件就接收,不校验,不智能,数据冗余,使得数据库臃肿不堪。

  3. 权限检查-更安全:
    对系统附件的每一种类型的操作,odoo源码附件机制都会检验权限是否满足,只有附件上传者、超级管理员、管理组用户才可以对相关附件进行高级操作,保证了操作附件的安全性。

  4. 不易丢失:
    选择应用服务器保存附件,极端情况下,当数据库数据丢失或损坏时,存储在服务器端的附件不会受到波及,防止数据丢失。

  5. 异步备份:
    虽然看起来既要备份数据库,又要备份应用服务器的附件部分,操作步骤变多了。但分步备份保证了数据库快速备份,服务器附件传输要求并不像数据库备份时,要求快速、轻便,所以这样的机制更适合

如有理解错误的地方,请大家指正.