ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

ืœืขืฆื˜ื ืก ืื™ืš ื“ืขืจืฆื™ื™ืœื˜ ืื™ืจ ื•ื•ื™, ื ื™ืฆืŸ ื ืึธืจืžืึทืœ ืจืขืกืึทืคึผื™ื– ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ SQL ืœื™ื™ืขื ืขืŸ ืงื•ื•ื™ืจื™ื– ืคึฟื•ืŸ PostgreSQL ื“ืึทื˜ืึทื‘ื™ื™ืก. ื”ื™ื™ึทื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืจืขืงืึธืจื“ื™ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืžืขืจ ื™ืคื™ืฉืึทื ื˜ืœื™ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืึธืŸ ื ื™ืฆืŸ ืงื™ื™ืŸ "ื˜ื•ื•ื™ืกืฅ" ืื™ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ - ืคืฉื•ื˜ ื“ื•ืจืš ืจื™ื›ื˜ื™ืง ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ ื“ื™ ื“ืึทื˜ืŸ ืคืœืึธื•ื–.

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

#1. ืกืขืงืฉืึทืŸ

ืึทืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ื•ื•ืขืจื˜ ืึธืจื’ืึทื ื™ื–ื™ืจื˜ ื’ืขื•ื•ืขื ื“ื˜ ืฆืขื˜ื™ื™ืœื•ื ื’ "ืื™ืŸ ื˜ืขืึธืจื™ืข" ืื™ื– ืฉื•ื™ืŸ ื’ืขื•ื•ืขืŸ, ื“ืึธ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืคื™ืจ ืคื•ืŸ ืึทืคึผืœื™ื™ื™ื ื’ ืขื˜ืœืขื›ืข ืึทืคึผืจืึธื•ื˜ืฉื™ื– ืื™ืŸ ืื•ื ื“ื–ืขืจ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื“ื™ื ืกื˜ ืคึฟืึทืจ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ PostgreSQL ืกืขืจื•ื•ืขืจืก.

โ€” ื–ืื›ืขืŸ ืคื•ืŸ ืคืืจื’ืื ื’ืขื ืข ื˜ืขื’...

ื˜ื›ื™ืœืขืก, ื•ื•ื™ ืงื™ื™ืŸ MVP, ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜ ืกื˜ืึทืจื˜ืขื“ ืื•ื ื˜ืขืจ ืึท ืคืขืจืœื™ ืœื™ื›ื˜ ืžืึทืกืข - ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ ืึท ื˜ื•ืฅ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ืงืจื™ื˜ื™ืฉ ืกืขืจื•ื•ืขืจืก, ืึทืœืข ื˜ื™ืฉืŸ ื–ืขื ืขืŸ ืœืขืคื™ืขืจืขืš ืกืึธืœื™ื“ ... ืึธื‘ืขืจ ื•ื•ื™ ื“ื™ ืฆื™ื™ื˜ ืื™ื– ื’ืขืฆื•ื™ื’ืŸ, ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืžืึธื ื™ื˜ืึธืจืขื“ ืžื—ื ื•ืช ื’ืขื•ื•ืืจืŸ ืžืขืจ ืื•ืŸ ืžืขืจ, ืื•ืŸ ืึทืžืึธืœ ื•ื•ื™ื“ืขืจ ืžื™ืจ ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืžื™ื˜ ืื™ื™ื ืขืจ ืคื•ืŸ ื˜ื™ืฉืŸ 1.5 ื˜ื‘ ืื™ืŸ ื’ืจื™ื™ืก, ื”ืื‘ ืŸ ืžื™ ืจ ื–ื™ ืš ืคืืจืฉื˜ืื ืขืŸ , ื ื– ื›ืื˜ ืฉ ืžืข ืŸ ืื™ ื– ืžืขื’ืœืข ืš ืฆ ื• ืฐืฒื˜ืข ืจ ืœืขื‘ ืŸ ืื–ื•ื™ , ืื™ ื– ื“ื ืก ื–ืฒืข ืจ ืื•ืžื‘ืืงื•ื•ืขื .

