TL; DR Есть ли API для получения размера коллекции пожарного депо вместо того, чтобы мы делали это вручную?
Так что в соответствии с их документами , можнорассчитайте размер документа, указав их типы данных.
Пример кода, иллюстрирующий вышесказанное, выглядит следующим образом:
import datetime
def calculate_doc_size(data):
if isinstance(data, dict):
size = 0
for key, value in data.items():
key_size = len(key) + 1
value_size = calculate_doc_size(value)
key_pair_size = key_size + value_size
size += key_pair_size
return size
elif isinstance(data, str):
return len(data) + 1
elif any([isinstance(data, bool), data is None]):
return 1
elif isinstance(data, (datetime.datetime, float, int)):
return 8
elif isinstance(data, list):
return sum([calculate_doc_size(item) for item in data])
def calculate_doc_name_size(path):
size = 0
for collection in path.split('/'):
size += len(collection) + 1
return size + 16
document = {'a': {'a': 1, 'b': 2, 'c': None}, 'b': [1, 2, 3], 'c': [{'a': 1}]}
size = calculate_doc_name_size('database/account1/my_doc_id') + calculate_doc_size(document) + 32
print(size) # prints 139
Поэтому моя идея заключалась в том, чтобы рассчитать размер документа в событии on write
, используяОблако функционирует и поддерживает счетчик, который определяет размер коллекции в любой данный момент времени.(размер в байтах)
Под размером я подразумеваю не количество ключей в документе, а занимаемое хранилище.
Есть ли лучший способ получить пожарный складразмер коллекции / документа?
Вариант использования:
Скажем, я хотел ограничить учетную запись объемом памяти, например, как это делает gmail (15 ГБ на пользователя).Я хотел добиться этого, чтобы каждая учетная запись была коллекцией, идентифицируемой account_id.Пример:
- database
- account 1
- collection 1
- collection 2
- account 2
- collection 1
- collection 2
Похожие записи: Расчет размера документов Google Firestore