Firestore не позволяет мне указать номер документа c идентификатор? Как это работает? - PullRequest
0 голосов
/ 01 апреля 2020

Мне сказали, что (по крайней мере для реляционной базы данных) типы индексов были важны, когда речь шла о сравнении двух значений, что является довольно простой c операцией, выполняемой несколько раз для каждого поиска.

Итак я рекомендовал хранить свои индексы в виде чисел (32 бита для длинных), а не строки (8 бит / символ), учитывая следующее

key:"1234567890" => 80bits ASCII-string
key: 1234567890   => 32bits uLong
generated:"hgYTTd4p63pdTtOR1wFG" => 160bits 

Насколько мне кажется, firestore не позволяет указать тип ключа для документа (выдает ошибку «путь должен быть строкой»), а также тип-размер, но генератор идентификаторов по умолчанию представляет собой оптимизированную строку с использованием верхнего и нижнего регистра ASCII

Мой вопрос: есть ли типы индекса что сейчас ничего не стоит? Как это работает? Могу ли я безопасно превратить любой числовой ключ в строку, ничего не замедляя, или мне лучше использовать генератор идентификаторов по умолчанию, чтобы получить самый короткий ключ?

1 Ответ

1 голос
/ 01 апреля 2020

Все идентификаторы документов в Firestore являются строками, которые нельзя изменить. Требования к идентификаторам документов перечислены в документации (это максимум 1500 байт).

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

...