0

私はSQLから来て、最初にFirebaseを試しています。このクエリはFirebaseで可能ですか?Firebaseベースの結合、グループ化、集約SQLに相当する

SELECT 
    name, 
    AVG(rating) as avgRating 
FROM restaurants 
JOIN reviews 
    ON restaurants.ID = reviews.restaurantsID 
GROUP BY restaurants.ID 
ORDER BY avgRating; 

「はい」の場合、Firebase for SQLのブログ、チュートリアル、または上級コースへのリンクを教えてください。 (好ましくはFirebase for Web)

+0

SQLクエリをFirebaseのようなNoSQLデータベースに直接マップしようとすると、問題のレシピになります。 [NoSQLデータモデリング](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)と[Firebase for SQL開発者](https(英語))を読んだ後、ユースケースを再評価することをお勧めします。 ://www.youtube.com/playlist?list = PLI-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s)。 –

答えて

0

すべてのNoSQLスタイルデータベースの主な弱点は結合です。これは彼らが働く方法から生まれます。クエリはJSONストアをまっすぐに読んだだけです。

FirebaseリアルタイムDBを使用している場合、これに最も適した方法はdenormalize your dataで、2つのクエリを実行することです。つまり、このようになります:

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をかなり使っていると思う。これはSQLベースのDBの完全なインターフェースになります。私はそれが今後12ヶ月で落ちると予想しています。

関連する問題