请教下 v 站各位大佬一个关于删除二进制文件中一部分数据的问题(能不能行都不知道)

查看 99|回复 7
作者:AboPlus   
​ 现在的场景是,在创建完对象后会产生一个二进制文件,相当于有多少对象就会有多少个二进制文件,二进制文件存储在云端,前端要根据这个二进制文件来进行模型的渲染,在删除对象的时候,会把云端的二进制文件同步进行删除,同时释放用户的存储空间。
​ 现在是如果对象比较多的情况下,比如有一千个对象,那么相当于云端存储着一千个这样的二进制文件,那么从前端向云端对象存储获取数据的话相当于需要获取一千次才能拿到完整的数据,前端同事觉得请求会特别多。
​ 然后领导就提了个这样的需求,他希望把所有对象产生的二进制文件放在一个二进制文件中,这个情况如果不涉及到删除倒还好说,但是涉及到删除的话,应该是没有办法删除二进制文件中的一个片段吧?包括后续继续创建对象,要把这个对象产生的数据追加到这个总的二进制文件中,那么在删除某个对象的时候岂不是要是别出这个对象在这个总的二进制文件中的位置,然后重写一份总的二进制文件把除了那个要删除的对象以外的所有数据都写进来,同时每个对象还需要一些额外的属性用来标识它们在二进制文件中的位置,在产生新的文件后,还要把后续所有对象的这个属性都修改为新的位置。如果被删除的对象所处位置在总二进制文件的前面,那相当于对几乎所有对象都要进行修改。
​ 我目前觉得这个需求有点难搞,从我的视角来看,带来的问题远比能解决的问题多得多,甚至并不能解决原有的问题,对此想请教下各位大佬,对于这种情况各位有什么看法,可以分别从前端视角和后端视角给一些看法和建议。

二进制, 文件, 对象, 删除

NessajCN   
你得先说一下用什么库或方法创建的这些文件
Nitroethane   
感觉你这个是伪需求啊?「现在是如果对象比较多的情况下,比如有一千个对象,那么相当于云端存储着一千个这样的二进制文件,那么从前端向云端对象存储获取数据的话相当于需要获取一千次才能拿到完整的数据,前端同事觉得请求会特别多」:把你的接口改造成允许一个请求获取多个二进制文件呢?比如你的接口里 file_id 指定要下载的二进制文件的 ID ,把 file_id 改成数组类型,即一次可以指定多个文件 ID ,这样就可以实现批量下载,而且请求也不会很多。
Chad0000   
把所有对象产生的二进制文件放在一个二进制文件中。
Sqlite ?
paopjian   
还奇怪的需求啊,为什么要请求一千次,打包一次返回来不就好了?而且你们也太耿直了,点删除就删除文件了?有要求把所有数据保存半年的.
cxtrinityy   
关键是解决根本问题前端觉得请求过多,以前写过上传的代码,用 multipart/form-data 一次性上传多个文件,搜了下,multipart/related 好像能实现对应的一次性下载多个文件。
PS:当时用 httpurlconnection ,手撸的这个请求的 http 头和内容,感觉自由性挺高,应该不是特别难实现
tool2d   
如果我是你,会另外写一个服务器大文件缓存通道,1000 个文件根据 hash 特性,合并成几个文件后给前端下载。
删除还是走原来的逻辑,不去动。
seers   
oss 提供打包下载功能啊,你云端生成完了打包一个下过来
您需要登录后才可以回帖 登录 | 立即注册

返回顶部