M. Lehenbauer est bien sûr le maître de toutes choses Firebase, afin de l'écouter. ;) Cependant, ce sujet particulier est celui que j'ai été travailler plus pour un couple de semaines maintenant.
Voici quelques-unes de mes pensées, pour améliorer la "Exécuter un serveur distinct" et "côté Client de l'interrogation" réponses:
ElasticSearch (un node.js le script)
Avec un node.js script sur le serveur, vous pouvez avoir ElasticSearch intégré et d'offrir une certaine teneur en solides recherches en moins d'une heure. Voici un blog et une lib qui le rend encore plus facile: https://www.firebase.com/blog/2014-01-02-queries-part-two.html
cache/requêtes communes
Ceux-ci peuvent être traitées par un serveur/cron processus qui lit la table et les doublons dans les données. Par exemple, supposons que je veux montrer "non disponible/disponibles" pour un nom de l'utilisateur lors de l'inscription, mais stocker les enregistrements d'utilisateur par un autre IDENTIFIANT unique pour certains complexes de la raison.
Mon cron/serveur est capable de lire tous les enregistrements de la table des utilisateurs, puis de les insérer dans une autre table qui est stocké à l'adresse e-mail, avec une valeur de l'ID de l'enregistrement (ou toutes autres données que j'aimerais bien le savoir).
Cette données dupliquées approche est en quelque sorte un manuel technique de mise en cache et est une pratique courante dans le No-SQL environs; nous sommes à la négociation de l'espace de stockage (qui est présumée être disponible et bon marché) pour la vitesse et la simplification des processus.
des requêtes personnalisées (à l'aide d'une file d'attente)
Personnalisé les requêtes peuvent être envoyées via XHR (ajax) directement à un serveur, ce qui peut faire le dur travail et le retour à de meilleurs résultats. Alternativement, vous pouvez utiliser Firebase pour se connecter à un serveur de back-end en utilisant une file d'attente.
Le client de la demande de requête en tant que JSON dans une Firebase table appelée queue
et attend une réponse.
Le serveur est à l'écoute de queue.on('child_added', ...)
, et sert les données à l'aide de `queue_record.enfant (la'réponse', ...données ici...)
Cela a de beaux avantages. Pour l'un, un nombre quelconque de serveurs ont pu écouter et de servir les réponses, faire de l'équilibrage de la charge un jeu d'enfant. Le code est très simple à configurer et à couvert dans un autre thread ici dans.
Espérons que cela est utile!