Для базы данных реального времени firebase каждый раз, когда я звоню push()
, чтобы добавить что-либо, генерируется уникальный ключ 28-ди git.
Мой вариант использования - сохранение данных блога в базе данных. Объект блога имеет поля заголовка, содержания, автора. Например, ниже
Blog {
title: "",
content: "",
author: ""
}
Когда я push(blog)
в Firebase, скажу, что он сгенерирует уникальный ключ, например, PxbEfWQhGP3NTU6HfHuVZfAV4017jcuzSpTnHvhLNXbo
. Я могу использовать его для создания URL-адреса mywebsite.com/blog/PxbEfWQhGP3NTU6HfHuVZfAV4017jcuzSpTnHvhLNXbo
для доступа к странице блога. BlogId можно прочитать по URL-адресу и использовать его для чтения содержимого блога из базы данных. Но несколько причин, почему мне не нравится этот UR, он не оптимизирован для SEO и читателей.
Я думаю заменить уникальный ключ названием блога, это будет похоже на mywebsite.com/blog/this-is-my-first-blog-1ad92b25dd
. В конце я добавлю некоторую случайную строку, чтобы меньше шансов на конфликт.
Для этого мне нужно место для хранения заголовка для отображения blogId. Примерно так:
titleToId
"this-is-my-first-blog-1ad92b25dd"
blogId: "PxbEfWQhGP3NTU6HfHuVZfAV4017jcuzSpTnHvhLNXbo"
"yeah-i-did-it-1ad9321ef"
blogId: "is37nLeQg1dslZPMLpdARyxIMzh2Lj6cRUNkq00i3JB8"
"not-sure-if-it-works-1ad92523414"
blogId: "B2kcEwTI02wFJXjBWiDZlDFIzJ502xcAY4qQLyPExzViw"
...
Поэтому, когда я пытаюсь открыть блог, я получаю заголовок из URL, затем я читаю базу данных titleToId
, чтобы получить фактический blogId
, затем я использую blogId
для чтения содержимого блога.
Но у меня есть некоторые опасения по поводу производительности. Как мы заменим уникальный ключ с названием блога. Как только набор данных в titleToId
увеличится, скажем, у нас есть 100 миллионов записей. Будет ли производительность чтения базы данных снижаться слишком сильно? В моем случае, можно ли настроить какой-либо индекс для ускорения чтения?