ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π», ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΏΠΎΠ²ΡΡ
ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ²
#1. Π‘Π΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π‘ΡΠ°ΡΡΡ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΡΠΎΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ
Β«ΠΠ΅Π»Π° Π΄Π°Π²Π½ΠΎ ΠΌΠΈΠ½ΡΠ²ΡΠΈΡ Π΄Π½Π΅ΠΉ…Β»
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΡΠΊΠΈΠΉ MVP, Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠ°ΡΡΠΎΠ²Π°Π» ΠΏΠΎΠ΄ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ β ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄Π΅ΡΡΡΠΊΠ° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π±ΡΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Ρβ¦ ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ»ΠΎ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΠΎΡΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΠΈ ΠΏΠΎΠΏΡΡΠ°Π²ΡΠΈΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1.5TB, ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΠΆΠΈΡΡ ΡΠ°ΠΊ Π΄Π°Π»ΡΡΠ΅ Ρ ΠΎΡΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΆ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΡΠ΅ΠΌΠ΅Π½Π° Π±ΡΠ»ΠΈ ΠΏΠΎΡΡΠΈ ΡΡΠΎ Π±ΡΠ»ΠΈΠ½Π½ΡΠ΅, Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ PostgreSQL 9.x, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄Π΅Π»Π°ΡΡ Β«Π²ΡΡΡΠ½ΡΡΒ» β ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ ΡΠΎΡΡΠΈΠ½Π³Π° Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ EXECUTE
.
ΠΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π΅ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ:
- ΠΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΠΏΡΡΡΠ°Ρ Β«Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½Π°ΡΒ» ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ.
- ΠΠ°ΠΏΠΈΡΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² Β«ΠΊΠΎΡΠ½Π΅Π²ΡΡΒ» ΡΠ°Π±Π»ΠΈΡΡ, Π° Π²Π½ΡΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΠΎΡΡΠΈΠ½Π³Π°
BEFORE INSERT
Π·Π°ΠΏΠΈΡΡ Β«ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΒ» Π²ΡΡΠ°Π²Π»ΡΠ»Π°ΡΡ Π² Π½ΡΠΆΠ½ΡΡ ΡΠ΅ΠΊΡΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ β ΠΌΡ Π»ΠΎΠ²ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ … - β¦ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»Π°ΡΡ ΡΠ΅ΠΊΡΠΈΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π½ΡΠΆΠ½ΡΡ Π΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π΅ΠΉ.CREATE TABLE ... (LIKE ... INCLUDING ...)
PG10: ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ°
ΠΠΎ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΅ΠΊΡΠΈΠΉ-ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ±ΠΎΡΠ° Π½ΡΠΆΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅Π» ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ 100+ ΡΠ΅ΠΊΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠ°ΠΌΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊβ¦
Π PG10 ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ
ΠΠ°ΠΊ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠ°ΠΏΡΠ²Π°Π½ΠΈΡ ΠΌΠ°Π½ΡΠ°Π»Π°, Π½Π°ΡΠΈΠ²Π½ΠΎ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
- Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π° Π½Π΅ΠΉ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ²
- Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΌΠ° Π½ΠΈΡΡΠΈΠΌ Β«ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌΒ»
- Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
INSERT ... ON CONFLICT
- Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΡΠ΅ΠΊΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
ΠΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΠΎ Π»Π±Ρ Π³ΡΠ°Π±Π»ΡΠΌΠΈ, ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ, ΠΈ ΠΎΡΠ»ΠΎΠΆΠΈΠ»ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΠΎΠ»Π³ΠΎΠ΄Π°.
PG10: Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π½Ρ
ΠΡΠ°ΠΊ, ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΡΠ΅ΡΠ°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ:
- ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΈ
ON CONFLICT
Π½Π°ΠΌ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΊΠΎΠ΅-Π³Π΄Π΅ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½ΡΠΆΠ½Ρ, Π΄Π»Ρ ΠΈΡ ΠΎΡΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ°Π±Π»ΠΈΡΡ. - ΠΠ·Π±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΎΡ Β«ΡΠΎΡΡΠΈΠ½Π³Π°Β» Π² ΡΡΠΈΠ³Π³Π΅ΡΠ°Ρ
β ΡΠΎ Π΅ΡΡΡ ΠΎΡ
EXECUTE
. - ΠΡΠ½Π΅ΡΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ°Π±Π»ΠΈΡΡ-ΡΠ°Π±Π»ΠΎΠ½ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π½Π° ΠΏΡΠΎΠΊΡΠΈ-ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ, ΡΠΆΠ΅ Π½Π°ΡΠΈΠ²Π½ΠΎ ΠΎΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΏΠΎΠΊΠ° ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π° ΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Β«ΠΠΈΠ»ΠΈΠΌΒ» ΡΠ»ΠΎΠ²Π°ΡΠΈ
ΠΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΉ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Ρ Π½Π°Ρ ΡΠΎΠΆΠ΅ Π±ΡΠ»ΠΈ Β«ΡΠ°ΠΊΡΡΒ» ΠΈ Β«ΡΠ°Π·ΡΠ΅Π·ΡΒ» (ΡΠ»ΠΎΠ²Π°ΡΠΈ). Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΡΡΡΠΏΠ°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Β«Π€Π°ΠΊΡΡΒ» Ρ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π΄Π½ΡΠΌ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠ΄Π°Π»ΡΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ, ΠΈ ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½Π΅ ΠΌΠ΅ΡΠ°Π»ΠΈ (Π»ΠΎΠ³ΠΈ ΠΆΠ΅!). Π Π²ΠΎΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ Π±Π΅Π΄Π°β¦
ΠΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΡ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 100TB Β«ΡΠ°ΠΊΡΠΎΠ²Β» ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π° 2.5TB. ΠΠ· ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΡΠ΄Π°Π»ΡΠ΅ΡΡ, Π½Π΅ ΡΠΎΠΆΠΌΠ΅ΡΡ Π·Π° Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π΄Π° ΠΈ Π·Π°ΠΏΠΈΡΡ Π² Π½Π΅Π΅ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ Π²ΡΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅.
ΠΡΠΎΠ΄Π΅ ΡΠ»ΠΎΠ²Π°ΡΡβ¦ Π² Π½Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·β¦ ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎ!.. ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ! ΠΠ°, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ, Π·Π°ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΏΠΈΡΠ°ΡΡ/ΡΠΈΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅ Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ΅ΠΊΡΠΈΠΈ
- ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π·Π° ΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ
- Ρ ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ Π·Π° ΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎ CPU ΡΠΎΠΊΡΠ°ΡΠΈΠ»Π°ΡΡ Π½Π° ~30%, ΠΏΠΎ Π΄ΠΈΡΠΊΡ β Π½Π° ~50%:
ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ ΠΏΠΈΡΠ°ΡΡ Π² Π±Π°Π·Ρ ΡΠΎΠ²Π½ΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΠΏΡΠΎΡΡΠΎ Ρ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ.
#2. ΠΠ²ΠΎΠ»ΡΡΠΈΡ ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΠ
ΠΡΠ°ΠΊ, ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π΅ΡΡΡ ΡΠ²ΠΎΡ ΡΠ΅ΠΊΡΠΈΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, CHECK (dt = '2018-10-12'::date)
β ΠΈ Π΅ΡΡΡ ΠΊΠ»ΡΡ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅ΠΊΡΠΈΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΠΎΡΡΠ΅ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΡΡΠΎΡΡΡΡ Π² ΡΠ°Π·ΡΠ΅Π·Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΡ, ΡΠΎ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΅ΡΠ΅ Ρ Β«Π½Π΅ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Β» Π΄Π»Ρ Π½ΠΈΡ Π±ΡΠ»ΠΈ Π²ΡΠ΅ ΡΠΈΠΏΠ° (Π‘Π΅ΡΠ²Π΅Ρ, ΠΠ°ΡΠ°, Π¨Π°Π±Π»ΠΎΠ½ ΠΏΠ»Π°Π½Π°), (Π‘Π΅ΡΠ²Π΅Ρ, ΠΠ°ΡΠ°, Π£Π·Π΅Π» ΠΏΠ»Π°Π½Π°), (ΠΠ°ΡΠ°, ΠΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π‘Π΅ΡΠ²Π΅Ρ),β¦
ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΆΠΈΠ²ΡΡ ΡΠ²ΠΎΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°β¦ Π Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ Π΄Π°ΡΠ° β ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°β¦ ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌ, ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ Π½Π΅ΠΌΡ, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. Π‘Π°ΠΌΠΈ ΡΠ΅Π±Π΅ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π³ΡΠ°Π±Π»ΠΈ, ΡΠΏΡβ¦
ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ β ΠΏΡΠΎΡΡΠΎ ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π΅ Ρ Π΄Π°ΡΠΎΠΉ ΠΈΠ· Π²ΡΠ΅Ρ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π½Π° ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡΠ°Ρ
. ΠΡΠΈ Π½Π°ΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΌΠ°Ρ
Π²ΡΠΈΠ³ΡΡΡ β ΠΏΠΎΡΡΠ΄ΠΊΠ° 1TB/Π½Π΅Π΄Π΅Π»Ρ!
Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠΎΡ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ Π΅ΡΠ΅ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ. Π’ΠΎ Π΅ΡΡΡ ΠΌΡ Π΅ΡΠ΅ ΠΈ Π΄ΠΈΡΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π³ΡΡΠ·ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅! ΠΠ° ΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π΅Π½ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΏΠΎΡΠ²ΡΡΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Π»Ρ:
#3. Β«Π Π°Π·ΠΌΠ°Π·ΡΠ²Π°Π΅ΠΌΒ» ΠΏΠΈΠΊΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ
ΠΠ΄Π½Π° ΠΈΠ· Π±ΠΎΠ»ΡΡΠΈΡ Π±Π΅Π΄ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ β ΡΡΠΎ ΠΈΠ·Π±ΡΡΠΎΡΠ½Π°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ . ΠΠ½ΠΎΠ³Π΄Π° Β«ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈΒ», ΠΈΠ½ΠΎΠ³Π΄Π° Β«ΡΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅Β», Π½ΠΎ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡ Π½Π΅Π΅ ΠΈΠ·Π±Π°Π²Π»ΡΡΡΡΡ.
ΠΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ β ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π΄ΠΈΡΠΊ Ρ Π½Π°Ρ Β«ΠΊΠ°ΡΠ°Π΅ΡΒ» ΠΏΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ Ρ Π΄Π²ΡΠΊΡΠ°ΡΠ½ΠΎΠΉ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ ΠΎΡΡΡΠ΅ΡΠ°ΠΌΠΈ, ΡΠ΅Π³ΠΎ ΡΠ²Π½ΠΎ Β«ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΒ» Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π£ Π½Π°Ρ Π½Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π±ΡΠ»ΠΎ Π·Π°Π²Π΅Π΄Π΅Π½ΠΎ ΡΠΆΠ΅ ΠΏΠΎΡΡΠΈ 1000 ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² Π±Π°Π·Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
setInterval(sendToDB, interval)
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡ ΠΊΡΠΎΠ΅ΡΡΡ ΡΠΎΠ²Π½ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΠ°ΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² ΠΎΠ΄Π½ΠΎ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Ρ Π½ΠΈΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Β«Π΄ΠΎ ΡΠΎΡΠΊΠΈΒ». Π£ΠΏΡ β2β¦
Π ΡΡΠ°ΡΡΡΡ, ΠΏΡΠ°Π²ΠΈΡΡΡ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Β«ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉΒ» ΡΠ°Π·Π±Π΅ΠΆΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))
#4. ΠΡΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ
Π’ΡΠ΅ΡΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° highload β ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΡΡΠ° ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π² ΡΠ°Π·ΡΠ΅Π·Π΅ ΡΠ·Π»ΠΎΠ² ΠΏΠ»Π°Π½Π° (Π²ΡΠ΅ ΡΡΠΈ Seq Scan on users
), Π½ΠΎ ΡΡΠ°Π·Ρ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ, Π² ΠΌΠ°ΡΡΠ΅, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ β Π·Π°Π±ΡΠ»ΠΈ.
ΠΠ΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π² Π±Π°Π·Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΏΠΈΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΡΡΠ΅ΠΊΠ°Π΅Ρ ΡΡΠΈΠ³Π³Π΅Ρ Ρ INSERT ... ON CONFLICT DO NOTHING
. ΠΠΎ Π΄ΠΎ Π±Π°Π·Ρ-ΡΠΎ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»Π΅ΡΠ°ΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, Π΄Π° Π΅ΡΠ΅ ΠΈ Π»ΠΈΡΠ½Π΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ. Π£ΠΏΡ β3β¦
Π Π°Π·Π½ΠΈΡΠ° ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π² Π±Π°Π·Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄ΠΎ/ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°:
Π ΡΡΠΎ β ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅:
ΠΡΠΎΠ³ΠΎ
Β«Π’Π΅ΡΠ°Π±Π°ΠΉΡ-Π²-ΡΡΡΠΊΠΈΒ» ΡΠΎΠ»ΡΠΊΠΎ Π·Π²ΡΡΠΈΡ ΡΡΡΠ°ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΠΎ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ 2^40 Π±Π°ΠΉΡ / 86400 ΡΠ΅ΠΊΡΠ½Π΄ = ~12.5MB/s, ΡΡΠΎ Π΄Π΅ΡΠΆΠ°Π»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ IDE-Π²ΠΈΠ½ΡΡ. π
Π Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ, ΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π΄Π΅ΡΡΡΠΈΠΊΡΠ°ΡΠ½ΠΎΠΌ Β«ΠΏΠ΅ΡΠ΅ΠΊΠΎΡΠ΅Β» Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ, Π²Ρ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ SSD.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com