来自 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 用 Java 编写它。我在考虑来自 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 检索新添加的子项的父键