SQL 中等效的 Firebase 加入、分组、聚合
Firebase Joining, Grouping, Aggregation Equivalent in SQL
我来自 SQL,第一次尝试使用 Firebase。这个查询可以用 Firebase 实现吗?
SELECT
name,
AVG(rating) as avgRating
FROM restaurants
JOIN reviews
ON restaurants.ID = reviews.restaurantsID
GROUP BY restaurants.ID
ORDER BY avgRating;
如果是,您能否为 link 提供 SQL 人的 Firebase 博客、教程或高级课程? (最好是 Firebase for Web)
连接是所有 NoSQL 风格数据库的主要弱点。这源于它们的工作方式:查询只是直接读取 JSON 存储。 (这也赋予了它们优势:速度和可扩展性。)
如果您使用的是 Firebase 实时数据库,那么最好的方法是 denormalize your data 并执行两个查询。那看起来像这样:
firebase.db.ref("/path/to/ref").on("value", (snapshot) => {
if(snapshot.val()){
firebase.db.ref(`/second/ref/${snapshot.val().joinValue}`).on("value", (snapshot2) => {
console.log(snapshot2.val()) // Do something
}
}
})
最近,Firebase 发布了新的 FireStore database,该新版本旨在解决实时版本的一些弱点。但是,我认为并没有专门解决连接问题(最终解决方案可能与我的示例类似。)
最后,我经常使用 Firebase,我怀疑他们可能正在使用受 GraphQL 启发的解决方案,这将是基于 SQL 的数据库的完整接口。我希望在接下来的 12 个月内下降。
我来自 SQL,第一次尝试使用 Firebase。这个查询可以用 Firebase 实现吗?
SELECT
name,
AVG(rating) as avgRating
FROM restaurants
JOIN reviews
ON restaurants.ID = reviews.restaurantsID
GROUP BY restaurants.ID
ORDER BY avgRating;
如果是,您能否为 link 提供 SQL 人的 Firebase 博客、教程或高级课程? (最好是 Firebase for Web)
连接是所有 NoSQL 风格数据库的主要弱点。这源于它们的工作方式:查询只是直接读取 JSON 存储。 (这也赋予了它们优势:速度和可扩展性。)
如果您使用的是 Firebase 实时数据库,那么最好的方法是 denormalize your data 并执行两个查询。那看起来像这样:
firebase.db.ref("/path/to/ref").on("value", (snapshot) => {
if(snapshot.val()){
firebase.db.ref(`/second/ref/${snapshot.val().joinValue}`).on("value", (snapshot2) => {
console.log(snapshot2.val()) // Do something
}
}
})
最近,Firebase 发布了新的 FireStore database,该新版本旨在解决实时版本的一些弱点。但是,我认为并没有专门解决连接问题(最终解决方案可能与我的示例类似。)
最后,我经常使用 Firebase,我怀疑他们可能正在使用受 GraphQL 启发的解决方案,这将是基于 SQL 的数据库的完整接口。我希望在接下来的 12 个月内下降。