ื“ื™ ืฆื™ื™ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื›ึผืžืขื˜ ื•ื•ื™ ืขืคึผืึธืก ืฆื™ื™ื˜, ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ PostgreSQL 9.x ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง, ืึทื–ื•ื™ ืึทืœืข ืคึผืึทืจื˜ื™ืฉืึทื ื– ื”ืึธื‘ืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขื˜ืืŸ "ืžืึทื ื™ื•ืึทืœื™" - ื“ื•ืจืš ื˜ื™ืฉ ื™ืจื•ืฉื” ืื•ืŸ ื˜ืจื™ื’ืขืจื– ืจื•ื˜ื™ื ื’ ืžื™ื˜ ื“ื™ื ืึทืžื™ืฉ EXECUTE.

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘
ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืœื™ื™ื–ื•ื ื’ ืื™ื– ื’ืขื•ื•ืขืŸ ื•ื ื™ื•ื•ืขืจืกืึทืœ ื’ืขื ื•ื’ ืึทื– ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืื™ื‘ืขืจื’ืขื–ืขืฆื˜ ืฆื• ืึทืœืข ื˜ื™ืฉืŸ:

  • ืึท ืœื™ื™ื“ื™ืง "ื›ืขื“ืขืจ" ืคืึธื˜ืขืจ ื˜ื™ืฉ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจืงืœืขืจื˜, ื•ื•ืึธืก ื“ื™ืกืงืจื™ื™ื‘ื“ ืึทืœืข ื ื™ื™ื˜ื™ืง ื™ื ื“ืขืงืกื™ื– ืื•ืŸ ื˜ืจื™ื’ืขืจื–.
  • ื“ื™ ืจืขืงืึธืจื“ ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ืก ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’ ืื™ื– ื’ืขืžืื›ื˜ ืื™ืŸ ื“ื™ "ื•ื•ืึธืจืฆืœ" ื˜ื™ืฉ, ืื•ืŸ ื™ื ืขื•ื•ื™ื™ื ื™ืง ื ื™ืฆืŸ ืจื•ื˜ื™ื ื’ ืฆื™ื ื’ืœ BEFORE INSERT ื“ื™ ืจืขืงืึธืจื“ ืื™ื– "ืคื™ื–ื™ืงืœื™" ื™ื ืกืขืจื˜ืึทื“ ืื™ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ืึธืคึผื˜ื™ื™ืœื•ื ื’. ืื•ื™ื‘ ืขืก ืื™ื– ื ืึธืš ื ื™ื˜ ืึทื–ืึท ื–ืึทืš, ืžื™ืจ ื’ืขื›ืืคื˜ ืึท ื•ื™ืกื ืขื ืื•ืŸ ...
  • โ€ฆ ื“ื•ืจืš ื ื•ืฆืŸ CREATE TABLE ... (LIKE ... INCLUDING ...) ืื™ื– ื‘ืืฉืืคืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืžื•ืกื˜ืขืจ ืคื•ืŸ ื“ื™ ืคืึธื˜ืขืจ ื˜ื™ืฉ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืžื™ื˜ ืึท ืจื™ืกื˜ืจื™ืงืฉืึทืŸ ืื•ื™ืฃ ื“ื™ ื’ืขื‘ืขื˜ืŸ ื“ืึทื˜ืขืึทื–ื•ื™ ืึทื– ื•ื•ืขืŸ ื“ืึทื˜ืŸ ืื™ื– ืจื™ื˜ืจื™ื•ื•ื“, ืœื™ื™ืขื ืขืŸ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื‘ืœื•ื™ื– ืื™ืŸ ืขืก.

PG10: ืขืจืฉื˜ืขืจ ืคึผืจื•ื•ื•ืŸ

