FileMaker 管理海量文件之案例总结

作者:jcmp      发布时间:2021-05-13      浏览量:0
数周前,飞沫课首发了 FileMa

数周前,飞沫课首发了 FileMaker 对接 OSS 来管理海量文件的做法。这是基于我们的产品构思及工程师王振平 FileMaker 插件技能而产生的一种解决方案。在方案发布之后,我们也对多位客户(最多者多个文件的总量高达 170G)的方案进行了数据及方案迁移,本文就是这些迁移实践的案例总结和分享。

本文提供了案例文件,但是本案例仅供参考,不建议直接套用。如果你是入门视频教程付费用户,你还可以得到一份包含开启 OSS 及安装插件等内容教程。

方法千万条,安全第一条

由于 OSS 与容器做法差异较大,所以我们特别提示使用此方案的用户,一定要注意数据安全及数据上传成功确认。如果因为没有进行及时有效的安全设定而造成数据丢失,飞沫课及插件工程师概不负责。

1. 单独注册公司或客户专用的阿里云账号

2. 不要直接使用主账号的 AccessKey,使用 RAM 登录

3. RAM AccessKey 重置后要及时更新到系统中

4. 尽量为不同 Bucket 或项目单独创建 RAM 账号

5. AccessKeyID & Secret 不要暴露给终端用户

6. OSS 读写权限一定要设置为『私有』,不可为『公共读写』

7.服务器一定要部署 SSL 数字安全证书

8. 开启跨区域复制(对OSS进行备份,较重要资料可以跨云备份)

9. 每一个上传环节都要在上传测试通过再投入使用

现有容器文件上传

使用 OSS 遇到的第一个问题是:现在已经有大量的文件放在容器中,如何过渡至 OSS?对于这种情况,我们先要梳理清楚迁移流程:

1. 针对每一个容器字段建立『容器X-文件名』、『容器X-对象名』、『容器X-对象所在文件夹』、『容器X-对象 URL』等字段。他们用来存储上传 OSS 之后的访问信息。

2. 通过『替换字段』的方式,将容器文件名填充到『容器X-文件名』字段。这一步是为了后续下载时,还原文件名。

3. 通过『替换字段』的方式,将容器对象名填充到『容器X-对象名』字段。因为 OSS 对象名称不能重复,如果重复会覆盖之前的文件,这将造成原有文件丢失。所以,我们可以使用 『"OSS" & UUID & 仅保留大小写字母和. 的文件名』类似的方式,对文件名进行序列化处理。

4. 编写脚本批量循环执行迁移操作:导出容器至桌面(名称即为对象名)、上传至 OSS、成功后删除本地容器文件和清空容器字段。当然,删除本地容器文件和清空容器字段的动作也可以放在最后批量手动执行,这样稳一些。如果之前没有成功,还可以再来一次。当然,对于已经上传了的文件,再来一次时也要先删除。

5. 替换字段,生成 OSS URL。为了可以在没有插件的平台也可以预览或下载 OSS 文件,可以提前生成过期时间更长的 URL。之后,可以编写服务器 Schedule 进行定期自动替换。

后续文件上传

完成历史容器文件的迁移之后,我们还要开发后续正常流程中的文件上传。这是我们要注意分辨容器字段是在本表还是外表。本表比较简单,跟上面差不多。外表则需要将对象名等信息设置到容器相同的表中。

关于文件上传,还需要注意选择文件的交互。一般是4种:点击单选、点击多选、点击选择文件夹导入、拖拽上传。其中,单选可以用自带脚本『插入文件』;多选和文件夹上传用 BaseElement 的插件函数;拖拽上传用 Webviewer。其实主要都是为了获得文件的路径列表。

另一个要注意的就是 OSS 插件识别的路径是操作系统标准路径,而这与 FileMaker 返回路径不同。我们有开发一个自定义函数(见案例文件)来进行路径转换,但是 FileMaker 19 中已经内置了类似的函数。

从 OSS 恢复至容器

当然不可避免的,我们需要将 OSS 文件恢复至容器。这个过程跟从容器上传至 OSS 流程类似,方向相反。只是需要注意『从URL插入』至容器后,要用 Base64 函数进行文件名恢复。

文件在线预览

容器很大的一个优点是可以对 pdf、mp4、mp3、图片等格式的文件直接预览。当我们使用 OSS 之后,数据库中仅存储文件的对象名和链接等信息,无法直接预览。这时候有3种做法:

1. 下载到本地临时路径后用默认软件打开

2. 插入到容器进行预览

3. 使用 WebViewer 直接进行预览

这 3 种做法的前 2 种相对简单,第 3 种则需要前端的技能。大家根据自己的能力,选择对应的方案。这里有一个提示,无论哪种方案都建议预先生成一个长期的链接,这样就可以在 iOS 平台也能进行后续预览、下载等操作。

服务器备份归档的最佳选择

OSS 收费的大头是存储费+下载流量费(1GB/0.5元),而上传是免费的。基于这个特性,我们可以将服务器的历史备份文件免费上传到 OSS Bucket。历史备份文件本来会随着时间和容量的限制,逐步被自动删除。现在用 OSS 归档,可以更低成本(相比直接买云盘,归档式存储 1TB 才 270元/年)保存更长时间。

服务器大文件中转

OSS 还有一个重要特性,ECS 和 OSS 的文件传输可以选择为内网传输。这种情况下,上传下载均为免费,并且速度非常快且稳定。100MB/s的速度,几乎跟本地 USB3.0 传输文件有得一比。同时外网下载速度也不限速,这一点比市面上的普通限速个人网盘体验好太多了。这对经常需要做服务器运维的人员来说,简直是救命一样的存在。当然,爽的同时,也要注意数据上传安全规定,确保客户和公司数据隐私及安全。