如果我用一些定制的密钥替换firebase唯一密钥,会对性能产生影响吗



对于firebase实时数据库,每次调用push()添加内容时,都会生成一个唯一的28位密钥。

我的用例是将我的博客数据存储到数据库中。博客对象有标题、内容、作者字段。像低于

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中的数据集变大,假设我们有1亿个条目。数据库读取性能会降低太多吗?在我的情况下,我可以设置一些索引来加快阅读速度吗?

不会对性能产生影响。唯一的ID字符串使用什么并不重要,只要它是唯一的并且长度在768字节以下即可。不需要为数据库注释的名称创建任何索引。

最新更新