适用于Android的Firebase实时数据库内部数据表示

时间:2016-08-12 07:22:07

标签: android database sqlite firebase firebase-realtime-database

故事

我有一个Android应用程序,它严重依赖Firebase实时数据库。到目前为止,我使用它没有任何问题。

但是我需要在数据库中存储一些高度敏感的用户数据,我不想以纯文本形式这样做。

因此,我在将数据存储到数据库之前对其进行了加密。我可以在Firebase控制台中看到加密的字符串。

问题

我需要检查并验证我的本地设备中Firebase数据库如何在内部表示数据,因为我也在数据库中存储加密密钥。

我的数据库有setPersistenceEnabled(),因此Firebase会在用户设备中本地存储这些数据。没有人提到Firebase内部如何做到这一点。它是将它存储为JSON文件还是SQLite数据库(最有可能)。

我的尝试

为了深入研究问题,我尝试从我的应用程序中提取数据库。

我用过,

"adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/"

在我的终端中获取我的应用程序的所有数据库名称列表,这就是我得到的,

app-debug-xxxx.firebaseio.com_default
app-debug-xxxx.firebaseio.com_default-journal
crash_reports
crash_reports-journal

那么,这些是我的数据库吗?它们是常规的SQLite数据库吗?假设它们是SQLite数据库,我无法从这些文件中读取数据。

我个人认为,了解数据如何在Android内部表示非常重要,这样我们才能做出更好的决策来存储我们的数据。

任何帮助都将受到高度赞赏?

1 个答案:

答案 0 :(得分:4)

在检查了你提到的文件之后,是的,它确实是一个SQLite数据库文件(app.firebaseio.com_default)。

数据保存在serverCache表中,它包含2列:path(TEXT)和value(BLOB)。 path是firebase数据库中数据的路径,类似于/users/-KOasdbcdevalue是该路径的JSON值。

修改

这是该表的结构 firebase persistence