Размер хранилища

На этой странице описан размер хранилища документов, полей и записей индекса в Cloud Firestore .

О стоимости этого хранилища вы можете узнать на странице «Цены» .

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

Размер строк рассчитывается как количество байтов, закодированных в UTF-8, + 1.

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

  • Название коллекции
  • Названия полей
  • Значения строковых полей (включая _id )

Например:

  • Название коллекции tasks занимает 5 байт + 1 байт, итого 6 байт.
  • description имени поля занимает 11 байт + 1 байт, итого 12 байт.

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

В следующей таблице показан размер значений полей в зависимости от типа.

Тип Размер
Множество Сумма размеров его значений
Логический 1 байт
Двоичные данные Длина в байтах + 1 для нетипичного (не нулевого) подтипа
Дата 8 байт
Двойной 8 байт
Double128 16 байт
32-битное целое число 4 байта
64-битное целое число (длинное) 8 байт
Объект Сумма размеров строк каждого имени поля и размеров каждого значения поля во встроенном объекте.
Мини-ключ 1 байт
Макс Ключ 1 байт
Нулевой 1 байт
Регулярное выражение (Длина шаблона + 1) + (Длина вариантов + 1)
Отметка времени 8 байт
Нить Количество байтов, закодированных в UTF-8 + 1

Например, логическое поле с именем done будет занимать 6 байтов:

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

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

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

Этот пример относится к документу в tasks по сбору данных:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

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

Название поля и значение Размер поля в байтах
"_id": "my_task_id" 11 для строкового значения поля
"type": "Personal" 14
5 — имя поля + 9 — строковое значение поля
"done": false 6
5 — имя поля + 1 — логическое значение поля
"priority": 1 17
9 — имя поля + 4 — 32-битное целочисленное значение поля
"description": "Learn Cloud Firestore" 34
12 — имя поля + 22 — строковое значение поля

Таким образом, размер документа составляет 6 + 78 + 48 = 132 байта:

  • 6 для названия коллекции
  • 78 байт для полей
  • 48 дополнительных байтов

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

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

Рассмотрим документ из набора tasks :

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

Для индекса по полям done и priority (оба поля возрастают) общий размер записи в этом индексе составляет 70 байт:

  • 6 байт для tasks связанных с именем коллекции.
  • 11 байтов для значения поля _id
  • 1 байт для значения логического поля
  • 4 байта для 32-битного целочисленного значения поля
  • 48 дополнительных байтов

В случае разреженных индексов, если документ не содержит ни одного из индексируемых полей, запись в индексе не создается. Если документ содержит хотя бы одно из индексируемых полей, создается запись в индексе, в которой для отсутствующих индексируемых полей устанавливается значение NULL .

Изменить размер записи события потока

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

  • Сумма размеров строк названия коллекции (умноженная на 2).
  • Для событий вставки и обновления документа:
  • Если это применимо к транзакциям с несколькими документами, добавляются 24 байта для lsid и txnNumber .
  • 92 дополнительных байта

Рассмотрим пример события вставки документа из коллекции задач:

{
  "_id": { <Resume Token> },
  "operationType": "insert",
  "clusterTime": <Timestamp>,
  "wallTime": <ISODate>,
  "ns": {
     "db": "db",
     "coll": "tasks"
  },
  "documentKey": {
     "_id": "my_task_id"
  },
  "fullDocument": {
     "_id": "my_task_id",
     "description": "Learn Cloud Firestore"
  },
}

Общий размер события потока изменений составляет 149 байт:

  • 92 байта для общих метаданных
  • 12 байт на основе имени коллекции tasks (6 байт) * 2
  • 11 байтов для значения поля _id
  • 12 байт для имени поля description
  • 22 байта для значения поля description

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

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

  • Размер строки названия коллекции
  • Размер значения _id
  • Сумма байтов из значений индексированных полей (x2)
  • 48 дополнительных байтов для общих метаданных

Рассмотрим пример события вставки для документа с идентификатором _id my_task_id в коллекции tasks :

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

Общий размер записи в текстовом поисковом индексе по description составляет 105 байт, исходя из следующих данных:

  • 6 байт для tasks связанных с именем коллекции.
  • 11 байтов для значения _id
  • 44 байта, исходя из 22 байт для поля description x2
  • 48 дополнительных байтов для общих метаданных

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

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

  • Размер строки названия коллекции
  • Размер значения _id
  • 128 байт для каждой индексированной точки географического координаты
  • 48 дополнительных байтов для общих метаданных

Рассмотрим пример события вставки для документа с идентификатором _id my_place из коллекции places :

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

Общий размер записи в геопространственном индексе по location составляет 192 байта, исходя из следующих данных:

  • 7 байт для places в коллекции имен
  • 9 байт для идентификатора документа
  • 128 байт для поля location
  • 48 дополнительных байтов для общих метаданных

Что дальше?

Узнайте о ценообразовании .