TL; DR: JSONB เชเซเชตเซเชฐเซ เชเชพเชฎเชเซเชฐเซเชจเซ เชฌเชฒเชฟเชฆเชพเชจ เชเชชเซเชฏเชพ เชตเชฟเชจเชพ เชกเซเชเชพเชฌเซเช เชธเซเชเซเชฎเชพ เชตเชฟเชเชพเชธเชจเซ เชฎเซเชเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช เชธเชฐเชณ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ.
เชชเชฐเชฟเชเชฏ
เชเชพเชฒเซ เชเชชเชฃเซ เชฐเชฟเชฒเซเชถเชจเชฒ เชกเซเชเชพเชฌเซเช (เชกเซเชเชพเชฌเซเช) เชจเชพ เชตเชฟเชถเซเชตเชจเชพ เชธเซเชฅเซ เชเซเชจเชพ เชเชชเชฏเซเชเชจเชพ เชเซเชธเซเชฎเชพเชเชจเชพ เชเชเชจเซเช เชเชคเซเชคเชฎ เชเชฆเชพเชนเชฐเชฃ เชเชชเซเช: เชเชชเชฃเซ เชชเชพเชธเซ เชเช เชเชจเซเชเชฟเชเซ เชเซ, เช เชจเซ เชเชชเชฃเซ เช เชเชจเซเชเชฟเชเซเชจเชพ เชเซเชเซเชเชธ เชเซเชฃเชงเชฐเซเชฎเซ (เชฒเชเซเชทเชฃเซ) เชธเชพเชเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชชเชฐเชเชคเซ เชคเชฎเชพเชฎ เชเชฆเชพเชนเชฐเชฃเซเชฎเชพเช เชธเชฎเชพเชจ เชเซเชฃเชงเชฐเซเชฎเซเชจเซ เชธเชฎเซเชน เชนเซเช เชถเชเชคเซ เชจเชฅเซ, เช เชจเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช เชตเชงเซ เชเซเชฃเชงเชฐเซเชฎเซ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซ เชถเชเซ เชเซ.
เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเซเชฒ เชฒเชพเชตเชตเชพเชจเซ เชธเซเชฅเซ เชธเชนเซเชฒเซ เชฐเชธเซเชคเซ เช เชเซ เชเซ เชฆเชฐเซเช เชชเซเชฐเซเชชเชฐเซเชเซ เชตเซเชฒเซเชฏเซ เชฎเชพเชเซ เชกเซเชเชพเชฌเซเช เชเซเชฌเชฒเชฎเชพเช เชเช เชเซเชฒเชฎ เชฌเชจเชพเชตเชตเซ, เช เชจเซ เชเซเชเซเชเชธ เชเชจเซเชเชฟเชเซ เชเชจเซเชธเซเชเชจเซเชธ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซ เชซเชเซเชค เชญเชฐเซ. เชธเชฐเชธ! เชเซเชฏเชพเช เชธเซเชงเซ เชคเชฎเชพเชฐเชพ เชเซเชฌเชฒเชฎเชพเช เชฒเชพเชเซ เชฐเซเชเซเชฐเซเชก เชจ เชนเซเชฏ เช เชจเซ เชคเชฎเชพเชฐเซ เชจเชตเซ เชฐเซเชเซเชฐเซเชก เชเชฎเซเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเช เชเช.
EAV เชชเซเชเชฐเซเชจเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ (
เชเซ เชเซ, เชเซ EVA เช
เชญเชฟเชเชฎเชฎเชพเช เชเซเชเชฒเชพเช เชกเชพเชเชจเชธเชพเชเชกเซเชธ เชจ เชนเซเชค เชคเซ เชนเซเช เช เชชเซเชธเซเช เชฒเชเซเชถ เชจเชนเซเช. เชคเซเชฅเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเช เช
เชฅเชตเชพ เชตเชงเซ เชเชจเซเชเชฟเชเซ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เชเซ เชเซเชฎเชพเช เชชเซเชฐเชคเซเชฏเซเชเชฎเชพเช 1 เชเชเซเชฐเชฟเชฌเซเชฏเซเช เชนเซเชฏ, เชเซเชตเซเชฐเซเชฎเชพเช 2 เชเซเชกเชพเช เชเชฐเซเชฐเซ เชเซ: เชชเซเชฐเชฅเชฎ เชเชเซเชฐเชฟเชฌเซเชฏเซเช เชเซเชทเซเชเช เชธเชพเชฅเซ เชเซเชกเชพเชฏ เชเซ, เชฌเซเชเซเช เชฎเซเชฒเซเชฏ เชเซเชทเซเชเช เชธเชพเชฅเซเชจเซเช เชเซเชกเชพเชฃ เชเซ. เชเซ เชเซเช เชเชจเซเชเชฟเชเซเชฎเชพเช 2 เชตเชฟเชถเซเชทเชคเชพเช เชนเซเชฏ, เชคเซ 4 เชเซเชกเชพเช เชเชฐเซเชฐเซ เชเซ! เชตเชงเซเชฎเชพเช, เชคเชฎเชพเชฎ เชตเชฟเชถเซเชทเชคเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชถเชฌเซเชฆเชฎเชพเชณเชพเช เชคเชฐเซเชเซ เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ, เชเซ เชชเชฐเชฟเชฃเชพเชฎ เช
เชจเซ WHERE เชเชฒเชฎ เชฌเชเชจเซ เชฎเชพเชเซ เชเชพเชเชช เชเชพเชธเซเชเชฟเชเชเชฎเชพเช เชชเชฐเชฟเชฃเชฎเซ เชเซ. เชเซ เชคเชฎเซ เชเชฃเซ เชฌเชงเซ เชเซเชตเซเชฐเซ เชฒเชเซ เชเซ, เชคเซ เชธเชเชธเชพเชงเชจเชจเชพ เชเชชเชฏเซเชเชจเซ เชฆเซเชฐเชทเซเชเชฟเช เช เชคเชฆเซเชฆเชจ เชจเชเชพเชฎเซเช เชเซ.
เช เชธเซเชชเชทเซเช เชเชพเชฎเซเช เชนเซเชตเชพ เชเชคเชพเช, EAV เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เช เชชเซเชฐเชเชพเชฐเชจเซ เชธเชฎเชธเซเชฏเชพเช เชเชเซเชฒเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ. เช เช
เชจเชฟเชตเชพเชฐเซเชฏ เชเชพเชฎเซเช เชนเชคเซ, เช
เชจเซ เชเชจเชพเชฅเซ เชธเชพเชฐเซ เชเซเช เชตเชฟเชเชฒเซเชช เชจเชนเซเชคเซ.
เชชเชฐเชเชคเซ เชชเชเซ PostgreSQL เชฎเชพเช เชเช เชจเชตเซ "เชเซเชเชจเซเชฒเซเชเซ" เชฆเซเชเชพเช...
PostgreSQL 9.4 เชฅเซ เชถเชฐเซ เชเชฐเซเชจเซ, JSON เชฆเซเชตเชฟเชธเชเชเซ เชกเซเชเชพ เชธเซเชเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ JSONB เชกเซเชเชพ เชชเซเชฐเชเชพเชฐ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ. เชเซ เชเซ เช เชซเซเชฐเซเชฎเซเชเชฎเชพเช 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