Как мы знаем, база данных Firebase Realtime - это одно большое дерево JSON :
Поскольку база данных Firebase Realtime позволяет вкладывать данные глубиной до 32 уровней, у вас может возникнуть искушение:думаю, что это должна быть структура по умолчанию.Однако, когда вы извлекаете данные из местоположения в вашей базе данных, вы также извлекаете все его дочерние узлы.
Прямо сейчас база данных, в которую мне нужно попасть, имеет следующую структуру:
root
|
|- category 1
| |
| |
| |-sub category 1
| | |
| | |- record 1
| | | |- (...)
| | |
| | |- record 2
| | | |- (...)
| | |
| | |- (...) record n
| |
| |
| |- (...) sub category n
|
| - (...) category n
в каждой категории есть тысячи подкатегорий, а в каждой подкатегории тысячи записей.
Есть ли способ перебора базы данных реального времени с использованием python и официального firebase-admin python SDK иполучать только мелкие копии (или ключи) базы данных, чтобы затем извлекать определенные строки?
Я бы не хотел, чтобы архитектор БД переделывал БД для денормализации данных записи на другой узел
прямо сейчас.Мы нашли способ извлечения ключей со всеми соответствующими данными, используя официальный SDK:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
# Fetch the service account key JSON file contents
cred = credentials.Certificate('firebase-adminsdk.json')
# Initialize the app with a service account, granting admin privileges
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://<app_name>.firebaseio.com/'
})
ref = db.reference('category 1')
print(ref.get())