hstore
是强大的、灵活的 PostgreSQL 扩展,它允许开发人员使用数据库作为无模式 NoSQL 存储,同时保留传统关系型数据库的优势。
它提供在单个 PostgreSQL 值中存储键值对的功能。这对于存储半结构化数据和属性数量 (键) 可能因记录而异的数据集特别有用。
在使用 hstore
扩展之前,需要安装它。以下是如何操作
1. 首先,连接到您想要安装 hstore
扩展的 PostgreSQL 数据库。可以使用 psql
命令行客户端或 pgAdmin
之类的图形客户端。在 Timescale 上,您可以通过访问 操作 > 扩展
来查找可用的扩展,它也会提供安装说明。
2. 连接后,运行以下 SQL 命令
CREATE EXTENSION IF NOT EXISTS hstore;
如果 hstore
扩展尚未安装,则此命令将安装它。
要使用 hstore
扩展,您需要在表中创建一个类型为 hstore
的列。以下是一个示例
CREATE TABLE products (
id serial PRIMARY KEY,
attributes hstore
);
attributes
列可以存储任意数量的键值对。您可以像这样将数据插入 attributes
列INSERT INTO products (attributes) VALUES ('"color"=>"blue", "size"=>"XL"');
hstore
扩展提供的各种运算符和函数来查询 hstore
列中的数据。例如,您可以找到所有具有 "color" 键的产品,如下所示SELECT * FROM products WHERE attributes ? 'color';
在数据结构可能随时间变化的时间序列数据中,hstore
扩展特别有用。例如,您可能正在跟踪一组机器的各种指标,并且随着您向机器添加或删除传感器,指标集也会发生变化。
使用 hstore
,您可以轻松添加或删除属性,而无需更改数据库的模式。这使其非常适合时间序列数据。
Timescale 是一个构建在 PostgreSQL 之上的时间序列数据库。它提供用于处理时间序列数据的先进功能,例如自动分区和聚合。
您可以将 hstore
扩展与 Timescale 一起使用,以存储具有灵活模式的时间序列数据。与常规的 PostgreSQL 数据库一样,您可以创建一个包含 hstore
列的表,并将您的时间序列数据插入其中。
以下是一个示例
CREATE TABLE machine_metrics (
time TIMESTAMPTZ NOT NULL,
machine_id int NOT NULL,
metrics hstore,
PRIMARY KEY(time, machine_id)
);
在这个例子中,metrics
列可以存储任意数量的键值对,允许您根据需要轻松添加或删除指标。
hstore
也适用于超表,这使您能够获得 TimescaleDB 的所有功能以及 hstore
的灵活性。例如,您可以通过运行以下命令将上面的 machine_metrics
变成超表
SELECT create_hypertable('machine_metrics','time');
要详细了解 Timescale 和超表,请 查看我们的入门指南。