Расчеты размера хранилища

This page describes the storage size of documents, document names, fields, and index entries in Cloud Firestore .

You can learn about the costs of this storage at Cloud Firestore Pricing .

Размер строки

String sizes are calculated as the number of UTF-8 encoded bytes + 1.

Следующие данные хранятся в виде строк:

  • Идентификаторы коллекций
  • Идентификаторы документов в виде строк
  • Названия документов
  • Названия полей
  • Значения строковых полей

Например:

  • The collection ID tasks uses 5 bytes + 1 byte, for a total of 6 bytes.
  • The field name description uses 11 bytes + 1 byte, for a total of 12 bytes.

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

The size of a document ID is either the string size for a string ID or 8 bytes for an integer ID.

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

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

  • The size of each collection ID and document ID in the path to the document
  • 16 дополнительных байтов

For a document in the subcollection users/jeff/tasks with a string document ID of my_task_id , the document name size is 6 + 5 + 6 + 11 + 16 = 44 bytes:

  • 6 байт для идентификатора коллекции users
  • 5 байт для идентификатора документа jeff
  • 6 байт для идентификатора коллекции tasks
  • 11 байтов для идентификатора документа my_task_id
  • 16 дополнительных байтов

Размер значения поля

The following table shows the size of field values by type.

Тип Размер
Множество Сумма размеров его значений
Логический 1 байт
Байты Длина в байтах
Дата и время 8 байт
Число с плавающей запятой 8 байт
Географическая точка 16 байт
Целое число 8 байт
Карта The size of the map, calculated the same way as document size
Нулевой 1 байт
Ссылка Размер имени документа
Текстовая строка Количество байтов, закодированных в UTF-8 + 1
Вектор 8 байт на измерение

For example, a boolean field named done would use 6 bytes:

  • 5 байт для имени поля done
  • 1 байт для логического значения

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

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

This example is for a document in subcollection users/jeff/tasks with a string document ID of my_task_id :

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

Общий размер полей составляет 71 байт:

Название поля и значение Размер поля в байтах
"type": "Personal" 14
5 for the field name + 9 for the field's string value
"done": false 6
5 for the field name + 1 for the field's boolean value
"priority": 1 17
9 for the field name + 8 for the field's integer value
"description": "Learn Cloud Firestore" 34
12 for the field name + 22 for the field's string value

So the document size is 44 + 71 + 32 = 147 bytes:

  • 44 байта для имени документа
  • 71 байт для полей
  • 32 дополнительных байта

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

Index entry sizes are calculated as follows for single-field and composite indexes.

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

The size of a single-field index entry depends on whether an index is scoped to a collection or a collection group.

Область применения коллекции

The size of an entry in a single-field index with collection scope is the sum of:

Consider a document in the sub-collection users/jeff/tasks with a string document ID of my_task_id :

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

For a single-field index with collection scope that indexes the done field, the total size of the entry in this index is 109 bytes:

  • 44 bytes for the document name users/jeff/tasks/my_task_id
  • 27 bytes for the parent document's document name users/jeff
  • 5 байт для имени поля done
  • 1 байт для значения логического поля
  • 32 дополнительных байта

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

The size of an entry in a single-field index with collection group scope is the sum of:

Consider a document in the sub-collection users/jeff/tasks with a string document ID of my_task_id :

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

Для однопольного индекса с областью действия в виде группы коллекций, индексирующего поле done , общий размер записи в этом индексе составляет 98 байт:

  • 44 bytes for the document name 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 bytes for the parent document's document name 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 x2
  • 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 .