Postgres HStore用法

时间:2015-07-29 21:55:14

标签: database postgresql hstore

通过做基准可能很容易弄清楚,但我想发布这个以确定是否有任何人在此之前已经讨论过。

以下是我的问题的简化版本 -

我有一个实体

 CREATE TABLE entity (
   id INTEGER PRIMARY KEY,
   some_field INTEGER NOT NULL
 );

我想为每个国家/地区存储此实体的价格信息。

所以我有两种方法可以解决这个问题。

  1. 我创建了一个用外键链接回实体表的表

    CREATE TABLE entity_price (
       entity_id INTEGER, //Foreign key to entity table
       price DECIMAL(8,2),
      currency char(3)
    );
    
  2. 或者我可以增强实体表并添加HSTORE

    CREATE TABLE entity (
       id INTEGER PRIMARY KEY,
       some_field INTEGER,
       price_info HSTORE
    );
    
  3. 就我而言,每次我阅读我的实体时,我都需要阅读价格信息。对于实体表中的每一行都有定价数据。我可以看到两种方法1和方法的优点/缺点。 2

    方法1

    • 每次我必须读取一个实体时必须查询另一个表基本上是postgres必须执行的附加非连续磁盘IO(我将进行连接查询)。

    方法2

    • 使用Hstore将定价信息共同定位到单个记录中。但是Hstore的读取查询速度较慢。

    在我的情况下,我将使用Hstore进行映射

    国家/地区代码 - > {price,currency}

    我将编写一些测试来比较两种方法的性能。但我也想检查是否有人对此有任何意见。

0 个答案:

没有答案