Firebase structure de données et l'url
Je suis nouveau dans Firebase et nosql, alors pardonnez-moi de faire référence à sql.
Donc ma question est de savoir comment structurer les données dans firebase?
Dans firebase, est que la moyenne à chaque "nouvelle firebase" = "nouvelle Base de données" ou "table" dans mysql?
Si dans mes temps réel, web app, j'ai des utilisateurs et des commentaires.
Dans mysql, je vais créer un utilisateur et un commentaire de la table de les lier ensemble.
Comment cette structure dans firebase?
- Il semble que je vais être le premier point qui vous à cette adresse: firebase.com/blog/2013-04-12-denormalizing-is-normal.html 🙂
- en passant, avez-vous plus d'infos à ce sujet? Je voulais article ou tutoriel sur un newbie en provenance de relationnel fond de nosql.
- Je suis novice aussi 🙂 j'ai passé la journée d'hier afin de vous poser cette question, stackoverflow.com/questions/16628362/... qui, je pense, sera sans réponse. Donc, gardez à l'esprit que firebase peut être bon pas pour tous les cas
- Salut @vzhen, comme kostik dit Firebase est pas une base de données SQL. Il est plus comparable à une base de données hiérarchique ou (peut-être un peu plus facile métaphore) d'insérer des éléments dans un document XML. Je suggère de lire les réponses à kostik antérieure de question ici: stackoverflow.com/a/16423051/209103.
Vous devez vous connecter pour publier un commentaire.
Si vous avez des utilisateurs et des commentaires, vous pouvez facilement le modèle comme ceci:
Cependant il est plus probable qu'il existe une troisième entité, comme un article, et que les utilisateurs sont en commentant (des uns et des autres) articles.
Firebase n'a pas la notion de clé étrangère, mais il est facile de le mimer. Si vous faites cela, vous pouvez le modèle de l'utilisateur/article/commentaire de la structure comme ceci:
C'est une correspondance directe de la façon dont vous feriez ce modèle dans une base de données relationnelle. Le principal problème avec ce modèle est que le nombre de recherches que vous aurez besoin de faire pour obtenir l'information dont vous avez besoin pour un seul écran.
En fonction de vos besoins, vous pourriez même avoir besoin de lire le nœud d'UTILISATEURS.
Et de garder à l'esprit que Firebase n'est pas le concept d'une clause where qui vous permet de sélectionner uniquement les éléments de ARTICLE_USER_COMMENT qui correspondent à un article en particulier, ou un utilisateur spécifique.
Dans la pratique, cette façon de cartographie de la structure n'est pas utilisable. Firebase est une structure de données hiérarchique, de sorte que nous devrions utiliser les capacités uniques qui nous donne le plus traditionnel, le modèle relationnel. Par exemple: nous n'avons pas besoin d'un ARTICLE_USER_COMMENT nœud, on peut juste garder cette information directement sous chaque article, l'utilisateur et le commentaire lui-même.
Un petit extrait de ce:
Vous pouvez le voir ici, que nous faisons passer l'information à partir de ARTICLE_USER_COMMENT sur l'article et l'utilisateur nœuds. C'est la dénormalisation des données un peu. Le résultat est que nous allons avoir besoin de mettre à jour plusieurs nœuds lorsqu'un utilisateur ajoute un commentaire à un article. Dans l'exemple ci-dessus, nous devrions avoir à ajouter le commentaire lui-même et ensuite les nœuds de l'utilisateur concerné, de nœud et de l'article nœud. L'avantage est que nous avons moins de nœuds à lire quand nous en avons besoin pour afficher les données.
Si vous prenez cette dénormalisation à ses plus extrêmes, vous vous retrouvez avec une structure de données comme ceci:
Vous pouvez voir que nous nous sommes débarrassés des COMMENTAIRES et ARTICLE_USER_COMMENT nœuds dans ce dernier exemple. Toutes les informations à propos d'un article est maintenant stocké directement en vertu de l'article nœud lui-même, y compris les commentaires sur cet article (avec un "lien" vers l'utilisateur qui a fait le commentaire). Et toutes les informations sur un utilisateur est maintenant stockée en vertu de l'utilisateur du nœud, y compris les commentaires de l'utilisateur (avec un "lien" vers l'article que le commentaire est sur).
La seule chose qui est encore difficile à propos de ce modèle est le fait que Firebase n'a pas d'API pour traverser ces "liens", de sorte que vous aurez à prendre par l'utilisateur/l'article vous-même. Cela devient beaucoup plus facile si vous utilisez le UID/AIDE (dans cet exemple) comme le nom du nœud qui identifie l'utilisateur/article.
Alors qui mène à notre modèle final:
J'espère que cela aide à la compréhension des données hiérarchiques de la modélisation et de trouver des compromis.
vzhen
commentaire surarticle(AID_1)
puis-je insérer le commentaire en deux nœuds(articles and users)
droit? Il en sera de ce devenir les données en double? <br/> une autre question, si je veux trouver tous les articles post par vzhen, qui signifie que je dois faire la même chose, comme les commentaires de créer unarticles
sous-nœud sous vzhen_uid?JOIN
à obtenir de la manière dont les données ressembler. Dans hiérarchique db, nous devons savoir comment les données avant de nous créer des espaces pour eux.