Consulta estrutura hierárquica de dados no firebase

Eu tenho um aplicativo que armazena dados em uma estrutura em árvore, que eu gostaria de persistir no Firebase.

Cada nó na árvore é assim:

    node:
        size: // the number of items
        data: // array of items
        0: // child node 0
        1: // child node 1
        2: // child node 2
        3: // child node 3

Então, basicamente, é um quad-tree. O problema é que se eu carregar o nó raiz da árvore, ele será enorme, porque o firebase criará um instantâneo que inclui a árvore inteira. Seria bom se eu pudesse ler a estrutura da árvore, mas sem o campo 'data' primeiro, e então eu possa carregar seletivamente o campo 'data' em alguns nós.

Atualmente, parece não haver uma maneira de fazer isso com eficiência. A única maneira de obter uma consulta é consultar o nó da árvore por nó:

    read /node/size
    if (node has children)
      for i=0:3
         read /node/i/size

No entanto, essa abordagem utilizará muitas viagens de ida e volta e não há como saber se um nó tem filhos sem realmente carregar os filhos inteiramente (isso pode ser feito se eu adicionar um campo 'hasChild' nos nós, mas parece redundante).

Sinceramente, sugiro que a equipe de desenvolvimento do firebase possa implementar um método que permita ao usuário filtrar campos nos dados retornados. Um novo método de consulta seria o melhor.

    var query = rootRef.filter("*/size");
    query.on('value', function(snapshot) {
        // snapshot contains only 'size' fields.
    });

O argumento de filtro pode ser uma regex e a consulta retornará qualquer caminho que corresponda à regex. Eu acho que sem um método de consulta como esse, é importante usar o firebase para armazenar estrutura hierárquica de dados. Todos os métodos de consulta atuais assumem que os dados armazenados na base do firma são bastante "simples" para serem eficientes.

Pergunta, questão:

Como devo armazenar a estrutura em árvore usando a infraestrutura existente do firebase para que ela possa ser consultada com eficiência? Eu preciso da capacidade de percorrer a árvore para baixo e para cima e recuperar dados associados a nós específicos.

O firebase é adequado para esse tipo de estrutura de dados? Que estratégia alternativa é mais adequada?

obrigado

questionAnswers(1)

yourAnswerToTheQuestion