首页 > 解决方案 > Firebase 实时数据库与存储

问题描述

我使用实时数据库来存储我的用户配置文件。

每个配置文件都可以包含多个房间,其中每个房间都包含自己的图片,从而创建了一个非常复杂的结构。

这里有一个例子:在此处输入图像描述

为了更容易将图片存储到相应的配置文件和房间,我在将对象解析到数据库之前将 android 中的图片位图更改为字符串,然后当我取回对象时,我将字符串转换回位图。

我只是想知道这是否会在未来降低成本。或者如果这个实现是安全的,我们将更多数据放在数据库中。

标签: androidfirebasefirebase-realtime-databasefirebase-storage

解决方案


使用您当前的数据库结构,您将遇到问题。

使用实时数据库和这种结构,每次您请求“user/SOME_ID”时,您都将下载它下面的所有数据——包括您的序列化图像。请参阅数据库结构指南以获取有关如何展平数据以免发生这种情况的信息。

此外,我建议使用Cloud Storage for Firebase以原生二进制格式存储图像,而不是序列化为 Base64 占用大约 30% 的空间。与 RTDB 一样,如果您将文件存储在诸如“user/SOME_ID/roomImages/ROOM_ID/...”或“roomImages/ROOM_ID/...”之类的结构化位置,则可以使用规则保护存储。


推荐阅读