EAV-แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ JSONB-แƒ˜แƒ— PostgreSQL-แƒจแƒ˜

TL; DR: JSONB-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฌแƒ˜แƒ แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒ›แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒ แƒ”แƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก (แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก) แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒจแƒ˜ แƒแƒšแƒ‘แƒแƒ— แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฃแƒซแƒ•แƒ”แƒšแƒ”แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒก แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜: แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒ“แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ— แƒแƒ› แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜ (แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜). แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒœแƒแƒ˜แƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ”แƒ›แƒแƒขแƒแƒก แƒ›แƒ”แƒขแƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ.

แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“ แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ’แƒ–แƒแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒแƒ•แƒกแƒแƒ— แƒ˜แƒก, แƒ แƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒ˜แƒ“แƒ˜! แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ... แƒกแƒแƒœแƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒ— แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜.

แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— EAV แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜ (แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜-แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜-แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ), แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ. แƒ”แƒ แƒ—แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒก (แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒก), แƒ›แƒ”แƒแƒ แƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒก (แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒก), แƒฎแƒแƒšแƒ แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒแƒ› แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒคแƒ แƒ”แƒœแƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒ” แƒแƒ  แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ“แƒ˜ แƒแƒ› แƒžแƒแƒกแƒขแƒก, แƒ แƒแƒ› แƒแƒ  แƒงแƒแƒคแƒ˜แƒšแƒ˜แƒงแƒ EVA แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ”แƒ แƒ—แƒ˜ แƒแƒœ แƒ›แƒ”แƒขแƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒแƒฅแƒ•แƒ— 1 แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ 2 แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ: แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ—แƒแƒœ, แƒ›แƒ”แƒแƒ แƒ” แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ—แƒแƒœ. แƒ—แƒฃ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒก แƒแƒฅแƒ•แƒก 2 แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒกแƒแƒญแƒ˜แƒ แƒแƒ 4 แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ! แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒงแƒ•แƒ”แƒšแƒ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒ แƒแƒช แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” WHERE แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒก แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒงแƒแƒšแƒ˜แƒ‘แƒ”แƒ‘แƒแƒก. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฌแƒ”แƒ แƒ— แƒฃแƒแƒ›แƒ แƒแƒ• แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒคแƒฃแƒญแƒ˜แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—.

แƒแƒ› แƒแƒจแƒ™แƒแƒ แƒ แƒœแƒแƒ™แƒšแƒแƒ•แƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“, EAV แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“. แƒ”แƒก แƒ˜แƒงแƒ แƒ’แƒแƒ แƒ“แƒแƒฃแƒ•แƒแƒšแƒ˜ แƒœแƒแƒ™แƒšแƒแƒ•แƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ.
แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒฎแƒแƒšแƒ˜ "แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ" แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ PostgreSQL-แƒจแƒ˜...

PostgreSQL 9.4-แƒ“แƒแƒœ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜, JSONB แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ˜ แƒ“แƒแƒ”แƒ›แƒแƒขแƒ JSON แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒแƒ› แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ JSON-แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒก, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•, แƒชแƒแƒขแƒ แƒ›แƒ”แƒขแƒ˜ แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒ“แƒ แƒ“แƒ แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ JSON, แƒ›แƒแƒกแƒ–แƒ” แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ. JSONB แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒแƒก, แƒ แƒแƒช แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒก.

JSONB แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒแƒ— แƒฃแƒฎแƒ”แƒ แƒฎแƒฃแƒšแƒ˜ EAV แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ—แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ JSONB แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒแƒ›แƒแƒก แƒฃแƒœแƒ“แƒ แƒแƒฎแƒšแƒ“แƒ”แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ... แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ” แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ.

แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒแƒ› แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒ” แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ PostgreSQL 9.5-แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ 80$-แƒ˜แƒแƒœแƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ˜แƒ—. แƒชแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒแƒ™แƒ”แƒแƒœแƒ” Ubuntu 14.04. 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
);

แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒฉแƒแƒœแƒก, แƒแƒ แƒ? แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒ’แƒ˜ แƒ“แƒแƒ”แƒ›แƒแƒขแƒ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒก (แƒžแƒ˜แƒ แƒ˜ & entity_jsonb) 10 แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒ˜แƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ— EAV แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜แƒ— แƒ“แƒ JSONB แƒกแƒ•แƒ”แƒขแƒ˜แƒ— แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— - entity_jsonb.แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒ”แƒš แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก แƒจแƒแƒ แƒ˜แƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜:

{
  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 แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜. แƒ—แƒฃแƒ›แƒชแƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜. แƒ—แƒฃ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— EAV แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ— แƒ แƒแƒ’แƒแƒ แƒช entity_id, แƒแƒกแƒ”แƒ•แƒ” entity_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 แƒ˜แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒ‘แƒก แƒแƒฅ! แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— JSON ->> แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒก, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒคแƒ”แƒ แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ JSONB แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒ“แƒแƒœ. แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ”แƒแƒ แƒ” แƒ’แƒ–แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒฌแƒ”แƒ•แƒแƒ“ 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 แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒแƒฅ แƒ”แƒก แƒžแƒแƒกแƒขแƒ˜.
แƒแƒฎแƒšแƒ แƒ“แƒ แƒแƒ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ”.

แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ

แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ“แƒแƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” แƒแƒฎแƒกแƒœแƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒจแƒ˜, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ—แƒ•แƒšแƒ”แƒšแƒแƒ“. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒกแƒแƒ›แƒฏแƒ”แƒ , แƒ แƒแƒ“แƒ’แƒแƒœ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒ›แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒข แƒ“แƒ แƒแƒก แƒ˜แƒฆแƒ”แƒ‘แƒก. แƒฏแƒ”แƒ  แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ’แƒ•แƒแƒ แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒชแƒฎแƒแƒ“แƒ˜แƒ, แƒ”แƒก แƒ˜แƒงแƒ JSONB-แƒ˜แƒก แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ EAV-แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก (แƒฃแƒชแƒฎแƒ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒงแƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜). แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ EAV แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก 2 แƒฃแƒชแƒฎแƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒ–แƒ”, แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ GIN JSONB แƒกแƒ•แƒ”แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒแƒ› แƒแƒฉแƒ•แƒ”แƒœแƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (ms). แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜ แƒšแƒแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒฃแƒšแƒ˜แƒ:

EAV-แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ JSONB-แƒ˜แƒ— PostgreSQL-แƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› JSONB แƒ‘แƒ”แƒ•แƒ แƒแƒ“ (> 50000-x) แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” EAV, แƒ—แƒฃ แƒแƒ  แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก, แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒ“แƒ”แƒ‘แƒ— แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒ—, แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒฅแƒ แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› JSONB แƒ›แƒแƒ˜แƒœแƒช 1,3-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” EAV. แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› JSONB แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก แƒแƒฅ แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒ”แƒคแƒ”แƒฅแƒขแƒ˜ แƒแƒ  แƒแƒฅแƒ•แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒก แƒจแƒ”แƒคแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ™แƒ แƒ˜แƒขแƒ”แƒ แƒ˜แƒฃแƒ›แƒ”แƒ‘แƒจแƒ˜.

แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒก (แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜):

EAV-แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ JSONB-แƒ˜แƒ— PostgreSQL-แƒจแƒ˜

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ˜แƒแƒ—, แƒ แƒแƒ› JSONB แƒ˜แƒกแƒ”แƒ• แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ•แƒ˜แƒ“แƒ แƒ” EAV แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ“แƒ”แƒกแƒแƒช EAV แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒก แƒ›แƒแƒ˜แƒœแƒช แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ•แƒ˜แƒ“แƒ แƒ” JSONB. แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒ•แƒ˜แƒœแƒแƒฎแƒ”, แƒ แƒแƒ› JSONB แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ˜แƒงแƒ, แƒแƒ›แƒแƒœ แƒ›แƒ˜แƒ‘แƒ˜แƒซแƒ’แƒ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ แƒแƒ› GIN แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— GIN แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก แƒ“แƒแƒกแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒกแƒ•แƒ”แƒขแƒ–แƒ”, แƒ˜แƒก แƒซแƒแƒšแƒแƒจแƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก @> แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒ›แƒ” แƒ”แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” แƒแƒฎแƒแƒš แƒขแƒ”แƒกแƒขแƒจแƒ˜ แƒ“แƒ แƒ›แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒ แƒ“แƒ แƒแƒ–แƒ”: แƒ›แƒฎแƒแƒšแƒแƒ“ 0,153 ms! แƒ”แƒก แƒแƒ แƒ˜แƒก 15000-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ•แƒ˜แƒ“แƒ แƒ” EAV แƒ“แƒ 25000-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ•แƒ˜แƒ“แƒ แƒ” ->> แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜.

แƒ›แƒ’แƒแƒœแƒ˜ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ˜แƒงแƒ!

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒแƒ“แƒแƒ แƒแƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒ•แƒ” แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. psql-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— dti+

EAV-แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ JSONB-แƒ˜แƒ— PostgreSQL-แƒจแƒ˜

EAV แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ”แƒ‘แƒ˜แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 3068 MB แƒ“แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ 3427 MB-แƒ›แƒ“แƒ”, แƒกแƒแƒ”แƒ แƒ—แƒ แƒฏแƒแƒ›แƒจแƒ˜ 6,43 GB. JSONB แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก 1817 MB แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ 318 MB แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒแƒ แƒ˜แƒก 2,08 GB. แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก 3-แƒฏแƒ”แƒ  แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜! แƒแƒ› แƒคแƒแƒฅแƒขแƒ›แƒ แƒแƒ“แƒœแƒแƒ• แƒ’แƒแƒ›แƒ˜แƒ™แƒ•แƒ˜แƒ แƒ“แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ JSONB แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒจแƒ˜.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ˜แƒœแƒช, แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ”แƒœ: EAV-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— 2 แƒ›แƒ—แƒ”แƒš แƒฃแƒชแƒฎแƒแƒฃแƒ  แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก 8 แƒ‘แƒแƒ˜แƒขแƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒก. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, EAV แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒฎแƒแƒšแƒ JSONB แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒชแƒ˜แƒคแƒ แƒฃแƒš แƒ“แƒ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ  แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—, แƒกแƒแƒ“แƒแƒช แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒช แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒแƒœแƒแƒ‘แƒ”แƒญแƒ“แƒก.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒแƒจแƒ˜, แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก JSONB แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒแƒแƒ“แƒ•แƒ˜แƒšแƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜ แƒ“แƒ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒฃแƒแƒ›แƒ แƒแƒ• แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜, แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ“แƒ แƒ˜แƒก แƒคแƒแƒฅแƒขแƒ˜, แƒ แƒแƒ› แƒ”แƒก แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒแƒก, แƒฃแƒ™แƒ•แƒ” แƒžแƒšแƒฃแƒกแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ 3-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ”แƒ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒ—.

แƒแƒกแƒ”แƒ•แƒ”, แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒแƒกแƒ™แƒ•แƒœแƒแƒ—, แƒ แƒแƒ› แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒแƒ™แƒแƒ แƒ’แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒฃแƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, JSONB แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” EAV, แƒ แƒแƒช แƒ›แƒแƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒก แƒฎแƒ“แƒ˜แƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒ”แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ  แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒกแƒžแƒ”แƒฅแƒขแƒก (แƒ›แƒแƒ’. แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜, แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ–แƒ แƒ“แƒ,...), แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒ’แƒแƒฅแƒ•แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. , แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ“แƒแƒขแƒแƒ•แƒแƒ— แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜!

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