Crear una Tabla e Indexar Campos JSONB
En este paso, creará una tabla para almacenar información de productos utilizando el tipo de dato JSONB y luego creará un índice GIN para optimizar las consultas sobre estos datos. JSONB almacena datos JSON en un formato binario descompuesto, que es ligeramente más lento de ingresar pero mucho más rápido de procesar. Un GIN (Índice Invertido Generalizado) es ideal para indexar valores compuestos como los de una columna JSONB.
Primero, abra una terminal y conéctese a la base de datos PostgreSQL utilizando el shell interactivo psql:
sudo -u postgres psql
Ahora verá el prompt de PostgreSQL, que se parece a postgres=#.
A continuación, cree una tabla llamada products con una columna id y una columna data de tipo JSONB.
CREATE TABLE products (
id SERIAL PRIMARY KEY,
data JSONB
);
Ahora, inserte algunos datos de productos de ejemplo en la tabla products.
INSERT INTO products (data) VALUES
('{"name": "Laptop", "price": 1200, "tags": ["electronics", "computer"]}'),
('{"name": "Keyboard", "price": 75, "tags": ["electronics", "accessory"]}'),
('{"name": "Mouse", "price": 30, "tags": ["electronics", "accessory"]}'),
('{"name": "Monitor", "price": 300, "tags": ["electronics", "display"]}');
Para acelerar significativamente las búsquedas dentro de la columna data, cree un índice GIN sobre ella.
CREATE INDEX idx_products_data ON products USING GIN (data);
Puede verificar que el índice se creó correctamente utilizando el comando \di, que lista todos los índices.
\di
Debería ver idx_products_data en la lista de relaciones, similar a la salida a continuación:
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+---------------------+-------+----------+-----------+------------+-------------
public | idx_products_data | index | postgres | products | 16 kB |
public | products_pkey | index | postgres | products | 16 kB |
(2 rows)
Ha configurado correctamente su tabla y ha indexado la columna JSONB. Permanecerá en el shell psql para el siguiente paso.