ืึธื‘ืขืจ ืฆืขื˜ื™ื™ืœื•ื ื’ ื“ื•ืจืš ื™ืจื•ืฉื” ืื™ื– ื›ื™ืกื˜ืึธืจื™ืงืœื™ ื ื™ืฉื˜ ืคึผืึทืกื™ืง ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืึทืŸ ืึทืงื˜ื™ื•ื• ืฉืจื™ื™ึทื‘ืŸ ื˜ื™ื™ึทืš ืึธื“ืขืจ ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืงื™ื ื“ ืคึผืึทืจื˜ื™ืฉืึทื ื–. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงืขื ืขืŸ ืฆื•ืจื™ืงืจื•ืคืŸ ืึทื– ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืกืขืœื™ื ื’ ื“ื™ ืคืืจืœืื ื’ื˜ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื”ืื˜ ืงื•ื•ืึทื“ืจืึทื˜ื™ืง ืงืึทืžืคึผืœืขืงืกื™ื˜ื™, ืึทื– ืขืก ืึทืจื‘ืขื˜ ืžื™ื˜ 100+ ืกืขืงืฉืึทื ื–, ืื™ืจ ื–ื™ืš ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ...

ืื™ืŸ PG10 ื“ืขื ืกื™ื˜ื•ืึทืฆื™ืข ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ืึธืคึผื˜ื™ืžื™ื–ืขื“ ื“ื•ืจืš ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืฉื˜ื™ืฆืŸ ื’ืขื‘ื•ื™ืจืŸ ืฆืขื˜ื™ื™ืœื•ื ื’. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืžื™ื“ ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ืฆื•ืœื™ื™ื’ืŸ ืขืก ืžื™ื“ ื ืึธืš ืžื™ื™ื’ืจื™ื™ื˜ื™ื ื’ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ, ืึธื‘ืขืจ ...

ื•ื•ื™ ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ื ืึธืš ื“ื™ื’ื™ื ื’ ื“ื•ืจืš ื“ื™ ืžืึทื ื•ืึทืœ, ื“ื™ ื ื™ื™ื˜ื™ื•ื•ืœื™ ืคึผืึทืจื˜ื™ืฉืึทื ื“ ื˜ื™ืฉ ืื™ืŸ ื“ืขื ื•ื•ืขืจืกื™ืข ืื™ื–:

  • ืฉื˜ื™ืฆื˜ ื ื™ืฉื˜ ืื™ื ื“ืขืงืก ื“ื™ืกืงืจื™ืคึผืฉืึทื ื–
  • ื˜ื•ื˜ ื ื™ืฉื˜ ืฉื˜ื™ืฆืŸ ื˜ืจื™ื’ืขืจื– ืื•ื™ืฃ ืขืก
  • ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื•ื•ืขืจ ืขืก ื™ื– ืก "ืึธืคึผืฉื˜ืึทืžืœื™ื ื’"
  • ื˜ืึธืŸ ื ื™ื˜ ืฉื˜ื™ืฆืŸ INSERT ... ON CONFLICT
  • ืงืขื ืขืŸ ื ื™ืฉื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ

ืžื™ ืจ ื”ืื‘ ืŸ ื‘ืืงื•ืžืข ืŸ ื ืฐืฒื˜ื™ืง ืŸ ืงืœืืค ืŸ ืื•ื™ืค ืŸ ืฉื˜ืขืจืŸ , ืžื™ ื˜ ื ื’ืจืื‘ืข , ื”ืื‘ ืŸ ืžื™ ืจ ืคืืจืฉื˜ืื ืขืŸ , ื ื– ืกืณืฐืืœ ื˜ ืื•ืžืžืขื’ืœืข ืš ืฆ ื• ื˜ืืŸ , ื ืŸ ืžืื“ื™ืฆื™ ืข ื“ ื™ ืืคืœื™ืงืืฆื™ืข , ืื• ืŸ ืžื™ ืจ ื”ืื‘ ืŸ ื–ื™ ืš ืืคื’ืขืฉื˜ืขืœ ื˜ ื“ ื™ ืฐืฒื˜ืขืจื“ื™ืง ืข ืคืืจืฉื•ื ื’ืขืŸ .

PG10: ืฆื•ื•ื™ื™ื˜ืข ื’ืขืœืขื’ื ื”ื™ื™ื˜

