Ну, вы должны постараться сохранить ваши данные как можно более линейными. Если вам нужно быстро выполнить запрос к древовидной структуре данных, вам придется либо сохранить их в базе данных (или, если хотите, в JSON-кодировке), если это возможно для ваших данных, либо вам придется генерировать индексы дерева, которые могут использоваться для быстрого запроса части древовидной структуры. Однако я не уверен, как Google App Engine будет работать при обновлении этих индексов.
Когда дело доходит до Google App Engine, ваша главная задача должна заключаться в том, чтобы сократить количество запросов, которые вам нужно сделать, и чтобы ваши запросы возвращали как можно меньше строк. Операции стоят дорого, а хранилище - нет, поэтому избыточность не должна восприниматься как плохая вещь.
Вот некоторые мысли по этому вопросу, которые я нашел, прибегая к помощи Google (хотя для MySQL, но вы можете получить общее представление об этом): Управление иерархическими данными в MySQL
А вот и обсуждение для Google App Engine: Моделирование иерархических данных