想象一下,您想要尽可能空间高效地(以二进制形式)序列化和反序列化stackoverflow帖子,包括它们的标签,同时在执行标签查找时保持性能。有没有适用于这种情况的良好数据结构?
Stackoverflow有大约28532个不同的标签,您可以创建一个包含所有标签并为它们分配整数的表格。此外,您可以按频率对它们进行排序,使得最常见的标签具有最低的数字。但是,将它们简单地存储为格式为“1 32 45”的字符串似乎有点低效,无论是从搜索还是存储的角度。
另一个想法是将标签保存为可变位数组,这从查找和序列化的角度很有吸引力。由于最常见的标签首先出现,因此您可能可以将标签适合小量的内存中。
问题当然是不常见的标签会产生巨大的位数组。是否有任何标准用于压缩大量0的位数组?或者应该完全使用其他结构?
编辑
我不是在寻找数据库解决方案或需要将整个表保存在内存中的解决方案,而是在寻找过滤单个项目的结构。
Stackoverflow有大约28532个不同的标签,您可以创建一个包含所有标签并为它们分配整数的表格。此外,您可以按频率对它们进行排序,使得最常见的标签具有最低的数字。但是,将它们简单地存储为格式为“1 32 45”的字符串似乎有点低效,无论是从搜索还是存储的角度。
另一个想法是将标签保存为可变位数组,这从查找和序列化的角度很有吸引力。由于最常见的标签首先出现,因此您可能可以将标签适合小量的内存中。
问题当然是不常见的标签会产生巨大的位数组。是否有任何标准用于压缩大量0的位数组?或者应该完全使用其他结构?
编辑
我不是在寻找数据库解决方案或需要将整个表保存在内存中的解决方案,而是在寻找过滤单个项目的结构。