ืึทื–ื•ื™, ืžื™ืจ ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืื•ื™ืคื’ืขืฉื˜ืื ืขืŸ ืื™ื™ื ืขืจ ื“ื•ืจืš ืื™ื™ื ืขืจ:

  1. ื•ื•ื™ื™ึทืœ ื˜ืจื™ื’ืขืจื– ืื•ืŸ ON CONFLICT ืžื™ืจ ื’ืขืคื•ื ืขืŸ ืึทื– ืžื™ืจ ื ืึธืš ื“ืึทืจืคึฟืŸ ื–ื™ื™ ื“ืึธ ืื•ืŸ ื“ืึธืจื˜, ืึทื–ื•ื™ ืžื™ืจ ื’ืขืžืื›ื˜ ืึท ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื ืข ืฆื• ืึทืจื‘ืขื˜ืŸ ื–ื™ื™ ืื•ื™ืก ืคืจืืงืกื™ ื˜ื™ืฉ.
  2. ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ "ืจืึธื•ื˜ื™ื ื’" ืื™ืŸ ื˜ืจื™ื’ืขืจื– - ื“ืึธืก ืื™ื–, ืคึฟื•ืŸ EXECUTE.
  3. ื–ื™ื™ ื”ืื‘ืŸ ืขืก ืืจื•ื™ืกื’ืขื ื•ืžืขืŸ ื‘ืื–ื•ื ื“ืขืจ ืžื•ืกื˜ืขืจ ื˜ื™ืฉ ืžื™ื˜ ืึทืœืข ื™ื ื“ืขืงืกื™ื–ืึทื–ื•ื™ ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืืคื™ืœื• ืคืึธืจืฉื˜ืขืœืŸ ืื™ืŸ ื“ื™ ืคึผืจืึทืงืกื™ ื˜ื™ืฉ.

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘
ืฆื•ื ืกื•ืฃ, ื ืึธืš ืึทืœืข ื“ืขื, ืžื™ืจ ื˜ื™ื™ืœืึทื ื“ ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ื™ืฉ ื’ืขื‘ื•ื™ืจืŸ. ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ืึท ื ื™ื™ึทืข ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ื– ื ืึธืš ืœื™ื ืงืก ืฆื• ื“ื™ ื’ืขื•ื•ื™ืกืŸ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

"ื–ืขืขืŸ" ื•ื•ืขืจื˜ืขืจื‘ื™ื›ืขืจ

ื•ื•ื™ ืื™ืŸ ืงื™ื™ืŸ ืึทื ืึทืœื™ืกื™ืก ืกื™ืกื˜ืขื, ืžื™ืจ ืื•ื™ืš ื”ืึธื‘ืŸ "ืคืืงื˜ืŸ" ืื•ืŸ "ืงืึทืฅ" (ื•ื•ืขืจื˜ืขืจื‘ื™ื›ืขืจ). ืื™ ืŸ ืื•ื ื“ื–ืข ืจ ืคืืœ , ืื™ ืŸ ื“ืข ืจ ื“ืื–ื™ืงืข ืจ ืคืขืื™ื’ืงื™ื™ื˜ , ื”ืื‘ ืŸ ื– ืฒ ื’ืขื”ืื ื“ืœื˜ , ืœืžืฉืœ . ืžื•ืกื˜ืขืจ ื’ื•ืฃ ืขื ืœืขืš ืคึผืึทืžืขืœืขืš ืงื•ื•ื™ืจื™ื– ืึธื“ืขืจ ื“ื™ ื˜ืขืงืกื˜ ืคื•ืŸ ื“ื™ ืึธื ืคึฟืจืขื’ ื–ื™ืš.

"ืคืืงื˜ืŸ" ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืกืขืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ื“ื•ืจืš ื˜ืึธื’, ืึทื–ื•ื™ ืžื™ืจ ืจื•ื™ืง ืื•ื™ืกื’ืขืžืขืงื˜ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ ืกืขืงืฉืึทื ื–, ืื•ืŸ ื–ื™ื™ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ืึทืจืŸ ืื•ื ื“ื– (ืœืึธื’ืก!). ืื‘ืขืจ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ื•ื•ืขืจื˜ืขืจื‘ื•ืš ...

