αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ PostgreSQL 12

αž€αŸ’αžšαž»αž˜ PostgreSQL αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž–αžΈαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ PostgreSQL 12 αžŠαŸ‚αž›αž‡αžΆαž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αŸ”
PostgreSQL 12 αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαž½αžš - αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‘αŸ†αž αŸ†αž’αŸ†αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž αžΎαž™αž€αŸαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ†αž αŸ†αžαžΆαžŸαž‡αžΆαž‘αžΌαž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž•αž„αžŠαŸ‚αžšαŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžαŸ’αž˜αžΈαžšαž½αž˜αž˜αžΆαž“:

  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αžΆαžŸαžΆαžŸαŸ†αžŽαž½αžš JSON Path (αž•αŸ’αž“αŸ‚αž€αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž“αŸƒαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš SQL/JSON);
  • αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αž“αŸ’αžŸαŸ„αž˜αžαžΆαžšαžΆαž„αž‘αžΌαž‘αŸ… (αž‡αžΆαž˜αž½αž™);
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž

αžŸαž αž‚αž˜αž“αŸαž€αŸαž”αž“αŸ’αžαž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž—αžΆαž–αž’αžΆαž…αž‡αžΏαž‡αžΆαž€αŸ‹αž”αžΆαž“αž“αŸƒ PostgreSQL αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž‡αžΆαžαž· αžŸαž˜αžαŸ’αžαž—αžΆαž–αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž•αŸ’αž‘αž»αž€αžŠαŸ‚αž›αž’αžΆαž…αžŠαŸ„αžαž”αžΆαž“ αžŠαŸ‚αž›αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αž„αŸ’αž€αžΎαžαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

PostgreSQL 12 αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž“αž·αž„αž€αžΆαžšαžαŸ‚αžšαž€αŸ’αžŸαžΆαž™αŸ‰αžΆαž„αžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜ αž“αž·αž„αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αŸ”

αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ B-tree αžŠαŸ‚αž›αž‡αžΆαž”αŸ’αžšαž—αŸαž‘αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚ 12 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‰αžΉαž€αž‰αžΆαž”αŸ‹αŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš TPC-C αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL 12 αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαžαž™αž…αž»αŸ‡αž‡αžΆαž˜αž’αŸ’αž™αž˜ 40% αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž›αŸ†αž  αž“αž·αž„αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž‡αžΆαžšαž½αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαž½αžšαŸ”

αžŸαŸ†αžŽαž½αžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž”αžΆαž“αž‘αž‘αž½αž›αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž˜αžΆαž“αž—αžΆαž‚αžαžΆαžŸαžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹αžŠαŸ‚αž›αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸƒαž’αžΆαžšαŸαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ INSERT αž“αž·αž„ COPY αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž€αŸαžŠαžΌαž…αž‡αžΆαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž—αžΆαž‚αžαžΆαžŸαžαŸ’αž˜αžΈαžŠαŸ„αž™αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„αžŸαŸ†αžŽαž½αžšαŸ”

PostgreSQL 12 αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž”αž“αŸ’αžαŸ‚αž˜αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž‡αŸ‡αž₯αž‘αŸ’αž’αž·αž–αž›αžŠαž›αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž˜αžΌαž› αžšαž½αž˜αž‘αžΆαŸ†αž„αŸ–

  • αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž WAL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ GiST, GIN αž“αž·αž„ SP-GiST;
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹ (αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžƒαŸ’αž›αžΆ) αž›αžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ GiST;
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαŸ†αžŽαž½αžš "αž’αŸ’αž“αž€αž‡αž·αžαžαžΆαž„αžŠαŸ‚αž›αž“αŸ…αž‡αž·αžαž”αŸ†αž•αž»αž" (αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€ k-NN) αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž…αž˜αŸ’αž„αžΆαž™ (<->) αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ SP-GiST αŸ”
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ’αžαž·αžαž·αžαž˜αŸ’αž›αŸƒαž‘αžΌαž‘αŸ… (MCV) αžŠαŸ„αž™αž”αŸ’αžšαžΎ CREATE STATISTICS αžŠαŸ‚αž›αž‡αž½αž™αž±αŸ’αž™αž‘αž‘αž½αž›αž”αžΆαž“αž•αŸ‚αž“αž€αžΆαžšαžŸαŸ†αžŽαž½αžšαž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αžαž˜αŸ’αž›αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž˜αž·αž“αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαŸ”

αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ JIT αžŠαŸ„αž™αž”αŸ’αžšαžΎ LLVM αžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 11 αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ JIT αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž“αŸ’αžŸαŸ„αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆ WHERE αž”αž‰αŸ’αž‡αžΈαž‚αŸ„αž›αžŠαŸ… αžŸαžšαž»αž” αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαžΆαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„ PostgreSQL αž‡αžΆαž˜αž½αž™ LLVM αž¬αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹ PostgreSQL αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ LLVM αŸ”

αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŸαž˜αžαŸ’αžαž—αžΆαž–αž—αžΆαžŸαžΆ SQL αž“αž·αž„αž—αžΆαž–αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžαžΆαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš

PostgreSQL 12 αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž½αžšαž―αž€αžŸαžΆαžš JSON αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž“αŸ’αžŸαŸ„αž˜αž•αŸ’αž›αžΌαžœ JSON αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš SQL/JSON αŸ” αžŸαŸ†αžŽαž½αžšαž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αž“αŸ’αžαž€αžΆαžšαž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ JSONB αžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ”

αž€αž“αŸ’αžŸαŸ„αž˜αžαžΆαžšαžΆαž„αž‘αžΌαž‘αŸ… αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžαžΆαž‡αžΆ WITH queries αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž‡αŸ†αž“αž½αžŸαž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž‡αž½αž™αž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈ αž•αŸ’αž“αŸ‚αž€αž‡αŸ†αž“αž½αžŸαž“αŸƒαžŸαŸ†αžŽαž½αžš WITH αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αžœαžΆαž˜αž·αž“αž€αžΎαžαž‘αžΎαž„αžŠαžŠαŸ‚αž›αŸ— αž˜αž·αž“αž˜αžΆαž“αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αŸ„αž„αžαŸ‚αž˜αŸ’αžαž„αž‚αžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒαžŸαŸ†αžŽαž½αžšαŸ”

PostgreSQL 12 αžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "αž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž" αŸ” αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš SQL αž”αŸ’αžšαž—αŸαž‘αž‡αž½αžšαžˆαžšαž“αŸαŸ‡αž‚αžŽαž“αžΆαžαž˜αŸ’αž›αŸƒαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αžΆαžαž·αž€αžΆαž“αŸƒαž‡αž½αžšαžˆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž“αŸαŸ‡ PostgreSQL αž‚αžΆαŸ†αž‘αŸ’αžš "αž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€" αžŠαŸ‚αž›αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž›αžΎαžαžΆαžŸαŸ”

αž’αž“αŸ’αžαžšαž‡αžΆαžαž·

PostgreSQL 12 αž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ICU collations αžŠαŸ„αž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ†αžŽαžαŸ‹ "αž€αžΆαžšαž•αŸ’αžŸαŸ†αž˜αž·αž“αž€αŸ†αžŽαžαŸ‹" αžŠαŸ‚αž›αž’αžΆαž…αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž’αŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžŠαŸ‚αž›αž˜αž·αž“αžŸαžΌαžœαžŸαŸ†αžαžΆαž“αŸ‹ ឬ accent-insensitive αŸ”

αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ

PostgreSQL αž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŠαŸαžšαžΉαž„αž˜αžΆαŸ†αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž“αž·αž„αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αŸ” αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸαŸ‡αžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž“αž·αž„αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž›αžΎαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ GSSAPI αž€αŸαžŠαžΌαž…αž‡αžΆαžŸαž˜αžαŸ’αžαž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ LDAP αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› PostgreSQL αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž‡αžΆαž˜αž½αž™ OpenLDAP αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž PostgreSQL 12 αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΆαŸ†αž‘αŸ’αžšαž‡αž˜αŸ’αžšαžΎαžŸαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž–αž αž»αž€αžαŸ’αžαžΆαŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PostgreSQL αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž’αžαž·αžαž·αž‡αž“αž•αŸ’αžαž›αŸ‹αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš SSL αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎ clientcert=verify-full αž αžΎαž™αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ (ឧ. scram-sha-256)αŸ”

αžšαžŠαŸ’αž‹αž”αžΆαž›

PostgreSQL 12 αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž–αžΈαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž˜αž·αž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ REINDEX CONCURRENTLY αŸ” αž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž•αŸ’αž’αžΆαž€ DBMS αž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€ αž¬αž”αž·αž‘αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž‘αŸ†αž–αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž”αž·αž‘αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ pg_checksums αŸ” αž–αžΈαž˜αž»αž“ αž‘αŸ†αž–αŸαžš checksums αžŠαŸ‚αž›αž‡αžΆαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž‡αž½αž™αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž•αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎαžŒαžΈαžŸαž’αžΆαž…αž”αžΎαž€αž”αžΆαž“αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž€αŸ’αžšαž»αž˜ PostgreSQL αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎ initdb αŸ”

αž”αŸ’αžšαž—αž–: linux.org.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