PostgreSQL рдореЗрдВ JSONB рдХреЗ рд╕рд╛рде EAV рдХреА рдЬрдЧрд╣

рдЯреА рдПрд▓; DR: JSONB рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд▓рд┐рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рдЪрдп


рдЖрдЗрдП рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ (рдбреЗрдЯрд╛рдмреЗрд╕) рдХреЗ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ, рдФрд░ рдЗрд╕ рдЗрдХрд╛рдИ рдХреЗ рдХреБрдЫ рдЧреБрдгреЛрдВ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ) рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╣реА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЕрдзрд┐рдХ рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдВрднрд╡ рдЬреЛрдбрд╝ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рдмрд╕ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдмрд╛рдж рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдХрд╛рдИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ ... рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд╛рдЦреЛрдВ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдИрдПрд╡реА ( рдПрдВрдЯрд┐рдЯреА-рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ-рд╡реИрд▓реНрдпреВ ) рдкреИрдЯрд░реНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрдХрд╛рдЗрдпрд╛рдБ (рд░рд┐рдХреЙрд░реНрдбреНрд╕) рд╣реЛрддреА рд╣реИрдВ, рджреВрд╕рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЧреБрдгреЛрдВ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ) рдХреЗ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рддреАрд╕рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдерд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЗрдирдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдордХреНрдЦреА рдкрд░ рдЧреБрдг рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред

рдлрд┐рд░ рднреА, рдореИрдВ рдЗрд╕ рдиреЛрдЯ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рдЕрдЧрд░ рдИрд╡реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХреЛрдИ рдХрдореА рдирд╣реАрдВ рдереАред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 1 рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдХреНрд╡реЗрд░реА рдореЗрдВ 2 join'a (joins) рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ: рдкрд╣рд▓рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдШ рд╣реИ, рджреВрд╕рд░рд╛ рдореВрд▓реНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдШ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдЗрдХрд╛рдИ рдореЗрдВ 2 рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ, рддреЛ 4 рдЬреЛрдбрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░рд┐рдгрд╛рдо рдФрд░ WHERE рдХреНрд▓реЙрдЬ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реИред

рдЗрди рд╕реНрдкрд╖реНрдЯ рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдИрдПрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рджреЛрд╖ рдереЗ, рдФрд░ рдмрд╕ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ред
рд▓реЗрдХрд┐рди рддрдм PostgreSQL рдореЗрдВ рдПрдХ рдирдИ "рддрдХрдиреАрдХ" рджрд┐рдЦрд╛рдИ рджреА ...

PostgreSQL 9.4 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдПрдХ JSONB рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрд╛рдЗрдирд░реА JSON рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ JSON рдХреЛ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рджреЗ рдкрд╛рда JSON рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рдФрд░ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдмрд╣реБрдд рддреЗрдЬ рд╣реИред JSONB рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рддреЗрдЬреА рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реИред

JSONB рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рдЕрдкрдиреА рдЗрдХрд╛рдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ JSONB рдХреЙрд▓рдо рдЬреЛрдбрд╝рдХрд░ рднрд╛рд░реА рдИрдПрд╡реА рдкреИрдЯрд░реНрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдИ рд▓реЛрдЧ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдХрдореА рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк


рдЗрд╕ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ DigitalOcean Ubuntu 14.04 рдХреЗ $ 80 рдмрд┐рд▓реНрдб рдкрд░ PostgreSQL 9.5 рдХреА рдПрдХ рдирдИ рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ред Postgresql.conf рдореЗрдВ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ psql рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛ред рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛рдПрдБ EAV рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереАрдВ:

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 ); 

рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдлрд┐рд░, рдЗрдХрд╛рдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ ( рдирд┐рдХрд╛рдп рдФрд░ рдирд┐рдХрд╛рдп_рдЬреЙрдирд╕реНрдм ) рдореЗрдВ 10 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗ рдЧрдП, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдЙрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдХреЛ рдИрдПрд╡реА рдкреИрдЯрд░реНрди рдФрд░ JSONB рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд░рд╛ рдЧрдпрд╛ рдерд╛ - Unit_jsonb.properties ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдореНрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рд╣рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдПред рдирдореВрдирд╛ рдбреЗрдЯрд╛:

 { id: 1 name: "Entity1" description: "Test entity no. 1" properties: { color: "red" lenght: 120 width: 3.1882420 hassomething: true country: "Belgium" } } 

рддреЛ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рд╣реИ, рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдПред рдЖрдЗрдП рдХрд╛рдо рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!

рдбрд┐рдЬрд╛рдЗрди рд╕рд░рд▓реАрдХрд░рдг


рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрд╣реБрдд рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдПрдХ рддрд╛рд▓рд┐рдХрд╛, рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП JSONB рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, EAV рдХреЗ рд▓рд┐рдП рддреАрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рд▓реЗрдХрд┐рди рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ? рдПрдХ рдЗрдХрд╛рдИ рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 -- 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 рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ jsonb_set () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ JSONB рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдирдП рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдИрдПрд╡реА рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ Unit_id рдФрд░ unit_attribute_id рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 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; 

рдИрдПрд╡реА рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП 2 рдЬреЙрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рдХреНрд╡реЗрд░реАрдЬрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╕рд░рд▓реАрдХрд░рдг рджрд┐рдЦрд╛рддреА рд╣реИрдВред JSONB рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ, рдЗрд╕рдХреЗ рдФрд░ рднреА рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рджреЗрдЦреЗрдВред
рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЙрддреНрдкрд╛рджрдХрддрд╛


рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд░рдирдЯрд╛рдЗрдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрдо рд╕реЗ рдХрдо рддреАрди рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рдирд░ рдХреЛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЪрд▓рд╛рдпрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ JSONB рдХреЗ рдПрдХ рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ EAV рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬреБрдбрд╝рд╛рд╡ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ (рд╡рд┐рджреЗрд╢реА рдкреНрд░рдореБрдЦ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдИрдПрд╡реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ 2 рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдпрд╛, рд╕рд╛рде рд╣реА JSONB рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП GIN рдЗрдВрдбреЗрдХреНрд╕ рднреА рдмрдирд╛рдпрд╛ред

рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдиреЗ рд╕рдордп рдореЗрдВ (рдПрдордПрд╕ рдореЗрдВ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреИрдорд╛рдирд╛ рд▓рдШреБрдЧрдгрдХ рд╣реИ:

рдЫрд╡рд┐

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ JSONB рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ (> 50,000-x) рдИрдПрд╡реА рд╕реЗ рддреЗрдЬ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдПред рдЬрдм рд╣рдо рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд░ рд▓рдЧрднрдЧ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JSONB рдЕрднреА рднреА EAV рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1.3 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ JSONB рдХреЙрд▓рдо рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдпрд╣рд╛рдБ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдореВрд▓реНрдпрд╛рдВрдХрди рдорд╛рдирджрдВрдб рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо (рд╕рд╛рдорд╛рдиреНрдп рдкреИрдорд╛рдиреЗ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ JSONB рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ EAV рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм EAV рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╣реИ, рддрдм рднреА рдпрд╣ JSONB рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ JSONB рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рдордп рд╕рдорд╛рди рдерд╛, рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ GIN рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЬрдм рдЖрдк рднрд░реЗ рд╣реБрдП рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП GIN рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдорд╛рд╡реЗрд╢ рдСрдкрд░реЗрдЯрд░ @> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдирдП рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рд╕рдордп рдкрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛: рдХреЗрд╡рд▓ 0.153 рдПрдордПрд╕! рдпрд╣ рдИрдПрд╡реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 15,000 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдФрд░ рдСрдкрд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 25,000 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ - >>

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рддреЗрдЬ рдерд╛!

DB рддрд╛рд▓рд┐рдХрд╛ рдЖрдХрд╛рд░


рдЖрдЗрдП рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдЖрдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред Psql рдореЗрдВ, рд╣рдо \ dti + рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЯреЗрдмрд▓ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдЫрд╡рд┐

рдИрдПрд╡реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 3068 рдПрдордмреА рд╣реИ, рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ 3427 рдПрдордмреА рддрдХ рд╣реИрдВ, рдЬреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ 6.50 рдЬреАрдмреА рджреЗрддрд╛ рд╣реИред JSONB рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП 1817 рдПрдордмреА рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП 318 рдПрдордмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 2.08 рдЬреАрдмреА рд╣реИред рдпрд╣ 3 рдЧреБрдирд╛ рдХрдо рдирд┐рдХрд▓рддрд╛ рд╣реИ! рдЗрд╕ рддрдереНрдп рдиреЗ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рд░ JSONB рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдорд╛рди, рд╕рдВрдЦреНрдпрд╛рдПрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИрдВ: рдИрдПрд╡реА рдореЗрдВ рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП 2 рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЗ 8 рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, EAV рдореЗрдВ, рд╕рднреА рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ JSONB рдЖрдВрддрд░рд┐рдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSONB рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрдХрд╛рдИ рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд▓рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ 3 рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, JSONB рдИрдПрд╡реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдФрд░ рднреА рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмреЗрдВрдЪрдорд╛рд░реНрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ, рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ ...), рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ!

Source: https://habr.com/ru/post/hi475178/


All Articles