ื ื™ื˜ ืฆื• ื–ืึธื’ืŸ ืึทื– ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื–ื™ื™, ืึธื‘ืขืจ ื‘ืขืขืจืขืš 100 ื˜ื‘ ืคื•ืŸ "ืคืืงื˜ืŸ" ืจื™ื–ืึทืœื˜ื™ื“ ืื™ืŸ ืึท 2.5 ื˜ื‘ ื•ื•ืขืจื˜ืขืจื‘ื•ืš. ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ื•ื™ืกืžืขืงืŸ ืขืคึผืขืก ืคื•ืŸ ืึทื–ืึท ืึท ื˜ื™ืฉ, ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืงืึธืžืคึผืจืขืก ืขืก ืื™ืŸ ืึท ื’ืขื ื•ื’ ืฆื™ื™ื˜, ืื•ืŸ ืฉืจื™ื™ื‘ืŸ ืฆื• ืขืก ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ื’ืขื•ื•ืืจืŸ ืกืœืึธื•ืขืจ.

ื•ื•ื™ ืึท ื•ื•ืขืจื˜ืขืจื‘ื•ืš... ืื™ืŸ ืื™ื ื–ืึธืœ ื™ืขื“ืขืจ ืคึผืึธื–ื™ืฆื™ืข ืคึฟืึธืจื’ืขืฉื˜ืขืœื˜ ื•ื•ืขืจืŸ ืคึผื•ื ืงื˜ ืึทืžืึธืœ... ืื•ืŸ ื“ืึธืก ืื™ื– ืจื™ื›ื˜ื™ืง, ืึธื‘ืขืจ!.. ืงื™ื™ื ืขืจ ื”ืขืจื˜ ืื•ื ื“ื– ื ื™ืฉื˜ ืึธืคึผ ืคึฟื•ืŸ ื”ืึธื‘ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื•ื•ืขืจื˜ืขืจื‘ื•ืš ืคึฟืึทืจ ื™ืขื“ืขืจ ื˜ืึธื’! ื™ืึธ, ื“ืึธืก ื‘ืจืขื ื’ื˜ ืึท ื–ื™ื›ืขืจ ื™ื‘ืขืจื™ืงื™ื™ึทื˜, ืึธื‘ืขืจ ืขืก ืึทืœืึทื•ื–:

  • ืฉืจื™ื™ึทื‘ืŸ / ืœื™ื™ืขื ืขืŸ ืคืึทืกื˜ืขืจ ืจืขื›ื˜ ืฆื• ืงืœืขื ืขืจืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื’ืจื™ื™ืก
  • ืคืึทืจื ื•ืฆืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ื–ื›ึผืจื•ืŸ ื“ื•ืจืš ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืžืขืจ ืกืึธืœื™ื“ ื™ื ื“ืขืงืกื™ื–
  • ืงืจืึธื ื•ื•ื™ื™ื ื™ืงืขืจ ื“ืึทื˜ืŸ ืจืขื›ื˜ ืฆื• ื“ืขืจ ืคื™ื™ื™ืงื™ื™ึทื˜ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ืงืึธืžืคึผืœืขืงืก ืคื•ืŸ ืžื™ื˜ืœืขืŸ ืงืคึผื• ืžืึทืกืข ื“ื™ืงืจื™ืกื˜ ืžื™ื˜ ~ 30%, ื“ื™ืกืง ืžืึทืกืข ืžื™ื˜ ~ 50%:

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘
ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ื ืึธืจ ืžื™ื˜ ื•ื•ื™ื™ื ื™ืงืขืจ ืžืึทืกืข.

#2. ื“ืึทื˜ืึทื‘ืึทืกืข ืขื•ื•ืึธืœื•ืฆื™ืข ืื•ืŸ ืจืขืคืึทืงื˜ืึธืจื™ื ื’

ืึทื–ื•ื™ ืžื™ืจ ื’ืขื–ืขืฆื˜ ืื•ื™ืฃ ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ื™ืขื“ืขืจ ื˜ืึธื’ ื”ืื˜ ื–ื™ื™ึทืŸ ืื™ื™ื’ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืžื™ื˜ ื“ืึทื˜ืŸ. ืœืžืขืฉื”, CHECK (dt = '2018-10-12'::date) - ืื•ืŸ ืขืก ืื™ื– ืึท ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’ ืฉืœื™ืกืœ ืื•ืŸ ื“ื™ ืฆื•ืฉื˜ืึทื ื“ ืคึฟืึทืจ ืึท ืจืขืงืึธืจื“ ืฆื• ืคืึทืœืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึธืคึผื˜ื™ื™ืœื•ื ื’.

