在 SOLR 数据库中,唯一的字符串字段是否会在 RAM 中多次存储?

发布于 2024-12-11 02:31:24 字数 356 浏览 1 评论 0原文

我有一个 SOLR 数据库,需要一个新字段,其中包含类似于标签的字符串列表,只不过它们是预定义的并用于内部目的。该 SOLR 核心的搜索结果将通过公共互联网传送给第 3 方网站开发人员。因此,我想混淆标签,让别人不可能猜测出会泄露其他客户信息的标签。

我可以使用 GUID 轻松完成此任务,但我想知道 RAM 中包含数十万条记录且字段包含多个 GUID 的数组会产生什么影响。

如果 GUID 被记录为原子,即 GUID 的一份副本和对其的多次引用,那么这不是问题。但我无法确定 SOLR 或 Lucene 是否在 RAM 数据结构中使用原子。磁盘存储不是问题。

这与重复数据删除问题类似,但我的研究表明,人们最关心的是整个重复文档,而不是单个字段。

I have a SOLR database that needs to have a new field containing a list of strings that are kind of like tags, except they are predefined and used for an internal purpose. The search results from this SOLR core will go across the public Internet to 3rd party website developers. Therefore I want to obfuscate the tags, and make it impossible for someone to guess a tag that would reveal information about another customer.

I could easily accomplish this using GUIDs, but I wonder what the impact will be of having hundreds of thousands of records in RAM with a field containing an array of several GUIDs.

If the GUIDs were recorded as atoms, i.e. one copy of the GUID and many references to it, then this is a non-issue. But I cannot find out whether SOLR or Lucene use atoms in their in-RAM data structures. The disk storage is not an issue.

This is similar to dedup issues, but my research shows that people are mostly concerned with whole duplicate documents, not with individual fields.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最初的梦 2024-12-18 02:31:24

有两种索引:

  1. 倒排索引。每个guid无论使用多少次都会被存储一次(实际上少于一次)。
  2. 指数正常。每个guid在每次使用时都会被存储一次。如果您愿意,可以在此处使用压缩。 (“压缩”可能意味着您有一个特殊的表来转换数字 <-> 标签,因此每个标签都存储为数字 --> 每个标签占用 1 个字节 [假设少于 2^8 个标签]。)

There are two indexes:

  1. Inverted index. Each guid will be stored once (actually less than once) no matter how many times it is used.
  2. Normal index. Each guid will be stored once every time it is used. You can use compression here if you like. ("Compression" can mean you have a special table which translates numbers <-> tags, so each tag is stored as a number --> each tag takes 1 byte [assuming less than 2^8 tags].)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文