Получить размер коллекции Firestore - PullRequest
0 голосов
/ 13 февраля 2019

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

1 Ответ

0 голосов
/ 13 февраля 2019

Есть ли лучший способ получить коллекцию / размер документа пожарного магазина?

Нет, это почти то, что я бы сделал.Ну ... в общем, я бы попытался уклониться от таких операций, поскольку они очень нестабильны.Но если вам действительно нужно знать, сколько места занимает документация в собрании, то для расчета его следует использовать суммирование размера каждого документа, и облачные функции кажутся естественной технологией для выполнения этих вычислений при каждом обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...