ื–ื™ื ื˜ ืึทืœืข ืจื™ืคึผืึธืจืฅ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื“ื™ื ืกื˜ ื–ืขื ืขืŸ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื“ืึทื˜ืข, ื“ื™ ื™ื ื“ืขืงืกื™ื– ืคึฟืึทืจ ื–ื™ื™ ื–ื™ื ื˜ "ื ื™ื˜-ืคึผืึทืจื˜ื™ื˜ืฉืึทื ื“ ืฆื™ื™ื˜" ื–ืขื ืขืŸ ืึทืœืข ื˜ื™ื™ืคึผืก (ืกืขืจื•ื•ื™ืจืขืจ, ื“ืึทื˜ืข, ืคึผืœืึทืŸ ืžื•ืกื˜ืขืจ), (ืกืขืจื•ื•ื™ืจืขืจ, ื“ืึทื˜ืข, ืคึผืœืึทืŸ ื ืึธื“ืข), (ื“ืึทื˜ืข, ื˜ืขื•ืช ืงืœืึทืก, ืกืขืจื•ื•ื™ืจืขืจ), ...

ืื‘ืขืจ ืื™ืฆื˜ ื–ื™ื™ ืœืขื‘ืŸ ืื•ื™ืฃ ื™ืขื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื“ื™ื™ืŸ ืงืืคื™ืขืก ื™ืขื“ืขืจ ืึทื–ืึท ืื™ื ื“ืขืงืก... ืื•ืŸ ืื™ืŸ ื™ืขื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื“ืึทื˜ืข ืื™ื– ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง... ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืื™ืฆื˜ ืžื™ืจ ื–ืขื ืขืŸ ืื™ืŸ ื™ืขื“ืขืจ ืึทื–ืึท ืื™ื ื“ืขืงืก ืคืฉื•ื˜ ืึทืจื™ื™ึทืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง ื•ื•ื™ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืคืขืœื“ืขืจ, ื•ื•ืึธืก ื™ื ืงืจื™ืกื™ื– ื‘ื™ื™ื“ืข ื–ื™ื™ึทืŸ ื‘ืึทื ื“ ืื•ืŸ ื“ื™ ื–ื•ื›ืŸ ืฆื™ื™ื˜ ืคึฟืึทืจ ืื™ื, ืึธื‘ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื‘ืจืขื ื’ืขืŸ ืงื™ื™ืŸ ืจืขื–ื•ืœื˜ืึทื˜. ื“ื™ ื’ืจืื‘ืข ื”ืื‘ืŸ ื–ื™ื™ ืื™ื‘ืขืจื’ืขืœืื–ื˜ ืคืืจ ื–ื™ืš, ืื•ืค...

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘
ื“ืขืจ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืื™ื– ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ - ืคึผืฉื•ื˜ ืึทืจืึธืคึผื ืขืžืขืŸ ื“ื™ ื“ืึทื˜ืข ืคืขืœื“ ืคื•ืŸ ืึทืœืข ื™ื ื“ืขืงืกื™ื– ืื•ื™ืฃ ืฆืขื˜ื™ื™ืœื˜ ื˜ื™ืฉืŸ. ืœื•ื™ื˜ ืื•ื ื“ื–ืขืจ ื•ื•ืึทืœื™ื•ืžื–, ื“ื™ ื’ืขื•ื•ื™ื ืก ืื™ื– ื•ื•ืขื’ืŸ 1 ื˜ื‘ / ื•ื•ืึธืš!

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ื˜ืึธืŸ ืึทื– ื“ืขื ื˜ืขืจืึทื‘ื™ื˜ืข ื ืึธืš ื”ืื˜ ืฆื• ื–ื™ื™ืŸ ืจืขืงืึธืจื“ืขื“ ืขืคืขืก. ื“ืึธืก ื”ื™ื™ืกื˜, ืžื™ืจ ืื•ื™ืš ื“ืขืจ ื“ื™ืกืง ื–ืึธืœ ืื™ืฆื˜ ืœืึธื“ืŸ ื•ื•ื™ื™ื ื™ืงืขืจ! ื“ืืก ื‘ื™ืœื“ ื•ื•ื™ื™ื–ื˜ ืงืœืืจ ื“ื™ ื•ื•ื™ืจืงื•ื ื’ ื‘ืืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืจื™ื™ื ื™ืงื•ื ื’, ืฆื• ื•ื•ืึธืก ืžื™ืจ ื’ืขื˜ืจื™ื™ึท ืึท ื•ื•ืึธืš:

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

