Расчет объема хранилища

На этой странице описан размер хранилища документов, названий документов, полей и записей индекса в 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 байт для логического значения;

Размер документа

Размер документа – это сумма следующих значений:

Пример для документа в подколлекции 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 дополнительных байта

Размер записи индекса

Размеры записей в простых и составных индексах рассчитываются следующим образом.

Размер записи индекса по одному полю

Размер записи индекса с одним полем зависит от того, относится ли индекс к коллекции или к группе коллекций.

Область действия коллекции

Размер записи в индексе по одному полю с областью действия на уровне коллекции равен сумме следующих значений:

Рассмотрим документ в подколлекции 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 дополнительных байта

Область действия группы коллекций

Размер записи в индексе по одному полю с областью действия группы коллекций равен сумме следующих значений:

Рассмотрим документ в подколлекции 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 дополнительных байтов

Размер записи составного индекса

Размер записи в составном индексе зависит от того, относится ли индекс к коллекции или к группе коллекций.

Область действия коллекции

Размер записи в составном индексе с областью действия коллекции равен сумме следующих значений:

Рассмотрим документ в подколлекции 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 дополнительных байта

Область действия группы коллекций

Размер записи в составном индексе с областью действия группы коллекций равен сумме следующих значений:

Рассмотрим документ в подколлекции 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 байта для поля description x 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 дополнительных байтов для общих метаданных.

Дальнейшие действия

Подробнее о ценах на Cloud Firestore…