На этой странице описан размер хранилища документов, названий документов, полей и записей индекса в Cloud Firestore.
Подробнее Cloud Firestore о ценах на хранилище…Размер строки
Размер строки рассчитывается как количество байтов в кодировке UTF-8 + 1.
В виде строк хранятся следующие данные:
- Идентификаторы подборок
- Идентификаторы документов в виде строк
- Названия документов
- Названия полей
- Значения строковых полей
Пример:
- Идентификатор коллекции
tasksзанимает 5 байт + 1 байт, итого 6 байт. - Название поля
descriptionзанимает 11 байт + 1 байт, итого 12 байт.
Размер идентификатора документа
Размер идентификатора документа равен размеру строки для строкового идентификатора или 8 байтам для целочисленного идентификатора.
Размер названия документа
Размер названия документа – это сумма следующих значений:
- Размер каждого идентификатора коллекции и документа в пути к документу.
- 16 дополнительных байтов
Для документа в подколлекции users/jeff/tasks со строковым идентификатором my_task_id размер названия документа составляет 6 + 5 + 6 + 11 + 16 = 44 байта:
- 6 байт для идентификатора коллекции
users; - 5 байт для идентификатора документа
jeff; - 6 байт для идентификатора коллекции
tasks; - 11 байт для идентификатора документа
my_task_id; - 16 дополнительных байтов
Размер значения поля
В таблице ниже указаны размеры значений полей по типам.
| Тип | Размер |
|---|---|
| Массив | Сумма размеров значений. |
| Логическое значение | 1 байт |
| Байты | Длина в байтах |
| Дата и время | 8 байт |
| Число с плавающей запятой | 8 байт |
| Географическая точка | 16 байт |
| Целое число | 8 байт |
| Карта | Размер карты, рассчитываемый так же, как и размер документа. |
| Null | 1 байт |
| Справочные материалы | Размер названия документа |
| Текстовая строка | Количество байтов в кодировке UTF-8 + 1 |
| Вектор | 8 байт на параметр |
Например, логическое поле done будет занимать 6 байт:
- 5 байт для названия поля
done; - 1 байт для логического значения;
Размер документа
Размер документа – это сумма следующих значений:
- Размер названия документа
- Сумма размеров строк всех названий полей.
- Сумма размеров всех значений полей.
- 32 дополнительных байта
Пример для документа в подколлекции users/jeff/tasks со строковым идентификатором документа my_task_id:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
Общий размер полей составляет 71 байт:
| Название и значение поля | Размер поля в байтах |
|---|---|
"type": "Personal" |
14 5 за название поля + 9 за строковое значение поля |
"done": false |
6 5 для названия поля + 1 для логического значения поля |
"priority": 1 |
17 9 за название поля + 8 за целочисленное значение поля |
"description": "Learn Cloud Firestore" |
34 12 для названия поля + 22 для строкового значения поля |
Таким образом, размер документа составляет 44 + 71 + 32 = 147 байт:
- 44 байта для названия документа;
- 71 байт для полей;
- 32 дополнительных байта
Размер записи индекса
Размеры записей в простых и составных индексах рассчитываются следующим образом.
Размер записи индекса по одному полю
Размер записи индекса с одним полем зависит от того, относится ли индекс к коллекции или к группе коллекций.
Область действия коллекции
Размер записи в индексе по одному полю с областью действия на уровне коллекции равен сумме следующих значений:
- Размер названия индексированного документа.
- Размер названия родительского документа для проиндексированного документа.
- Размер строки названия индексированного поля.
- Размер индексированного значения поля.
- 32 дополнительных байта
Рассмотрим документ в подколлекции users/jeff/tasks со строковым идентификатором my_task_id:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
Для индекса по одному полю с областью действия коллекции, который индексирует поле done, общий размер записи в этом индексе составляет 109 байт:
- 44 байта для названия документа
users/jeff/tasks/my_task_id - 27 байт для названия родительского документа
users/jeff; - 5 байт для названия поля
done; - 1 байт для логического значения поля;
- 32 дополнительных байта
Область действия группы коллекций
Размер записи в индексе по одному полю с областью действия группы коллекций равен сумме следующих значений:
- Размер названия индексированного документа.
- Размер строки названия индексированного поля.
- Размер индексированного значения поля.
- 48 дополнительных байтов
Рассмотрим документ в подколлекции users/jeff/tasks со строковым идентификатором my_task_id:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
Для индекса по одному полю с областью действия группы коллекций, который индексирует поле done, общий размер записи в этом индексе составляет 98 байт:
- 44 байта для названия документа
users/jeff/tasks/my_task_id - 5 байт для названия поля
done; - 1 байт для логического значения поля;
- 48 дополнительных байтов
Размер записи составного индекса
Размер записи в составном индексе зависит от того, относится ли индекс к коллекции или к группе коллекций.
Область действия коллекции
Размер записи в составном индексе с областью действия коллекции равен сумме следующих значений:
- Размер названия индексированного документа.
- Размер названия родительского документа для проиндексированного документа.
- Сумма проиндексированных значений полей.
- 32 дополнительных байта
Рассмотрим документ в подколлекции users/jeff/tasks со строковым идентификатором my_task_id:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
Для составного индекса с областью действия коллекции, который индексирует поля done и priority (оба по возрастанию), общий размер записи в этом индексе составляет 112 байт:
- 44 байта для названия документа
users/jeff/tasks/my_task_id - 27 байт для названия родительского документа
users/jeff; - 1 байт для логического значения поля;
- 8 байт для целочисленного значения поля;
- 32 дополнительных байта
Область действия группы коллекций
Размер записи в составном индексе с областью действия группы коллекций равен сумме следующих значений:
- Размер названия индексированного документа.
- Сумма проиндексированных значений полей.
- 32 дополнительных байта
Рассмотрим документ в подколлекции users/jeff/tasks со строковым идентификатором my_task_id:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
Для составного индекса с областью действия группы коллекций, который индексирует поля done и priority (оба по возрастанию), общий размер записи в этом индексе составляет 85 байт:
- 44 байта для названия документа
users/jeff/tasks/my_task_id - 1 байт для логического значения поля;
- 8 байт для целочисленного значения поля;
- 32 дополнительных байта
Размер записи в индексе текстового поиска
Размер записи в индексе текстового поиска равен сумме следующих значений:
- Размер строки названия подборки
- Размер значения идентификатора документа
- Сумма байтов из значений индексированных полей (x2)
- 48 дополнительных байтов для общих метаданных.
Рассмотрим пример события вставки для документа с идентификатором my_task_id в коллекции tasks:
Общий размер записи в индексе текстового поиска на description составляет 105 байт. Он рассчитывается следующим образом:
- 6 байт для названия коллекции
tasks; - 11 байт для значения идентификатора документа;
- 44 байта (22 байта для поля
descriptionx 2) - 48 дополнительных байтов для общих метаданных.
Размер записи геопространственного индекса
Размер записи геопространственного индекса в индексе равен сумме следующих значений:
- Размер строки названия подборки
- Размер значения идентификатора документа
- 128 байт для каждой проиндексированной геопозиции.
- 48 дополнительных байтов для общих метаданных.
Рассмотрим пример события вставки для документа с идентификатором my_place в коллекции places:
{ "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Общий размер записи геопространственного индекса в location составляет 192 байта и рассчитывается следующим образом:
- 7 байт для названия коллекции
places; - 9 байт для идентификатора документа;
- 128 байт для поля
location; - 48 дополнительных байтов для общих метаданных.