#3. "ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ" ื“ื™ ืฉืคึผื™ืฅ ืžืึทืกืข

ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื’ืจื•ื™ืก ืงืึธืคึผื“ืจื™ื™ืขื ื™ืฉ ืคื•ืŸ ืœืึธื•ื“ื™ื“ ืกื™ืกื˜ืขืžืขืŸ ืื™ื– ื™ื‘ืขืจื™ืง ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืขื˜ืœืขื›ืข ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคืŸ ืขืก. ืžืืœ "ื•ื•ื™ื™ึทืœ ื–ื™ื™ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื‘ืืžืขืจืงื˜", ืžืืœ "ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืจื™ื ื’ืขืจ ืึทื–ื•ื™", ืึธื‘ืขืจ ื’ื™ื›ืขืจ ืึธื“ืขืจ ืฉืคึผืขื˜ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ ืขืก.

ื–ืืœ ืก ืคืืจื’ืจืขืกืขืจ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ืœื“ ืื•ืŸ ื–ืขืŸ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื“ื™ืกืง "ืคึผืึทืžืคึผืก" ืื•ื ื˜ืขืจ ื“ื™ ืžืึทืกืข ืžื™ื˜ ื˜ืึธืคึผืœ ืึทืžืคึผืœื™ื˜ื•ื“ ืฆื•ื•ื™ืฉืŸ ืฉื›ื™ื™ื ื™ืฉ ืกืึทืžืคึผืึทืœื–, ื•ื•ืึธืก ืงืœืืจ "ืกื˜ืึทื˜ื™ืกื˜ื™ืฉ" ื–ืึธืœ ื ื™ืฉื˜ ืคึผืึทืกื™ืจืŸ ืžื™ื˜ ืึทื–ืึท ืึท ื ื•ืžืขืจ ืคื•ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื–:

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

ื“ืึธืก ืื™ื– ื’ืึทื ืฅ ื’ืจื™ื ื’ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ. ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืื ื’ืขื”ื•ื™ื‘ืŸ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื›ึผืžืขื˜ 1000 ืกืขืจื•ื•ืขืจืก, ื™ืขื“ืขืจ ืื™ื– ืคึผืจืึทืกืขืกื˜ ื“ื•ืจืš ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืœืึทื“ื–ืฉื™ืงืึทืœ ืคืึธื“ืขื, ืื•ืŸ ื™ืขื“ืขืจ ืคืึธื“ืขื ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืฆื• ื–ื™ื™ืŸ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ืึท ื–ื™ื›ืขืจ ืึธืคื˜ืงื™ื™ึทื˜, ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

setInterval(sendToDB, interval)

ื“ื™ ืคึผืจืึธื‘ืœืขื ื“ืึธ ืœื™ื’ื˜ ื“ื•ื•ืงื ืื™ืŸ ื“ืขื ืคืึทืงื˜ ืึทื– ืึทืœืข ืคึฟืขื“ืขื ืึธื ื”ื™ื™ื‘ืŸ ืื™ืŸ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืึทื–ื•ื™ ื–ื™ื™ืขืจ ืฉื™ืงื˜ ืฆื™ื™ื˜ ื›ึผืžืขื˜ ืฉื˜ืขื ื“ื™ืง ืฆื•ื ื•ื™ืคืคืึทืœืŸ "ืฆื• ื“ื™ ืคื•ื ื˜." ืื•ืคืก #2...

