Postgresql hstore如何在内部存储数据?

Postgresql hstore如何在内部存储数据?,postgresql,hstore,Postgresql,Hstore,我正在使用postgresql hstore扩展,很好奇数据是如何存储在内部的。请告诉我在哪里可以查看hstore源代码以查看实现细节 hstore是PostgreSQL主发行版的一部分,该发行版位于on和GitHub上 它看起来像是储存在瓦莱纳,这意味着它和其他任何东西一样稳定。缺点是需要从磁盘读取整个字段(至少在压缩的情况下)以提取密钥 这也意味着,与任何其他正常字段值一样,更新字段的任何部分时,必须将整个元组(行)的新副本写入表中,,并在任何活动事务不再可见时将旧副本标记为到期(见Pg手册

我正在使用postgresql hstore扩展,很好奇数据是如何存储在内部的。请告诉我在哪里可以查看hstore源代码以查看实现细节

hstore
是PostgreSQL主发行版的一部分,该发行版位于on和GitHub上

它看起来像是储存在瓦莱纳,这意味着它和其他任何东西一样稳定。缺点是需要从磁盘读取整个字段(至少在压缩的情况下)以提取密钥

这也意味着,与任何其他正常字段值一样,更新字段的任何部分时,必须将整个元组(行)的新副本写入表中,,并在任何活动事务不再可见时将旧副本标记为到期(见Pg手册)。因此,大的
hstore
对于频繁更改的数据是不可取的,因为每当数据的任何部分发生更改时,都需要重写整个内容(以及包含它的行)


这些源代码似乎没有太多的注释来概括hstore值的结构和存储方式,而且它有点像一个宏林,可以快速接受。

存储本身并不令人惊讶

有趣的部分是如何对其进行索引,以便能够高效地回答以下查询

从planet_osm_line中选择osm_id、名称、标签,其中“频率=>16.7,铁路=>“铁路””