首页 文章

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

提问于
浏览
0

The Story

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

但我需要在数据库中存储一些高度敏感的用户数据,我不想以纯文本形式进行 .

所以,我在将数据存储到数据库之前加密了数据 . 我可以在Firebase控制台中看到加密的字符串 .

The Problem

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

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

My Attempt

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

我用了,

"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 回答

  • 4

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

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

    EDIT

    这是该表的结构
    firebase persistence

相关问题