ืฆื•ืž ื’ืœื™ืง, ื“ืึธืก ืื™ื– ื’ืึทื ืฅ ื’ืจื™ื ื’ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ, ืึทื“ื™ื ื’ ืึท "ืจืึทื ื“ืึธื" ืœื•ื™ืคืŸ-ืึทืจื•ื™ืฃ ืœื•ื™ื˜ ืฆื™ื™ื˜:

setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))

#4. ืžื™ืจ ืงืึทืฉ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ

ื“ื™ ื“ืจื™ื˜ ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ ื”ื™ื’ื”ืœืึธืึทื“ ืคึผืจืึธื‘ืœืขื ืื™ื– ืงื™ื™ืŸ ืงืึทืฉ ืฐืื• ืขืจ ืื™ื– ืงืขืŸ ื–ื™ื™ืŸ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ื’ืขืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ืคึผืœืึทืŸ ื ืึธื•ื“ื– (ืึทืœืข ื“ื™ Seq Scan on users), ืึธื‘ืขืจ ืžื™ื“ ื˜ืจืึทื›ื˜ืŸ ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ, ืคึฟืึทืจ ื“ื™ ืจื•ื‘ึฟ ื˜ื™ื™ืœ, ื“ื™ ื–ืขืœื‘ืข - ื–ื™ื™ ืคืืจื’ืขืกืŸ.

ื ื™ื™ืŸ, ืคื•ืŸ ืงื•ืจืก, ื’ืึธืจื ื™ืฉื˜ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื•ื•ื™ื“ืขืจ, ื“ืึธืก ืงืึทื˜ืก ืึทื•ื•ืขืง ื“ื™ ืฆื™ื ื’ืœ ืžื™ื˜ INSERT ... ON CONFLICT DO NOTHING. ืึธื‘ืขืจ ื“ื™ ื“ืึทื˜ืŸ ื ืึธืš ืจื™ื˜ืฉืึทื– ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ืŸ ืขืก ืื™ื– ื•ืžื ื™ื™ื˜ื™ืง ืœื™ื™ืขื ืขืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืคึฟืึทืจ ืงืึธื ืคืœื™ืงื˜ ื”ืึธื‘ืŸ ืฆื• ื˜ืึธืŸ. ืื•ืคืก #3...

ื“ืขืจ ื—ื™ืœื•ืง ืื™ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืงืึธืจื“ืก ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ื™ื“ืขืจ / ื ืึธืš ืงืึทื˜ืฉื™ื ื’ ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ ืื™ื– ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’:

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

ืื•ืŸ ื“ืึธืก ืื™ื– ื“ื™ ืึทืงืึทืžืคึผืึทื ื™ื™ื ื’ ืงืึทืคึผ ืื™ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืžืึทืกืข:

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

ืื™ืŸ ื’ืึทื ืฅ

"ื˜ืขืจืึทื‘ื™ื˜ืข-ืคึผืขืจ-ื˜ืึธื’" ื ืึธืจ ืกืึธื•ื ื“ืก ืกืงืขืจื™. ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ืึทืœืฅ ืจืขื›ื˜, ื“ืึธืก ืื™ื– ืคึผื•ื ืงื˜ 2^40 ื‘ื™ื˜ืขืก / 86400 ืกืขืงื•ื ื“ืขืก = ~12.5 ืžื‘ / sืึทื– ืืคื™ืœื• ื“ืขืกืงื˜ืึทืคึผ IDE ืกืงืจื•ื– ื’ืขื”ืืœื˜ืŸ. ๐Ÿ™‚

ืึธื‘ืขืจ ืขืžืขืก, ืืคื™ืœื• ืžื™ื˜ ืึท ืฆืขื ืคืึธื•ืœื“ "ืกืงื™ื•" ืคื•ืŸ ื“ื™ ืžืึทืกืข ื‘ืขืฉืึทืก ื“ืขื ื˜ืึธื’, ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ื˜ืจืขืคืŸ ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ืžืึธื“ืขืจืŸ ืกืกื“ืก.

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ PostgreSQL ืื•ื™ืฃ ืกื•ื‘ืœื™ื™ื˜: 1 ื‘ืึทืœืขื‘ืึธืก, 1 ื˜ืึธื’, 1 ื˜ื‘

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’