TL; DR: JSONB เจชเฉเฉฑเจเจเจฟเฉฑเจ เจฆเฉ เจเจพเจฐเจเฉเจเจผเจพเจฐเฉ เจจเฉเฉฐ เจเฉเจฐเจฌเจพเจจ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจกเจพเจเจพเจฌเฉเจธ เจธเจเฉเจฎเจพ เจตเจฟเจเจพเจธ เจจเฉเฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเจพเจฃ เจชเจเจพเจฃ
เจเจ เจฐเจฟเจฒเฉเจธเจผเจจเจฒ เจกเฉเจเจพเจฌเฉเจธ (เจกเฉเจเจพเจฌเฉเจธ) เจฆเฉ เจฆเฉเจจเฉเจ เจตเจฟเฉฑเจ เจธเจผเจพเจเจฆ เจธเจญ เจคเฉเจ เจชเฉเจฐเจพเจฃเฉ เจตเจฐเจคเฉเจ เจฆเฉ เจเฉเจธเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเฉ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจเจฆเจพเจนเจฐเจฃ เจฆเฉเจเจ: เจธเจพเจกเฉ เจเฉเจฒ เจเฉฑเจ เจเจเจพเจ เจนเฉ, เจ เจคเฉ เจธเจพเจจเฉเฉฐ เจเจธ เจเจเจพเจ เจฆเฉเจเจ เจเฉเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ (เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ) เจจเฉเฉฐ เจฌเจเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจชเจฐ เจธเจพเจฐเฉเจเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจตเจฟเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเจพ เจเฉฑเจเฉ เจธเฉเฉฑเจ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจนเฉเจฐ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉเจเจ เจเจพ เจธเจเจฆเฉเจเจ เจนเจจเฅค
เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฆเจพ เจธเจญ เจคเฉเจ เจเจธเจพเจจ เจคเจฐเฉเจเจพ เจนเฉ เจเจฟ เจนเจฐเฉเจ เจธเฉฐเจชเฉฑเจคเฉ เจฎเฉเฉฑเจฒ เจฒเจ เจกเฉเจเจพเจฌเฉเจธ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจพเจฒเจฎ เจฌเจฃเจพเจเจฃเจพ, เจ เจคเฉ เจธเจฟเจฐเจซเจผ เจเจนเจจเจพเจ เจจเฉเฉฐ เจญเจฐเจจเจพ เจเฉ เจเจฟเจธเฉ เจเจพเจธ เจเจเจพเจ เจฆเฉ เจเจฆเจพเจนเจฐเจฃ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจนเจจเฅค เจฌเจนเฉเจค เจตเจงเฉเจ! เจธเจฎเฉฑเจธเจฟเจ เจนเฉฑเจฒ เจนเฉ เจเจ... เจเจฆเฉเจ เจคเฉฑเจ เจคเฉเจนเจพเจกเฉ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจฒเฉฑเจเจพเจ เจฐเจฟเจเจพเจฐเจก เจธเจผเจพเจฎเจฒ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉ เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจจเจตเจพเจ เจฐเจฟเจเจพเจฐเจก เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
EAV เจชเฉเจเจฐเจจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉ (
เจนเจพเจฒเจพเจเจเจฟ, เจฎเฉเจ เจเจน เจชเฉเจธเจ เจจเจนเฉเจ เจฒเจฟเจเจพเจเจเจพ เจเฉเจเจฐ เจเจตเฉเจ เจชเจนเฉเฉฐเจ เจตเจฟเฉฑเจ เจเฉเจ เจเจฎเฉเจเจ เจจเจพ เจนเฉเฉฐเจฆเฉเจเจเฅค เจเจธ เจฒเจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉฑเจ เจเจพเจ เจเฉฑเจ เจคเฉเจ เจตเฉฑเจง เจเจเจพเจเจเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจเจฟเจจเฉเจนเจพเจ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจตเจฟเฉฑเจ 1 เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจนเฉ, เจชเฉเฉฑเจเจเจฟเฉฑเจ เจตเจฟเฉฑเจ 2 เจเฉเฉเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ: เจชเจนเจฟเจฒเจพ เจเฉเจฃ เจธเจพเจฐเจฃเฉ เจจเจพเจฒ เจเฉเฉเจจเจพ เจนเฉ, เจฆเฉเจเจพ เจฎเฉเฉฑเจฒ เจธเจพเจฐเจฃเฉ เจจเจพเจฒ เจเฉเฉเจจเจพ เจนเฉเฅค เจเฉเจเจฐ เจเจฟเจธเฉ เจเจเจพเจ เจฆเฉ 2 เจเฉเจฃ เจนเจจ, เจคเจพเจ 4 เจเฉเฉเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ! เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจธเจพเจฐเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจธเจคเจฐ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจธเจเฉเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจฆเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ เจจเจคเฉเจเจพ เจ
เจคเฉ WHERE เจงเจพเจฐเจพ เจฆเฉเจตเจพเจ เจฒเจ เจเจฟเจธเจฎ เจเจพเจธเจเจฟเฉฐเจ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจธเจตเจพเจฒ เจฒเจฟเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเจน เจธเจฐเฉเจค เจตเจฐเจคเฉเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจเจพเจซเจผเฉ เจซเจพเจฒเจคเฉ เจนเฉเฅค
เจเจนเจจเจพเจ เจธเจชเฉฑเจธเจผเจ เจเจฎเฉเจเจ เจฆเฉ เจฌเจพเจตเจเฉเจฆ, EAV เจฆเฉ เจตเจฐเจคเฉเจ เจเจธ เจเจฟเจธเจฎ เจฆเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค เจเจน เจ
เจเฉฑเจฒ เจเจฎเฉเจเจ เจธเจจ, เจ
เจคเฉ เจเฉเจ เจฌเจฟเจนเจคเจฐ เจตเจฟเจเจฒเจช เจจเจนเฉเจ เจธเฉเฅค
เจชเจฐ เจซเจฟเจฐ PostgreSQL เจตเจฟเฉฑเจ เจเฉฑเจ เจจเจตเฉเจ "เจคเจเจจเจพเจฒเฉเจเฉ" เจชเฉเจฐเจเจ เจนเฉเจ ...
PostgreSQL 9.4 เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉเจ, JSONB เจกเฉเจเจพ เจเจฟเจธเจฎ เจจเฉเฉฐ JSON เจฌเจพเจเจจเจฐเฉ เจกเฉเจเจพ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจเฉเฉเจฟเจ เจเจฟเจ เจธเฉเฅค เจนเจพเจฒเจพเจเจเจฟ JSON เจจเฉเฉฐ เจเจธ เจซเจพเจฐเจฎเฉเจ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจชเจฒเฉเจจ เจเฉเจเจธเจ JSON เจจเจพเจฒเฉเจ เจฅเฉเฉเจพ เจนเฉเจฐ เจธเจชเฉเจธ เจ เจคเฉ เจธเจฎเจพเจ เจฒเฉฑเจเจฆเจพ เจนเฉ, เจเจธ 'เจคเฉ เจเจชเจฐเฉเจธเจผเจจ เจเจฐเจจเจพ เจฌเจนเฉเจค เจคเฉเจเจผ เจนเฉเฅค JSONB เจเฉฐเจกเฉเจเจธเจฟเฉฐเจ เจฆเจพ เจตเฉ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ, เจเฉ เจเจฟ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจจเฉเฉฐ เจนเฉเจฐ เจคเฉเจเจผ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
JSONB เจกเจพเจเจพ เจเจฟเจธเจฎ เจธเจพเจจเฉเฉฐ เจธเจพเจกเฉ เจเจเจพเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซเจผ เจเฉฑเจ JSONB เจเจพเจฒเจฎ เจเฉเฉ เจเฉ เจฌเฉเจเจฒ EAV เจชเฉเจเจฐเจจ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจกเจพเจเจพเจฌเฉเจธ เจกเจฟเจเจผเจพเจเจจ เจจเฉเฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจชเจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฒเฉเจ เจฆเจฒเฉเจฒ เจฆเจฟเฉฐเจฆเฉ เจนเจจ เจเจฟ เจเจน เจเจคเจชเจพเจฆเจเจคเจพ เจตเจฟเฉฑเจ เจเจฎเฉ เจฆเฉ เจจเจพเจฒ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ... เจเจธ เจฒเจ เจฎเฉเจ เจเจน เจฒเฉเจ เจฒเจฟเจเจฟเจ เจนเฉเฅค
เจเฉฑเจ เจเฉเจธเจ เจกเฉเจเจพเจฌเฉเจธ เจธเจฅเจพเจชเจค เจเจฐเจจเจพ
เจเจธ เจคเฉเจฒเจจเจพ เจฒเจ, เจฎเฉเจ $9.5 เจฌเจฟเจฒเจก 'เจคเฉ PostgreSQL 80 เจฆเฉ เจเฉฑเจ เจคเจพเจเจผเจพ เจธเจฅเจพเจชเจจเจพ 'เจคเฉ เจกเจพเจเจพเจฌเฉเจธ เจฌเจฃเจพเจเจ เจนเฉเฅค
CREATE TABLE entity (
id SERIAL PRIMARY KEY,
name TEXT,
description TEXT
);
CREATE TABLE entity_attribute (
id SERIAL PRIMARY KEY,
name TEXT
);
CREATE TABLE entity_attribute_value (
id SERIAL PRIMARY KEY,
entity_id INT REFERENCES entity(id),
entity_attribute_id INT REFERENCES entity_attribute(id),
value TEXT
);
เจนเฉเจ เจพเจ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจนเฉ เจเจฟเฉฑเจฅเฉ เจเจนเฉ เจกเฉเจเจพ เจธเจเฉเจฐ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจชเจฐ เจเฉฑเจ JSONB เจเจฟเจธเจฎ เจฆเฉ เจเจพเจฒเจฎ เจตเจฟเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจจเจพเจฒ - เจตเจฟเจธเจผเฉเจธเจผเจคเจพ.
CREATE TABLE entity_jsonb (
id SERIAL PRIMARY KEY,
name TEXT,
description TEXT,
properties JSONB
);
เจฌเจนเฉเจค เจธเจฐเจฒ เจฒเฉฑเจเจฆเจพ เจนเฉ, เจนเฉ เจจเจพ? เจซเจฟเจฐ เจเจธเจจเฉเฉฐ เจเจเจพเจ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจฟเจ เจธเฉ (เจนเจธเจคเฉ & entity_jsonb) 10 เจฎเจฟเจฒเฉเจ เจจ เจฐเจฟเจเจพเจฐเจก, เจ เจคเฉ เจเจธเจฆเฉ เจ เจจเฉเจธเจพเจฐ, เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ EAV เจชเฉเจเจฐเจจ เจ เจคเฉ JSONB เจเจพเจฒเจฎ เจฆเฉ เจจเจพเจฒ เจชเจนเฉเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจธเฉ เจกเฉเจเจพ เจจเจพเจฒ เจญเจฐเจฟเจ เจเจฟเจ เจธเฉ - entity_jsonb.properties. เจเจธ เจคเจฐเฉเจนเจพเจ, เจธเจพเจจเฉเฉฐ เจธเฉฐเจชเจคเฉเจเจ เจฆเฉ เจชเฉเจฐเฉ เจธเจฎเฉเจน เจตเจฟเฉฑเจ เจเจ เจตเฉฑเจ-เจตเฉฑเจ เจกเจพเจเจพ เจเจฟเจธเจฎเจพเจ เจชเฉเจฐเจพเจชเจค เจนเฉเจเจเจ เจนเจจเฅค เจเจฆเจพเจนเจฐเจจ เจกเฉเจเจพ:
{
id: 1
name: "Entity1"
description: "Test entity no. 1"
properties: {
color: "red"
lenght: 120
width: 3.1882420
hassomething: true
country: "Belgium"
}
}
เจเจธ เจฒเจ เจนเฉเจฃ เจธเจพเจกเฉ เจเฉเจฒ เจฆเฉเจตเจพเจ เจตเจฟเจเจฒเจชเจพเจ เจฒเจ เจเฉฑเจเฉ เจเจฟเจนเจพ เจกเฉเจเจพ เจนเฉเฅค เจเจ เจเฉฐเจฎ 'เจคเฉ เจฒเจพเจเฉเจเจฐเจจเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ!
เจเจชเจฃเฉ เจกเจฟเจเจผเจพเจเจจ เจจเฉเฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ
เจเจน เจชเจนเจฟเจฒเจพเจ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจธเฉ เจเจฟ เจกเฉเจเจพเจฌเฉเจธ เจกเจฟเจเจผเจพเจเจจ เจจเฉเฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉ: EAV เจฒเจ เจคเจฟเฉฐเจจ เจเฉเจฌเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฌเจเจพเจ, เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฒเจ เจเฉฑเจ JSONB เจเจพเจฒเจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจเฉเจฌเจฒเฅค เจชเจฐ เจเจน เจฌเฉเจจเจคเฉเจเจ เจตเจฟเฉฑเจ เจเจฟเจตเฉเจ เจชเฉเจฐเจคเฉเจฌเจฟเฉฐเจฌเจค เจนเฉเฉฐเจฆเจพ เจนเฉ? เจเฉฑเจ เจเจเจพเจ เจฆเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเจจเจพ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
-- EAV
UPDATE entity_attribute_value
SET value = 'blue'
WHERE entity_attribute_id = 1
AND entity_id = 120;
-- JSONB
UPDATE entity_jsonb
SET properties = jsonb_set(properties, '{"color"}', '"blue"')
WHERE id = 120;
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเจเจฐเฉ เจฌเฉเจจเจคเฉ เจธเจงเจพเจฐเจจ เจจเจนเฉเจ เจฒเฉฑเจเจฆเฉ. JSONB เจเจฌเจเฉเจเจ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจชเฉเจฐเจพเจชเจฐเจเฉ เจฆเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจ
เจชเจกเฉเจ เจเจฐเจจ เจฒเจ เจธเจพเจจเฉเฉฐ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเฉ เจชเจตเฉเจเฉ
เจนเฉเจฃ เจเจ เจเจธ เจนเจธเจคเฉ เจฆเฉ เจเฉเจฃ เจเจฐเฉเจ เจเฉ เจ เจธเฉเจ เจนเฉเจฃเฉ เจเจธเจฆเฉ เจจเจตเฉเจ เจฐเฉฐเจ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจ เจชเจกเฉเจ เจเฉเจคเฉ เจนเฉ:
-- EAV
SELECT e.name
FROM entity e
INNER JOIN entity_attribute_value eav ON e.id = eav.entity_id
INNER JOIN entity_attribute ea ON eav.entity_attribute_id = ea.id
WHERE ea.name = 'color' AND eav.value = 'blue';
-- JSONB
SELECT name
FROM entity_jsonb
WHERE properties ->> 'color' = 'blue';
เจฎเฉเจจเฉเฉฐ เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจ เจธเฉเจ เจธเจนเจฟเจฎเจค เจนเฉ เจธเจเจฆเฉ เจนเจพเจ เจเจฟ เจฆเฉเจเจพ เจเฉเจเจพ เจนเฉ (เจเฉเจ เจธเจผเจพเจฎเจฒ เจจเจนเฉเจ!), เจ เจคเฉ เจเจธ เจฒเจ เจตเจงเฉเจฐเฉ เจชเฉเฉเจนเจจเจฏเฉเจ เจนเฉเฅค JSONB เจเฉฑเจฅเฉ เจเจฟเฉฑเจค เจเจฟเจ! เจ เจธเฉเจ JSONB เจเจฌเจเฉเจเจ เจคเฉเจ เจเฉเจเจธเจ เจฎเฉเฉฑเจฒ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฐเฉฐเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ JSON ->> เจเจชเจฐเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจเฅค @> เจเจชเจฐเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ JSONB เจฎเจพเจกเจฒ เจตเจฟเฉฑเจ เจเจนเฉ เจจเจคเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเจพ เจฆเฉเจเจพ เจคเจฐเฉเจเจพ เจตเฉ เจนเฉ:
-- JSONB
SELECT name
FROM entity_jsonb
WHERE properties @> '{"color": "blue"}';
เจเจน เจฅเฉเฉเจพ เจนเฉเจฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉ: เจ เจธเฉเจ เจเจน เจฆเฉเจเจฃ เจฒเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ เจเจธเจฆเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจเจพเจฒเจฎ เจตเจฟเฉฑเจ JSON เจเจฌเจเฉเจเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจตเจธเจคเฉ เจนเฉ เจเฉ @> เจเจชเจฐเฉเจเจฐ เจฆเฉ เจธเฉฑเจเฉ เจชเจพเจธเฉ เจนเฉเฅค เจเฉฑเจ เจชเฉเฉเจนเจจเจฏเฉเจ, เจตเจงเฉเจฐเฉ เจฒเจพเจญเจเจพเจฐเฉ (เจนเฉเจ เจพเจ เจฆเฉเจเฉ)เฅค
เจเจฒเฉ JSONB เจฆเฉ เจตเจฐเจคเฉเจ เจจเฉเฉฐ เจนเฉเจฐ เจตเฉ เจเจธเจพเจจ เจฌเจฃเจพเจ เจเจฆเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจตเจพเจฐ เจตเจฟเฉฑเจ เจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจเฉเจฃ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเจน เจเจน เจฅเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ JSONB เจชเจนเฉเฉฐเจ เจ เจธเจฒ เจตเจฟเฉฑเจ เจเจเจเจฆเฉ เจนเฉ: เจ เจธเฉเจ เจฌเจฟเจจเจพเจ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจฆเฉ เจธเจพเจกเฉ เจจเจคเฉเจเฉ เจธเฉเฉฑเจ เจตเจฟเฉฑเจ เจตเจพเจงเฉ เจเจพเจฒเจฎเจพเจ เจตเจเฉเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจเฉเจฃ เจเจฐเจฆเฉ เจนเจพเจ:
-- JSONB
SELECT name
, properties ->> 'color'
, properties ->> 'country'
FROM entity_jsonb
WHERE id = 120;
EAV เจจเจพเจฒ เจคเฉเจนเจพเจจเฉเฉฐ เจนเจฐเฉเจ เจธเฉฐเจชเจคเฉ เจฒเจ 2 เจเฉเฉเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ เจเจฟเจธ เจฌเจพเจฐเฉ เจคเฉเจธเฉเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจฎเฉเจฐเฉ เจฐเจพเจ เจตเจฟเฉฑเจ, เจเจชเจฐเฉเจเจค เจธเจตเจพเจฒ เจกเฉเจเจพเจฌเฉเจธ เจกเจฟเจเจผเจพเจเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจตเจงเฉเจ เจธเจฐเจฒเจคเจพ เจฆเจฟเจเจพเจเจเจฆเฉ เจนเจจ. JSONB เจธเจตเจพเจฒเจพเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฒเจฟเจเจฃเจพ เจนเฉ, เจเจธ เจฆเฉเจเจ เจนเฉเจฐ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเฉเจเฉ, เจเจธ เจตเจฟเฉฑเจ เจตเฉ
เจนเฉเจฃ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจจ เจฆเจพ เจธเจฎเจพเจ เจนเฉ.
เจเจคเจชเจพเจฆเจเจคเจพ
เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจจ เจฒเจ เจฎเฉเจ เจตเจฐเจคเจฟเจ
เจกเฉเจเจพ เจ เฉฑเจชเจกเฉเจ เจจเฉ เจจเจฟเจฎเจจเจฒเจฟเจเจค เจจเจคเฉเจเฉ เจธเจฎเฉเจ เจฆเฉ เจนเจฟเจธเจพเจฌ เจจเจพเจฒ เจฆเจฟเจเจพเจ (ms เจตเจฟเฉฑเจ)เฅค เจจเฉเจ เจเจฐเฉ เจเจฟ เจชเฉเจฎเจพเจจเจพ เจฒเจเฉเจเจฃเจ เจนเฉ:
เจ
เจธเฉเจ เจฆเฉเจเจฆเฉ เจนเจพเจ เจเจฟ JSONB EAV เจจเจพเจฒเฉเจ เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ (> 50000-x) เจคเฉเจเจผ เจนเฉ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจพเจฐเจจ เจเจฐเจเฉ, เจธเฉเจเจเจพเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเฉเฅค เจเจฆเฉเจ เจ
เจธเฉเจ เจชเฉเจฐเจพเจเจฎเจฐเฉ เจเฉเฉฐเจเฉเจเจ เจจเจพเจฒ เจเจพเจฒเจฎเจพเจ เจจเฉเฉฐ เจธเฉเจเฉเจฌเฉฑเจง เจเจฐเจฆเฉ เจนเจพเจ, เจคเจพเจ เจ
เฉฐเจคเจฐ เจฒเจเจญเจ เจเจพเจเจฌ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจชเจฐ JSONB เจ
เจเฉ เจตเฉ EAV เจจเจพเจฒเฉเจ 1,3 เจเฉเจฃเจพ เจคเฉเจเจผ เจนเฉเฅค เจจเฉเจ เจเจฐเฉ เจเจฟ JSONB เจเจพเจฒเจฎ 'เจคเฉ เจธเฉเจเจเจพเจเจ เจฆเจพ เจเฉฑเจฅเฉ เจเฉเจ เจชเฉเจฐเจญเจพเจต เจจเจนเฉเจ เจนเฉ เจเจฟเจเจเจเจฟ เจ
เจธเฉเจ เจฎเฉเจฒเจพเจเจเจฃ เจฆเฉ เจฎเจพเจชเจฆเฉฐเจก เจตเจฟเฉฑเจ เจชเฉเจฐเจพเจชเจฐเจเฉ เจเจพเจฒเจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐ เจฐเจนเฉ เจนเจพเจเฅค
เจธเฉฐเจชเฉฑเจคเฉ เจฎเฉเฉฑเจฒ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจกเฉเจเจพ เจฆเฉ เจเฉเจฃ เจเจฐเจจ เจฒเจ, เจธเจพเจจเฉเฉฐ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจจเจคเฉเจเฉ (เจเจฎ เจชเฉเจฎเจพเจจเฉ) เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ เจนเจจ:
เจคเฉเจธเฉเจ เจจเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเจฟ JSONB เจฌเจฟเจจเจพเจ เจธเฉเจเจเจพเจเจ เจฆเฉ EAV เจจเจพเจฒเฉเจ เจคเฉเจเจผเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจเจฆเฉเจ EAV เจธเฉเจเจเจพเจเจ เจฆเฉ เจจเจพเจฒ, เจเจน เจ
เจเฉ เจตเฉ JSONB เจจเจพเจฒเฉเจ เจคเฉเจเจผเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจชเจฐ เจซเจฟเจฐ เจฎเฉเจ เจฆเฉเจเจฟเจ เจเจฟ JSONB เจชเฉเฉฑเจเจเจฟเฉฑเจเจพเจ เจฒเจ เจธเจฎเจพเจ เจเฉฑเจเฉ เจเจฟเจนเจพ เจธเฉ, เจเจธ เจจเฉ เจฎเฉเจจเฉเฉฐ เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจชเฉเจฐเฉเจฐเจฟเจค เจเฉเจคเจพ เจเจฟ GIN เจธเฉเจเจเจพเจเจ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจ. เจเจผเจพเจนเจฐ เจคเฉเจฐ 'เจคเฉ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเจฌเจพเจฆเฉ เจตเจพเจฒเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจตเจพเจฒเฉ เจเจพเจฒเจฎ 'เจคเฉ GIN เจธเฉเจเจเจพเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจน เจธเจฟเจฐเจซเจผ เจเจฆเฉเจ เจนเฉ เจชเฉเจฐเจญเจพเจตเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจธเจผเจพเจฎเจฒ เจเจชเจฐเฉเจเจฐ @> เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเฅค เจฎเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจจเจตเฉเจ เจเฉเจธเจ เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจ
เจคเฉ เจเจธเจฆเจพ เจธเจฎเฉเจ 'เจคเฉ เจฌเจนเฉเจค เจตเฉฑเจกเจพ เจชเฉเจฐเจญเจพเจต เจธเฉ: เจธเจฟเจฐเจซ 0,153ms! เจเจน EAV เจจเจพเจฒเฉเจ 15000 เจเฉเจฃเจพ เจคเฉเจเจผ เจ
เจคเฉ -->> เจเจชเจฐเฉเจเจฐ เจจเจพเจฒเฉเจ 25000 เจเฉเจฃเจพ เจคเฉเจเจผ เจนเฉเฅค
เจฎเฉเจจเฉเฉฐ เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจเจพเจซเจผเฉ เจคเฉเจเจผ เจธเฉ!
เจกเจพเจเจพเจฌเฉเจธ เจธเจพเจฐเจฃเฉ เจฆเจพ เจเจเจพเจฐ
เจเจ เจฆเฉเจตเจพเจ เจชเจนเฉเฉฐเจเจพเจ เจฒเจ เจธเจพเจฐเจฃเฉ เจฆเฉ เจเจเจพเจฐ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเฉเจเฅค psql เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเจพเจฐเฉ เจเฉเจฌเจฒ เจ เจคเฉ เจเฉฐเจกเฉเจเจธ เจฆเจพ เจเจเจพเจฐ เจฆเจฟเจเจพ เจธเจเจฆเฉ เจนเจพเจ dti+
EAV เจชเจนเฉเฉฐเจ เจฒเจ, เจธเจพเจฐเจฃเฉ เจฆเฉ เจเจเจพเจฐ เจฒเจเจญเจ 3068 MB เจนเจจ เจ
เจคเฉ เจเฉเฉฑเจฒ 3427 GB เจฒเจ 6,43 MB เจคเฉฑเจ เจธเฉเจเจเจพเจเจ เจนเจจเฅค JSONB เจชเจนเฉเฉฐเจ เจธเจพเจฐเจฃเฉ เจฒเจ 1817 MB เจ
เจคเฉ เจธเฉเจเจเจพเจเจ เจฒเจ 318 MB เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจเฉ เจเจฟ 2,08 GB เจนเฉเฅค เจเจน 3 เจตเจพเจฐ เจเฉฑเจ เจฌเจพเจนเจฐ เจเจพเจฎเฉเจ! เจเจธ เจคเฉฑเจฅ เจจเฉ เจฎเฉเจจเฉเฉฐ เจฅเฉเฉเจพ เจนเฉเจฐเจพเจจ เจเฉเจคเจพ เจเจฟเจเจเจเจฟ เจ
เจธเฉเจ เจนเจฐเฉเจ JSONB เจตเจธเจคเฉ เจตเจฟเฉฑเจ เจเจพเจเจฆเจพเจฆ เจฆเฉ เจจเจพเจฎ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเจพเจเฅค
เจชเจฐ เจซเจฟเจฐ เจตเฉ, เจธเฉฐเจเจฟเจเจตเจพเจ เจเจชเจฃเฉ เจฒเจ เจฌเฉเจฒเจฆเฉเจเจ เจนเจจ: EAV เจตเจฟเฉฑเจ เจ เจธเฉเจ เจชเฉเจฐเจคเฉ เจเฉเจฃ เจฎเฉเฉฑเจฒ 2 เจชเฉเจฐเจจ เจ เฉฐเจ เจตเจฟเจฆเฉเจธเจผเฉ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเจพเจ, เจจเจคเฉเจเฉ เจตเจเฉเจ 8 เจฌเจพเจเจ เจตเจพเจงเฉ เจกเจพเจเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, EAV เจธเจพเจฐเฉ เจธเฉฐเจชเฉฑเจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจจเฉเฉฐ เจเฉเจเจธเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเจฐเจฆเจพ เจนเฉ, เจเจฆเฉเจ เจเจฟ JSONB เจธเฉฐเจเจฟเจเจคเจฎเจ เจ เจคเฉ เจฌเฉเจฒเฉเจ เจจ เจฎเฉเฉฑเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจ เฉฐเจฆเจฐเฉเจจเฉ เจคเฉเจฐ 'เจคเฉ เจเจฐเฉเจเจพ เจเจฟเฉฑเจฅเฉ เจธเฉฐเจญเจต เจนเฉเจตเฉ, เจจเจคเฉเจเฉ เจตเจเฉเจ เจเฉฑเจ เจเฉเจเจพ เจซเฉเฉฑเจเจชเฉเจฐเจฟเฉฐเจ เจนเฉเจตเฉเจเจพเฅค
เจจเจคเฉเจเฉ
เจเฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจเฉ, เจฎเฉเจจเฉเฉฐ เจฒเจเจฆเจพ เจนเฉ เจเจฟ JSONB เจซเจพเจฐเจฎเฉเจ เจตเจฟเฉฑเจ เจเจเจพเจ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจเจพ เจคเฉเจนเจพเจกเฉ เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ เจกเจฟเจเจผเจพเจเจจ เจเจฐเจจเจพ เจ เจคเฉ เจธเฉฐเจญเจพเจฒเจฃเจพ เจฌเจนเฉเจค เจธเฉเจเจพ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจชเฉเฉฑเจเจเจฟเฉฑเจเจพเจ เจเจฒเจพ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจเจธเฉ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฃเจพ เจ เจธเจฒ เจตเจฟเฉฑเจ เจตเจงเฉเจฐเฉ เจเฉเจธเจผเจฒเจคเจพ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเฉเจเจพเฅค เจ เจคเฉ เจเจน เจคเฉฑเจฅ เจเจฟ เจเจน เจกเฉเจเจพ เจฆเฉ เจตเจฟเจเจเจพเจฐ เจเจชเจธเฉ เจคเจพเจฒเจฎเฉเจฒ เจจเฉเฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฑเจ เจชเจฒเฉฑเจธ เจนเฉ, เจชเจฐ เจจเจคเฉเจเจพ เจกเฉเจเจพเจฌเฉเจธ เจตเจพเจฒเฉเจ เจฎ เจตเจฟเฉฑเจ 3 เจเฉเจฃเจพ เจเฉเจเจพ เจนเฉ.
เจจเจพเจฒ เจนเฉ, เจเฉเจคเฉ เจเจ เจเฉเจธเจเจพเจ เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ, เจ
เจธเฉเจ เจเจน เจธเจฟเฉฑเจเจพ เจเฉฑเจข เจธเจเจฆเฉ เจนเจพเจ เจเจฟ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ เจจเฉเจเจธเจพเจจ เจฌเจนเฉเจค เจฎเจพเจฎเฉเจฒเฉ เจนเจจเฅค เจเฉเจ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ, JSONB EAV เจจเจพเจฒเฉเจ เจตเฉ เจคเฉเจเจผ เจนเฉ, เจเจธ เจจเฉเฉฐ เจนเฉเจฐ เจตเฉ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจฌเฉเจธเจผเฉฑเจ เจเจน เจฌเฉเจเจเจฎเจพเจฐเจ เจธเจพเจฐเฉ เจชเจนเจฟเจฒเฉเจเจ เจจเฉเฉฐ เจเจตเจฐ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ (เจเจฟเจตเฉเจ เจเจฟ เจฌเจนเฉเจค เจตเฉฑเจกเฉ เจธเฉฐเจเจฟเจ เจตเจพเจฒเฉเจเจ เจธเฉฐเจชเจคเฉเจเจ, เจฎเฉเจเฉเจฆเจพ เจกเฉเจเจพ เจฆเฉเจเจ เจธเฉฐเจชเจคเฉเจเจ เจฆเฉ เจธเฉฐเจเจฟเจ เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจตเจพเจงเจพ,...), เจเจธ เจฒเจ เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเฉเจงเจพเจฐเจจ เจฌเจพเจฐเฉ เจเฉเจ เจธเฉเจเจพเจ
เจนเจจ , เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ เจเฉฑเจกเจฃ เจฒเจ เจธเฉเจคเฉฐเจคเจฐ เจฎเจนเจฟเจธเฉเจธ เจเจฐเฉ!
เจธเจฐเฉเจค: www.habr.com