来自 SQL 的 Firebase Java Admin SDK 初学者

Posted

技术标签:

【中文标题】来自 SQL 的 Firebase Java Admin SDK 初学者【英文标题】:Firebase Java Admin SDK beginner from SQL 【发布时间】:2018-11-06 08:08:51 【问题描述】:

我正在开发客户的销售点 (POS) 软件。我打算将 django 与 mysql 一起使用,但客户端无法支付主机费用,因此我决定使用 Firebase 用 Ja​​va 编写它。我在考虑来自 MySQL 的 Firebase 时遇到了一些麻烦。

根据 Firebase 文档,要像我在 SQL 中那样处理关系,它必须看起来像:

inventory : 
    CD001 : 
        genre : 
            "CLASSICAL" : TRUE
    

genre : 
    CLASSICAL : 
        Name : "CLASSICAL"
        inventory : 
            CD001 : TRUE
        
    

而在 SQL 中,我只会将流派 primary key 作为 foreign key 放在库存中。在 Firebase 中有没有更好的方法来做到这一点?似乎对于每个具有CLASSICAL 类型的产品,我都必须制作两个updateChildAsync()。此外,任何更改(例如从库存中删除流派)我还必须遍历两个 DatabaseReference

如果我要使用push 来获取生成的primary key,那就更糟了,因为我必须遍历每个孩子才能获得genre 的名称。

我知道这可能不是制作 POS 的最佳方式,但鉴于项目的限制以及我喜欢学习新东西,我会坚持下去。

【问题讨论】:

【参考方案1】:

在 NoSQL 中,您通常会在多个位置具有相同的值,以允许您的应用程序的特定用例。这很正常,但如果您有关系数据库背景,可能需要一些时间来适应。

要掌握 Firebase 的 NoSQL 模型,我建议阅读 NoSQL data modeling、观看 Firebase for SQL developers(适用于 Firebase 实时数据库)和 Getting to know Clouf Firestore。

有关如何建模多对多关系的一个很好的示例,请参阅Many to Many relationship in Firebase。您的示例看起来更像是一个分类问题,在这种情况下,我还建议阅读Firebase query if child of child contains a value。

【讨论】:

以上是关于来自 SQL 的 Firebase Java Admin SDK 初学者的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 java 从 Firebase 检索新添加的子项的父键

Firebase admob 未从 pod 或服务器获取最新的 google ad mob SDK

ad-hoc sql 的列名

java ldap - 获取信息是对 AD 的更改

解开SQL注入的神秘面纱-来自于宋沄剑的分享

Kotlin 与 Java 中的 Firebase 分析初始化