postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Π§Π΅ΠΌ PostgreSQL Π»ΡƒΡ‡ΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… SQL Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π§Π°ΡΡ‚ΡŒ 1

БСгодня Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ прСимущСствах Postgres ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π­Ρ‚Ρƒ Ρ‚Π΅ΠΌΡƒ ΠΌΡ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ раскроСм Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π½Π° PG Day’16 Russia, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ всСго Π΄Π²Π° мСсяца.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ сСбя: Β«ΠŸΠΎΡ‡Π΅ΠΌΡƒ PostgreSQL?Β» Π’Π΅Π΄ΡŒ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ (Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассматривали MySQL, MariaDB ΠΈ Firebird), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ, Ρ‡Π΅Π³ΠΎ Π½Π΅Ρ‚ Ρƒ Π½ΠΈΡ…? Π’ слоганС PostgreSQL заявляСтся, Ρ‡Ρ‚ΠΎ это «Бамая продвинутая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π² ΠΌΠΈΡ€Π΅Β». ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ заявлСния.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части этой сСрии ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΌΠΎΠ΄Π΅Π»ΠΈ, структурС, Ρ‚ΠΈΠΏΠ°Ρ… ΠΈ ограничСниях Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. А Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части большС сфокусируСмся Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈ манипуляциях с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

МодСль Π΄Π°Π½Π½Ρ‹Ρ…

PostgreSQL Π½Π΅ просто рСляционная, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционная Π‘Π£Π‘Π”. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ SQL Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ MySQL, MariaDB ΠΈ Firebird.

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ характСристика ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… β€” это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… повСдСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΈ индСксы. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ нСвСроятно Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ слоТныС структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½ΠΈΠΆΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ составныС конструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ стандартными Π Π‘Π£Π‘Π”.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

БущСствуСт ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ список Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ. ΠšΡ€ΠΎΠΌΠ΅ числовых, с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, тСкстовых, Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π° Ρ‚Π°ΠΊΠΆΠ΅ мноТСства ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ), PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ uuid, Π΄Π΅Π½Π΅ΠΆΠ½ΠΎΠ³ΠΎ, пСрСчисляСмого, гСомСтричСского, Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ², сСтСвых адрСсов, Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… строк, тСкстового поиска, xml, json, массивов, ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ мСстополоТСния Π»ΠΎΠ³ΠΎΠ². БправСдливости Ρ€Π°Π΄ΠΈ стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ MySQL, MariaDB ΠΈ Firebird Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ… всС.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ адрСса

Π£ MySQL ΠΈ MariaDB Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ INET Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ сСтСвых адрСсов, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ хранСния сСтСвых адрСсов. Π£ Firebird Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ² для хранСния сСтСвых адрСсов.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, массивы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΡ‚Ρ‘ΠΌ добавлСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок ΠΊ спСцификации Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для столбца ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния ARRAY. Π Π°Π·ΠΌΠ΅Ρ€ массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½, Π½ΠΎ это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим мСню ΠΏΡ€Π°Π·Π΄Π½ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΠ½ΠΈΠΊΠ° для дСмонстрации использования массивов:

MySQL, MariaDB, ΠΈ Firebird Ρ‚Π°ΠΊ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ массивы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со строками для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива.

ГСомСтричСскиС Π΄Π°Π½Π½Ρ‹Π΅

Π“Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Π΅ быстро становятся основным Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. PostgreSQL ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство гСомСтричСских Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, ΠΊΡ€ΡƒΠ³ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ. Один ΠΈΠ· этих Ρ‚ΠΈΠΏΠΎΠ² – PATH, ΠΎΠ½ состоит ΠΈΠ· мноТСства ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ располоТСнных Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ конСчная Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ связаны) ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ конСчная Ρ‚ΠΎΡ‡ΠΊΠΈ связаны). Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΡƒΡ€ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚Ρ€ΠΎΠΏΡƒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС туристичСская Ρ‚Ρ€ΠΎΠΏΠ° β€” это пСтля, поэтому Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ конСчная Ρ‚ΠΎΡ‡ΠΊΠΈ связаны, ΠΈ, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΉ ΠΏΡƒΡ‚ΡŒ являСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ. ΠšΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ β€” Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ PostGIS для PostgreSQL дополняСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ свойства гСомСтричСских Π΄Π°Π½Π½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ пространствСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, функциями, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ индСксами. Оно обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ мСстополоТСния ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ растровыС, Ρ‚Π°ΠΊ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Оно Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с мноТСством сторонних гСопространствСнных инструмСнтов (Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… авторским ΠΏΡ€Π°Π²ΠΎΠΌ ΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ) для отобраТСния, отрисовки ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² MySQL 5.7.8 ΠΈ Π² MariaDB, начиная с вСрсии 5.3.3, Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ стандарта гСографичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ OpenGIS. Π­Ρ‚Π° вСрсия MySQL ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вСрсии MariaDB ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΌ Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹ΠΌ ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠ°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² MySQL ΠΈ MariaDB значСния Π΄Π°Π½Π½Ρ‹Ρ… сначала Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сконвСртированы Π² гСомСтричСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ простыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ вставлСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Firebird Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ гСомСтричСскиС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° JSON

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° JSON Π² PostgreSQL позволяСт Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ schema-less Π΄Π°Π½Π½Ρ‹Ρ… Π² SQL Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° структура Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ гибкости: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ структура всё Π΅Ρ‰Ρ‘ мСняСтся ΠΈΠ»ΠΈ нСизвСстно, ΠΊΠ°ΠΊΠΈΠ΅ поля Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… JSON обСспСчиваСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ коррСктности JSON, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС JSON ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, встроСнныС Π² ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ для выполнСния запросов ΠΈ манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ доступСн Ρ‚ΠΈΠΏ JSONB β€” двоичная Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JSON, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, сортировка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ сохраняСтся, вмСсто этого ΠΎΠ½ΠΈ хранятся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ сохраняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ»ΡŽΡ‡Π΅ΠΉ-Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². JSONB ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС мСста для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ проиндСксирован ΠΈ обрабатываСтся быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°.

Π’ MySQL 5.7.8 ΠΈ MariaDB 10.0.1 Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° встроСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² JSON. Но, хотя сущСствуСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для JSON, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступны Π² этих Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ JSONB Π² PostgreSQL. Firebird ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ присоСдинился ΠΊ Ρ‚Ρ€Π΅Π½Π΄Ρƒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ JSON Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ тСкста.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

Если Π²Π΄Ρ€ΡƒΠ³ Ρ‚Π°ΠΊ случится, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ списка Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠ° Π²Π°ΠΌ окаТСтся нСдостаточно, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ CREATE TYPE, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ составной, пСрСчисляСмый, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запросов Π½ΠΎΠ²ΠΎΠ³ΠΎ составного Ρ‚ΠΈΠΏΠ°:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционными, MySQL, MariaDB ΠΈ Firebird Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΌΠΎΡ‰Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ограничСния пСрСчислСны Π½ΠΈΠΆΠ΅:

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹ данныхНСограничСн
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹32 TB
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки1.6 TB
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля1 GB
МаксимальноС количСство строк Π² таблицСНСограничСно
МаксимальноС количСство столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅250-1600 Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° столбца
МаксимальноС количСство индСксов Π² таблицСНСограничСно

Π’ Compose [ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.: организация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трудится Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ] ΠΌΡ‹ автоматичСски ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ Π²Π°ΡˆΡƒ ΠΈΠ½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎ ростС количСства Π΄Π°Π½Π½Ρ‹Ρ…. Но, ΠΊΠ°ΠΊ извСстно Π»ΡŽΠ±ΠΎΠΌΡƒ администратору Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, стоит с опаской ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ слишком большим ΠΈ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ возмоТностям. ΠœΡ‹ совСтуСм Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π΄Ρ€Π°Π²Ρ‹ΠΌ смыслом ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ индСксов.

Для сравнСния, MySQL ΠΈ MariaDB ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстны ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° строк Π² 65 535 Π±Π°ΠΉΡ‚. Firebird Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ всСго лишь 64Кб Π² качСствС максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° строки. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ограничиваСтся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PostgreSQL ΡƒΠΌΠ΅Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² мноТСствС Ρ„Π°ΠΉΠ»ΠΎΠ² мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Но стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ слишком большоС количСство Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. MySQL ΠΈ MariaDB ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ большСС количСство столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (Π΄ΠΎ 4,096 Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ большиС ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‡Π΅ΠΌ PostgreSQL, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ лишь Π² ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях.

Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ стрСмится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандарту ANSI-SQL:2008, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ трСбованиям ACID (Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ) ΠΈ извСстСн своСй ссылочной ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ каскадныС внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ограничСния, ограничСния NOT NULL, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ограничСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обСспСчСния цСлостности Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°ΡŽΡ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны.

MySQL ΠΈ MariaDB большС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандарту SQL с Π΄Π²ΠΈΠΆΠΊΠ°ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ† InnoDB/XtraDB. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΠΏΡ†ΠΈΡŽ STRICT с использованиСм Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² SQL, которая устанавливаСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. НСсмотря Π½Π° это, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, нСдостовСрныС ΠΈ Π΄Π°ΠΆΠ΅ ΡƒΡ€Π΅Π·Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· вашСго Π²Π΅Π΄ΠΎΠΌΠ° Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны ΠΈΠ»ΠΈ созданы ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Ни ΠΎΠ΄Π½Π° ΠΈΠ· этих Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… сСйчас Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ CHECK ограничСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Π½ΠΈΡ… сущСствуСт мноТСство особСнностСй Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ссылочной цСлостности ΠΏΠΎ внСшним ΠΊΠ»ΡŽΡ‡Π°ΠΌ. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ, Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° хранСния. MySQL (ΠΈ fork MariaDB) Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ сСкрСта ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ промСняли Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ соотвСтствиС стандартам Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

Подводя ΠΈΡ‚ΠΎΠ³ΠΈ

Π£ ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠ° мноТСство возмоТностСй. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ слоТныС структуры ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр встроСнных ΠΈ опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Он обСспСчиваСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ Ρ‘ΠΌΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ заслуТил Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ Π±Π΅Ρ€Π΅ΠΆΠ½Ρ‹ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ понадобятся всС Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ исслСдовали Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ потрСбности ΠΌΠΎΠ³ΡƒΡ‚ быстро возрасти, Π΅ΡΡ‚ΡŒ нСсомнСнноС прСимущСство Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ всё это ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ.

Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ PostgreSQL Π½Π΅ соотвСтствуСт вашим потрСбностям, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ β€œΡΡ‚Ρ€Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚ бСдра”, Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° NoSQL Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π² Compose, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… SQL Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ свои прСимущСства. Compose Ρ‚Π²Ρ‘Ρ€Π΄ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ задачи… ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ нСсколько Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…!

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ большС ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠ°? Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части этой сСрии ΠΌΡ‹ рассмотрим манипуляции с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ поиск Π² PostgreSQL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, возмоТности запросов, индСксированиС ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

PostgreSQL

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

PostgreSQL создана Π½Π° основС нСкоммСрчСской Π‘Π£Π‘Π” Postgres, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ open-source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΉΡΠΊΠΎΠΌ унивСрситСтС Π² Π‘Π΅Ρ€ΠΊΠ»ΠΈ. К Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Postgres, Π½Π°Ρ‡Π°Π²ΡˆΠ΅ΠΉΡΡ Π² 1986 Π³ΠΎΠ΄Ρƒ, ΠΈΠΌΠ΅Π» нСпосрСдствСнноС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Майкл Π‘Ρ‚ΠΎΡƒΠ½Π±Ρ€Π΅ΠΉΠΊΠ΅Ρ€, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ingres, Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Computer Associates. НазваниС Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΊΠ°ΠΊ Β«Post IngresΒ», ΠΈ ΠΏΡ€ΠΈ создании Postgres Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ сдСланныС Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π‘Ρ‚ΠΎΡƒΠ½Π±Ρ€Π΅ΠΉΠΊΠ΅Ρ€ ΠΈ Π΅Π³ΠΎ студСнты Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π‘Π£Π‘Π” Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ восьми Π»Π΅Ρ‚ с 1986 ΠΏΠΎ 1994 Π³ΠΎΠ΄. Π—Π° этот ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π² синтаксис Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π’ 1995 Π³ΠΎΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° снова Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»Π°ΡΡŒ: Π‘Ρ‚ΠΎΡƒΠ½Π±Ρ€Π΅ΠΉΠΊΠ΅Ρ€ использовал ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Π² создании коммСрчСской Π‘Π£Π‘Π” Illustra, ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΠΎΠΉ Π΅Π³ΠΎ собствСнной ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ (ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Ρ‘Π½Π½ΠΎΠΉ впослСдствии ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Informix), Π° Π΅Π³ΠΎ студСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Postgres β€” Postgres95, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ язык запросов POSTQUEL β€” наслСдиС Ingres β€” Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° SQL.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Postgres95 Π±Ρ‹Π»Π° Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ унивСрситСта ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ энтузиастов. Новая Π‘Π£Π‘Π” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° имя, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° извСстна ΠΈ развиваСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” PostgreSQL. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 2]

О ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅

PostgreSQL поддСрТиваСтся Π½Π° всСх соврСмСнных Unix систСмах (34 ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹), Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Linux, FreeBSD, NetBSD, OpenBSD, SunOS, Solaris, DUX, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ macOS. Начиная с вСрсии 8.X PostgreSQL Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² «native» Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ MS Windows NT, Win2000, WinXP, Win2003. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PostgreSQL ΠΏΠΎΠ΄ Novell Netware 6 ΠΈ OS2.

PostgreSQL Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Π²Π°Π»Π°ΡΡŒ Π±Π°Π·ΠΎΠΉ Π³ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Linux New Media AWARD 2004, 2003 Editors’ Choice Awards, 2004 Editors’ Choice Awards. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 3]

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ PostgreSQL являСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ ΠΈ Π΄ΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ ΠΈ обСспСчиваСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ возмоТностями:

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ PostgreSQL основываСтся Π½Π° использовании индСксов, ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ запросов, Ρ‚ΠΎΠ½ΠΊΠΎΠΉ систСмы Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, систСмС управлСния Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ памяти ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, прСвосходной ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ

Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ PostgreSQL ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ систСму ΠΏΡƒΡ‚Π΅ΠΌ опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠ², Ρ‚ΠΈΠΏΠΎΠ²,языков, индСксов ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ PostgreSQL позволяСт пСрСнСсти Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ вся бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° находится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² PostgreSQL ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, количСством ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 4]

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SQL

ΠšΡ€ΠΎΠΌΠ΅ основных возмоТностСй, присущих любой SQL Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚:

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ большой Π½Π°Π±ΠΎΡ€ встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«Π΄ΠΎΠΌΠ΅Π½Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ограничСниями, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ создатСлСм этого Π΄ΠΎΠΌΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² столбСц с использованиСм Π΄ΠΎΠΌΠ΅Π½Π°, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌ ограничСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Π°.

Начиная с PostgreSQL 9.2, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дискрСтныС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС Ρ†Π΅Π»Ρ‹Π΅ значСния ΠΎΡ‚ 1 Π΄ΠΎ 10) ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ 10:00 ΠΈ 11:00). ДоступныС Ρ‚ΠΈΠΏΡ‹ доступных Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл, большиС Ρ†Π΅Π»Ρ‹Π΅ числа, дСсятичныС числа, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (с часовым поясом ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ) ΠΈ Π΄Π°Ρ‚Ρ‹.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы для обСспСчСния доступности Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ IP-адрСсов, с использованиСм Ρ‚ΠΈΠΏΠ° inet Π² качСствС Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… float Π² качСствС Π±Π°Π·Ρ‹. Π’ΠΈΠΏΡ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символы ΠΈ () соотвСтствСнно. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прСдставляСт всС Ρ†Π΅Π»Ρ‹Π΅ числа, начиная с 4 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 9.) Π’ΠΈΠΏΡ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ совмСстимы с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ налоТСния, сдСрТивания, ΠΏΡ€Π°Π²Π° ΠΈ Ρ‚. Π΄. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 4]

НаслСдованиС

НаслСдованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ разбиСния Ρ‚Π°Π±Π»ΠΈΡ†, с использованиСм Π»ΠΈΠ±ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² Π»ΠΈΠ±ΠΎ ΠΏΡ€Π°Π²ΠΈΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ вставки Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° 2010, эта функция поддСрТиваСтся Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ, Π² частности, Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π² настоящСС врСмя Π½Π΅ наслСдуСмая. ВсС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ограничСния ΠΈ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ ограничСния Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ автоматичСски Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π΅Π³ΠΎ Π΄Π΅Ρ‚ΡŒΠΌΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΈ иностранныС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ограничСния) Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ.

НаслСдованиС обСспСчиваСт способ отобраТСния особСнности ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ обобщСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… Π½Π° ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ-связь Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… (ERD) нСпосрСдствСнно Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 4]

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ запроса

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° стандартов, возмоТности, особСнности

PostgreSQL PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ возмоТностСй стандарта SQL: 2011, ACID-совмСстимая ΠΈ транзакционная (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ DDL утвСрТдСния) ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠœΠ½ΠΎΠ³ΠΎΠ²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ доступом (MVCC), обСспСчиваСт ΠΈΠΌΠΌΡƒΠ½ΠΈΡ‚Π΅Ρ‚ ΠΊ «грязному» Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡŽ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ; управляСт комплСксными SQL запросами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мноТСство индСксированных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдоступны Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…; ΠΈΠΌΠ΅Π΅Ρ‚ обновляСмыС прСдставлСния ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹, внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ; ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, написанных Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ Π»ΠΈΡ†Π°ΠΌΠΈ. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ возмоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с основными Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ· Π½ΠΈΡ…, ΠΏΡƒΡ‚Π΅ΠΌ своСй ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ стандарта SQL ΠΈ доступных инструмСнтов ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Π€ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Oracle ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных ΠΈ сторонних Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ совмСстимости с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ПослСдниС вСрсии Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ самой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для доступности ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ.

PostgreSQL являСтся кросплотформСнной ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° мноТСствС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Linux, FreeBSD, macOS, Solaris, ΠΈ Microsoft Windows. Начиная с Mac OS X 10.7 Lion Server, PostgreSQL это стандартная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ клиСнтскиС инструмСнты PostgreSQL ΠΈΠ΄ΡƒΡ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ вСрсиСй. ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дистрибутивов Linux ΠΈΠΌΠ΅Π΅Ρ‚ PostgreSQL доступным Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….

PostgreSQL Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ PostgreSQL Global Development Group, Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΊΠ»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ свободноС ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, распространяСмоС ΠΏΠΎ условиям Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΈ PostgreSQL, Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π‘Π£Π‘Π” PostgreSQL выпускаСтся ΠΏΠΎΠ΄ Π»ΠΈΠ±Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ бСсплатно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ для Π»ΡŽΠ±Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π»ΠΈΡ‡Π½Ρ‹Π΅, коммСрчСскиС ΠΈΠ»ΠΈ акадСмичСскиС.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ (вСрсия 9.4.5), Π² PostgreSQL ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния: [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 5]

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹ данныхНСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹32 Π’Π±Π°ΠΉΡ‚
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ записи1,6 Π’Π±Π°ΠΉΡ‚
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля1 Π“Π±Π°ΠΉΡ‚
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ записСй Π² таблицСНСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ ΠΏΠΎΠ»Π΅ΠΉ Π² записи250β€”1600, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ»Π΅ΠΉ
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ индСксов Π² таблицСНСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

Π‘ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ сторонами PostgreSQL ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ:

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π­Ρ‚ΠΎ относится ΠΈ ΠΊ Ρ‚Π΅ΠΌ прСдлоТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ»ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ„ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ коммСрчСских ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.

Π¦ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ длится 10-12 мСсяцСв (сСйчас вСдСтся дискуссия ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ 2-3 мСсяца) ΠΈ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… этапов. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 1]

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ хранСния

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ссылочной цСлостности, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ограничСния внСшнСго ΠΊΠ»ΡŽΡ‡Π°, ограничСния столбцов ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ строк Π”Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ ΠΈ тСкстовоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ столбцов Онлайн-рСзСрвная ВосстановлСниС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ с использованиСм записи Π½Π° основС записи ОбновлСниС Π½Π° мСстС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pg_upgrade Π·Π° мСньшСС врСмя простоя (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ обновлСния с 8.3.x ΠΈ Π²Ρ‹ΡˆΠ΅) [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 1]

Установка ΠΈ настройка

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСна инструкция ΠΏΠΎ установки ΠΈ настройкС PostgreSQL для Ρ€Π°Π·Π½Ρ‹Ρ… ОБ [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 6]

Установка

Если установка происходит Π½Π° macOS, Ρ‚ΠΎ процСсс установки ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ: [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 7]

На Linux Π‘Π£Π‘Π” устанавливаСтся Ρ‚Π°ΠΊ:

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΈ установлСно, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, всС Π»ΠΈ Π² порядкС, ΠΈ какая стоит вСрсия PostgreSQL. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ установкС Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅

Настройка

Π Π°Π±ΠΎΡ‚Π° с PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π») с использованиСм ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ psql – инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки PostgreSQL. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 7]

НСобходимо ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π­Ρ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ запускаСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° psql. Π₯отя Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сторонних инструмСнтов для администрирования PostgreSQL, Π½Π΅Ρ‚ нСобходимости ΠΈΡ… ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚. ΠΊ. psql ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти список всСх Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…:

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

На рисункС Π²Ρ‹ΡˆΠ΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ postgres, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ установкС PostgreSQL.

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π‘Π”

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ дСйствия Π² Π‘Π£Π‘Π”, Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ язык запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… SQL.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Для создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°: [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 7]

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π΅ΠΌ proglib_db.

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Если Π·Π°Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой Π² ΠΊΠΎΠ½Ρ†Π΅ запроса, Π·Π½Π°ΠΊ Β«=Β» Π² ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠΈ postgres замСняСтся Π½Π° Β«-Β». Π­Ρ‚ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ (Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ) запрос.

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

На рисункС 4 Π²ΠΈΠ΄Π½ΠΎ сообщСниС ΠΎΠ± ошибкС ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² нашСм случаС Π±Π°Π·Π° ΡƒΠΆΠ΅ создана.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡŽΠ·Π΅Ρ€Π°

Для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ author.

postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π€ΠΎΡ‚ΠΎ postgres Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

ΠŸΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ отобразится сообщСниС CREATE ROLE. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΡ€Π°Π²Π° (доступ ΠΊ Π±Π°Π·Π°ΠΌ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, созданиС Π‘Π” / ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ‚. Π΄.). Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ столбСц Attributes для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ author пуст. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ author Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π² администратора. Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π±Π°Π·Ρƒ.

МоТно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 7]

Π‘ этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ справится ΠΊΠΎΠΌΠ°Π½Π΄Π° \password :

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Для этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° drop : ΠΎΠ½Π° ΡƒΠΌΠ΅Π΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚Π°ΠΊ ΠΈ Π‘Π”. [Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ 7]

Π”Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ остороТно, ΠΈΠ½Π°Ρ‡Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны, Π° Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· бэкапа (Ссли ΠΎΠ½ Π±Ρ‹Π»).

Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ psql postgres (Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ), Ρ‚ΠΎ postgreSQL пустит вас ΠΏΠΎΠ΄ стандартным ΡΡƒΠΏΠ΅Ρ€ΡŽΠ·Π΅Ρ€ΠΎΠΌ (postgres). Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

FAQ/ru

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° русский язык Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π’ΠΈΠΊΡ‚ΠΎΡ€ Вислобоков (corochoone@gmail.com) 03.12.2010 ([1])

Contents

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки

Вопросы спСцифичныС для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Windows Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ platform FAQ for Windows. А Ρ‚Π°ΠΊΠΆΠ΅ FAQs for other platforms.

ΠžΠ±Ρ‰ΠΈΠ΅ вопросы

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ PostgreSQL? Как произносится это Π½Π°Π·Π²Π°Π½ΠΈΠ΅? Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Postgres?

PostgreSQL произносится Post-Gres-Q-L (ΠŸΠΎΡΡ‚-ГрСс-Кью-Π­Π»). (Для особо Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π½ΠΎΡΠΈΡ‚ΡŒ «PostgreSQL», сущСствуСт Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ» audio file.)

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ PostgreSQL выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², разбросанная ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈ связанная Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° являСтся общСствСнным ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π½Π΅ управляСтся ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ смотритС Π² FAQ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², FAQ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Postgres β€” это ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ сокращСниС для PostgreSQL. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π‘Π΅Ρ€ΠΊΠ»ΠΈ Π±Ρ‹Π»ΠΎ Postgres ΠΈ этот Π½ΠΈΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярСн Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°Ρ… ΠΎ PostgreSQL ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Если Π²Π°ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ‘PostgreSQL’, ΠΌΠΎΠΆΠ½ΠΎ просто Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ‘Postgres’.

ΠšΡ‚ΠΎ управляСт PostgreSQL?

Π§Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя ВсСмирная Π“Ρ€ΡƒΠΏΠΏΠ° Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PostgreSQL (PGDG)?

Π§Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя PostgreSQL Core Team?

Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚, состоящий ΠΈΠ· 5-7 Ρ‡Π»Π΅Π½ΠΎΠ² (Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ 6), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ внСсли наибольший Π²ΠΊΠ»Π°Π΄ Π² PostgreSQL ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅: (Π°) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Ρ‚Ρ‹ выпусков, (b) ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ вопросами ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, (c) ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ спикСры с PGDG, ΠΊΠΎΠ³Π΄Π° это трСбуСтся ΠΈ (d) Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΌΠΈ Π² Ρ‚Π΅Ρ… вопросах, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² сообщСствС Π½Π΅ достигнуто консСнсуса. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Основная Команда прСдставлСна Π²Π²Π΅Ρ€Ρ…Ρƒ страницы списка участников

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΠ½Π΄Π°Ρ… PostgreSQL?

Π₯отя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСкоммСрчСскиС Ρ„ΠΈΡ€ΠΌΡ‹ Π² БША, Π•Π²Ρ€ΠΎΠΏΠ΅, Π‘Ρ€Π°Π·ΠΈΠ»ΠΈΠΈ ΠΈ Π―ΠΏΠΎΠ½ΠΈΠΈ для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ сбора срСдств, эти Ρ„ΠΈΡ€ΠΌΡ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌΠΈ ΠΊΠΎΠ΄Π° PostgreSQL.

Какова лицСнзия Π½Π° PostgreSQL?

PostgreSQL распространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ сходной с BSD ΠΈ MIT. Π’ своСй основС ΠΎΠ½Π° позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ всё Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ скомпилированных Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π΅Π· исходного ΠΊΠΎΠ΄Π°. ЕдинствСнноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠ·Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° нас ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с этим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм. Π’Π°ΠΊΠΆΠ΅ сущСствуСт Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠΏΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Π΄Π°Π½Π½Ρ‹Π΅ свСдСния ΠΎΠ± авторских ΠΏΡ€Π°Π²Π°Ρ…. Π’ΠΎΡ‚ лицСнзия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ:

На ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PostgreSQL?

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° любой соврСмСнной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ совмСстимой с Unix.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ явноС тСстированиС пСрСчислСны Π½Π° сайтС Build farm. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, которая содСрТит мноТСство подробностСй ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° http://www.postgresql.org/docs/current/static/supported-platforms.html.

PostgreSQL Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows, основанных Π½Π° NT, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Win2000 SP4, WinXP ΠΈ Win2003. ΠŸΠ°ΠΊΠ΅Ρ‚ инсталлятора доступСн ΠΏΠΎ адрСсу http://www.postgresql.org/download/windows. ВСрсии Windows, основанныС Π½Π° MS-DOS (Win95, Win98, WinMe) ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ PostgreSQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cygwin.

Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ PostgreSQL?

Дистрибутивы Π² скомпилированном Π²ΠΈΠ΄Π΅ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ; см. страницу скачивания.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ ΠΏΠΎ ftp.

Какая Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ свСТая вСрсия?

ПослСднюю Π²Π΅Ρ€ΡΠΈΡŽ PostgreSQL ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ пСрСйдя Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ страницу нашСго сайта.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ выпускаСм Π½ΠΎΠ²Ρ‹Π΅ ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ вСрсии ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄, Π° младшиС вСрсии ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ нСсколько мСсяцСв. МладшиС вСрсии ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя для всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΡΡ‚Π°Ρ€ΡˆΠΈΡ… вСрсий. Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΡ… ΠΈ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… вСрсиях ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° http://www.postgresql.org/support/versioning.

Π“Π΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ?

БообщСство PostgreSQL прСдоставляСт ΠΏΠΎΠΌΠΎΡ‰ΡŒ мноТСству ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· E-mail. Основной web-сайт для подписки Π½Π° списки рассылки ΠΏΠΎ E-mail это: http://www.postgresql.org/community/lists/. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ мСстом для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы ΡΠ²Π»ΡΡŽΡ‚ΡΡ списки general (ΠΎΠ±Ρ‰ΠΈΠ΅ вопросы) ΠΈΠ»ΠΈ bugs (ошибки). Для Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ guide to reporting problems ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ.

Π“Π»Π°Π²Π½Ρ‹ΠΌ IRC ΠΊΠ°Π½Π°Π»ΠΎΠΌ являСтся #postgreql, располоТСнный Π½Π° сСрвСрС Libera (irc.libera.chat). На этом ΠΆΠ΅ сСрвСрС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°Π½Π°Π»Ρ‹ Π½Π° испанском (#postgresql-es), французском (#postgresqlfr) ΠΈ Π±Ρ€Π°Π·ΠΈΠ»ΡŒΡΠΊΠΎΠΌ (#postgresql-br) языках. Π’Π°ΠΊΠΆΠ΅ сущСствуСт ΠΊΠ°Π½Π°Π» ΠΏΠΎ PostgreSQL Π½Π° сСрвСрС EFNet.

Как ΠΌΠ½Π΅ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС?

ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ страничку со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° ΠΎΠ± ошибкС Π² PostgreSQL ΠΏΠΎ адрСсу: http://www.postgresql.org/support/submitbug, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС Π² список рассылки pgsql-bugs. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ свСТСй вСрсии PostgreSQL Π½Π° нашСм FTP сайтС ftp://ftp.postgresql.org/pub/.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ guide to reporting problems, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² вашС сообщСниС всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая трСбуСтся для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ понимания ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ вашим сообщСниСм.

На ошибки, увСдомлСния ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ сдСланы Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ список рассылки PostgreSQL, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ гСнСрируСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²:

Как Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± извСстных ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… возмоТностях?

PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ подкласс SQL:2008. Π‘ΠΌ. список TODO Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ извСстных ошибок, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… возмоТностСй ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ².

На запрос ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ возмоТности ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ приходят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹:

Ошибка, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я столкнулся исправлСна Π² Π½ΠΎΠ²ΠΎΠΉ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ вСрсии PostgreSQL, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?

НСт. Никто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ для вас, извлСкая исправлСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· 8.4.3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ 8.4.1. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ нСобходимости Π΄Π΅Π»Π°Ρ‚ΡŒ это.

PostgreSQL ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ исправлСниС ошибок осущСствляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… выпусках, согласно ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ вСрсий. Π­Ρ‚ΠΎ позволяСт бСзопасно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 8.4.1 Π΄ΠΎ 8.4.3.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ) ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π΅ трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π°ΠΌΠΏ ΠΈ восстановлСниС, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΎ, Π½ΠΎ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ. Π”Π°ΠΆΠ΅, Ссли Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ошибкой, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. Для этого просто Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΈΡ‡Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅.

ОбновлСниС с 8.3 Π΄ΠΎ 8.4 ΠΈΠ»ΠΈ с 8.4 Π΄ΠΎ 9.0 являСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ вСрсии ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅. Однако, Ссли ошибка Π½Π°ΠΉΠ΄Π΅Π½Π° Π² 9.0, Ρ‚ΠΎ ΠΎΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ исправляСтся Π²ΠΎ всСх обслуТиваСмых старых вСрсиях, Ρ‚.Π΅. Π² 8.4 ΠΈ 8.3, Ссли это бСзопасно ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Ρƒ вас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вСрсия 8.1.0, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ обновлСния Π΄ΠΎ 8.1.21 сильно рСкомСндуСтся ΠΈ являСтся бСзопасным. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ€ΡˆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‚.Π΅. 8.2.x, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выполнСния Π΄Π°ΠΌΠΏΠ°, восстановлСния ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ остороТным ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… обновлСниях, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ замСчания ΠΊ выпуску для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ выпуска ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈ послСднСй младшСй вСрсиСй. Если Ρƒ вас просто ΠΏΠ°Ρ€Π°Π½ΠΎΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ боязнь ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ списка ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсённых Π² выпуски ΠΈΠ· PostgreSQL’s рСпозитория git ΠΈ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

ΠžΡ‡Π΅Π½ΡŒ рСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ всСгда обновляли послСднюю ΠΌΠ»Π°Π΄ΡˆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния ΠΈΠ· выпусков; дСлая Ρ‚Π°ΠΊΠΎΠ΅, Π²Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ всС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ качСства, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ PostgreSQL ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ выпуска ΠΈ создаётС ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΡ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ вас. Намного бСзопаснСй ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ послСднСго, оттСстированного, бСзопасного выпуска. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΊ вашСй собствСнной, нСстандартной сборкС ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ мноТСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ простоя ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ.

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ PostgreSQL x.y.1. ΠœΠΎΠ³Ρƒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто этого Π²Π΅Ρ€ΡΠΈΡŽ PostgreSQL x.y.2?

Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсиСй, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ 8.4.1, Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ младшими вСрсиям Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ вСрсии. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ 8.4.1, Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСсто этого с послСднСй вСрсиСй ΠΈΠ· выпусков 8.4.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ смотритС Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ вопросС.

Какая докумСнтация имССтся Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ?

PostgreSQL содСрТит ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ большоС руководство, страницы элСктронного руководства man ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ малСнькиС тСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /doc. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ адрСсу http://www.postgresql.org/docs.

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ тСхничСских статСй ΠΏΠΎ PostgreSQL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² wiki.

Как ΠΌΠ½Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ SQL?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΈΠ³ ΠΏΠΎ PostgreSQL, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅. Многим ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ нравится ΠΊΠ½ΠΈΠ³Π° The Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley. Π”Ρ€ΡƒΠ³ΠΈΠΌ нравится The Complete Reference SQL, Groff et al., McGraw-Hill.

МногиС люди Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ PostgreSQL ΠΊΠ°ΠΊ прСкрасноС руководство для обучСния самому SQL, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для PostgreSQL. Для достиТСния Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PostgreSQL вмСстС с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ SQL Π‘Π£Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL Π±Π΅Π· спСцифичных для PostgreSQL особСнностСй. ДокумСнтация ΠΏΠΎ PostgreSQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рассказываСт ΠΊΠΎΠ³Π΄Π° Ρ‚Π° ΠΈΠ»ΠΈ иная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ PostgreSQL Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ стандарт.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ мноТСство прСкрасных ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠ² доступных Π² online:

Как ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ исправлСниС ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²?

Как ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ PostgreSQL с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π‘Π£Π‘Π”?

БущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сравнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния: возмоТности, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ†Π΅Π½Π°.

ВозмоТности

PostgreSQL ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ возмоТностСй прСдставлСнных Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… коммСрчСских Π‘Π£Π‘Π”, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, подзапросы, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹, прСдставлСния, внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, ограничСния цСлостности ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Ρƒ Π½ΠΈΡ…: Ρ‚ΠΈΠΏΡ‹, опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования, ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠ΅ многовСрсионноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с содСрТимым Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ PostgreSQL сходна с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коммСрчСскими Π‘Π£Π‘Π” ΠΈ с Π‘Π£Π‘Π” с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π²Π΅Ρ‰Π°Ρ… ΠΌΡ‹ быстрСС, Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Наша ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ +/-10% ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π‘Π£Π‘Π”.

ΠΠ°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ

ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ наша Π‘Π£Π‘Π” Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΠΈΡ‚ΡŒ. ΠœΡ‹ стараСмся Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ошибок. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ выпуск ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡΡ‚Π°Π΄ΠΈΡŽ Π±Π΅Ρ‚Π°-тСстирования ΠΈ наша история выпусков ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹Π΅ выпуски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ использованию. ΠœΡ‹ Π²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π΅ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π” Π² Π΄Π°Π½Π½ΠΎΠΉ области.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

Наши списки рассылки ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ общСния с большой Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ возникшиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΌΡ‹ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ исправлСния, Π½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ коммСрчСских Π‘Π£Π‘Π” Π½Π΅ всСгда Π΄Π΅Π»Π°ΡŽΡ‚ исправлСния. ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, сообщСству ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, руководствам ΠΈ исходным тСкстам часто Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ PostgreSQL прСвосходящСй Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π‘Π£Π‘Π”. БущСствуСт коммСрчСская ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΡˆΠΈΡ… ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ², которая доступна для Ρ‚Π΅Ρ… ΠΊΠΎΠΌΡƒ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°. (Π‘ΠΌ. вопрос 3.10).

Наш ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ бСсплатСн ΠΊΠ°ΠΊ для коммСрчСского, Ρ‚Π°ΠΊ ΠΈ для Π½Π΅ коммСрчСского использования. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² наш ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² нашСй Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ стиля BSD, которая ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π²Ρ‹ΡˆΠ΅.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ PostgreSQL Π±Ρ‹Ρ‚ΡŒ встраиваСмой Π‘Π£Π‘Π”?

PostgreSQL разрабатываСтся ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚/сСрвСр, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСсколько Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов. МногиС встраиваСмыС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ трСбованиям. Однако, Ссли ваша встраиваСмая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сСрвСр Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… для запуска Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ процСсса, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Postgres ΠΈ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ встраиваСмыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ SQLite ΠΈ Firebird SQL.

Как ΠΌΠ½Π΅ ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ списков рассылки PostgreSQL? Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ получСния Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ сообщСний?

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° PostgreSQL Majordomo позволяСт ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π»ΡŽΠ±Ρ‹Ρ… списков рассылки. (Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ваш ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Majordomo для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ).

ВсС списки рассылки PostgreSQL Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π°Ρ Π² список ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΡ€Ρƒ E-mail сообщСния. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС. Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ сообщСний ΠΈΠ· списка Π² случаС Ссли Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ E-mail сообщСниС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, установитС Ρ„Π»Π°ΠΆΠΎΠΊ eliminatecc Π½Π° страницС настроСк Majordomo. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ вашСго ΠΆΠ΅ сообщСния Π² список самому сСбС, сняв Ρ„Π»Π°ΠΆΠΎΠΊ selfcopy.

Вопросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ клиСнтской части

КакиС интСрфСйсы Π΅ΡΡ‚ΡŒ для PostgreSQL?

Π―Π΄Ρ€ΠΎ исходных ΠΊΠΎΠ΄ΠΎΠ² PostgreSQL Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ C ΠΈ встроСнныС (embedded) Π² C интСрфСйсы. ВсС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрфСйсы ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСзависимыми ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ; ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² позволяСт ΠΈΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнноС расписаниС выпусков Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

НСкоторыС языки программирования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PHP Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя интСрфСйс ΠΊ PostgreSQL. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ для Ρ‚Π°ΠΊΠΈΡ… языков ΠΊΠ°ΠΊ Perl, TCL, Python ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…, доступны Π½Π° http://pgfoundry.org.

КакиС инструмСнты ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для использования PostgreSQL Ρ‡Π΅Ρ€Π΅Π· Web?

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ взаимодСйствиС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Web ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π°: http://www.webreview.com

Для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Web, PHP (http://www.php.net) являСтся Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ интСрфСйсом.

Π’ слоТных случаях ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Perl ΠΈ DBD::Pg с CGI.pm ΠΈΠ»ΠΈ mod_perl.

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ PostgreSQL графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ?

Для PostgreSQL сущСствуСт большоС количСство инструмСнтов с графичСским интСрфСйсом ΠΊΠ°ΠΊ коммСрчСских, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Community Guide to PostgreSQL GUI Tools.

Вопросы администрирования

Как ΠΌΠ½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PostgreSQL Π² мСсто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ /usr/local/pgsql?

Π― установил PostgreSQL ΠΈ Π½Π΅ знаю ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ postgres

Дэйв ПСйдТ написал blog post, Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сброс этих ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

Как ΠΌΠ½Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ соСдинСниями ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ²?

Как ΠΌΠ½Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π‘Π£Π‘Π” для получСния Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ?

БущСствуСт Ρ‚Ρ€ΠΈ Π³Π»Π°Π²Π½Ρ‹Ρ… области, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

ИзмСнСниС запроса

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ запросов для получСния Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Настройка сСрвСра

НСкоторыС установки Π² postgresql.conf Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список установок см. Π² Administration Guide/Server Run-time Environment/Run-time Configuration.

КакиС возмоТности для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ?

Π•ΡΡ‚ΡŒ мноТСство установок Π² настройках сСрвСра, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° log_* Π½Π° http://www.postgresql.org/docs/current/interactive/runtime-config-logging.html, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы ΠΈ статистику Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсса, которая ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ измСрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС «Sorry, too many clients» ΠΊΠΎΠ³Π΄Π° ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅?

Π’Ρ‹ достигли установлСнного ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ограничСния Π² 100 сСссий ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ Π½Π° количСство ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Ρ… backend процСссов для вашСго сСрвСра Π‘Π”, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ max_connections Π² Ρ„Π°ΠΉΠ»Π΅ postgresql.conf ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр Π‘Π”.

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ PostgreSQL?

Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ PostgreSQL Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с послСдними измСнСниями Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?

PostgreSQL, начиная с вСрсии 8.0, зависит ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… часовых поясов tzdata (которая Ρ‚Π°ΠΊΠΆΠ΅ называСтся Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… zoneinfo Olson timezone database) Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ касаСтся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·ΠΈΠΌΠ½Π΅ΠΌ/Π»Π΅Ρ‚Π½Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ PostgreSQL Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° с Π»Π΅Ρ‚Π½ΠΈΠΌ/Π·ΠΈΠΌΠ½Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, установитС Π½Π°Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² tzdata ΠΈ пСрСзапуститС сСрвСр.

ВсС обновлСния выпусков PostgreSQL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ послСдниС доступныС Ρ„Π°ΠΉΠ»Ρ‹ tzdata, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΌΠ»Π°Π΄ΡˆΠΈΡ… вСрсиях для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ вСрсии, Ρ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно.

На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π³Π΄Π΅ производятся рСгулярныС обновлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ tzdata, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ использованиС систСмных Ρ„Π°ΠΉΠ»ΠΎΠ² tzdata. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указания ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΈ компиляции. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дистрибутивов Linux ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ эту ΠΎΠΏΡ†ΠΈΡŽ для сборки своих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² PostgreSQL.

Выпуски PostgreSQL Π΄ΠΎ 8.0 всСгда использовали ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ часовых поясах, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡƒΡŽ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

КакоС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ «ΠΆΠ΅Π»Π΅Π·ΠΎ» я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ «ΠΆΠ΅Π»Π΅Π·ΠΎ» ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ совмСстимым, люди склонны Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «ΠΆΠ΅Π»Π΅Π·ΠΎ» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ качСство. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠ°ΠΌΡΡ‚ΡŒ ECC, SCSI ΠΈ качСствСнныС матСринскиС ΠΏΠ»Π°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ «ΠΆΠ΅Π»Π΅Π·ΠΎ». PostgreSQL Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° любом «ΠΆΠ΅Π»Π΅Π·Π΅», Π½ΠΎ Ссли для вас Π²Π°ΠΆΠ½Ρ‹ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ с вашСй стороны Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΡƒΠ΄Ρ€ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ «ΠΆΠ΅Π»Π΅Π·ΠΎ».

Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ подсистСмы Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ подсистСмС Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ёмкости памяти ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ процСссора. НапримСр, дисковый ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ с кэшСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ Π±Π°Ρ‚Π°Ρ€Π΅ΠΉΠΊΠ΅, часто Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»Ρ‘Π³ΠΊΠΈΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвСра Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ «ΠΆΠ΅Π»Π΅Π·ΠΎ» ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π°ΡˆΠΈΡ… списках рассылки.

Как PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСсурсы процСссора?

Π‘Π΅Ρ€Π²Π΅Ρ€ PostgreSQL основан Π½Π° процСссах (Π½Π΅ Ρ‚Ρ€Π΅Π΄Π°Ρ…(нитях)) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ процСсс ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π½Π° ΠΎΠ΄Π½Ρƒ сСссию с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Π°Ρ сСссия с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… (соСдинСниС) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ процСссор. РазумССтся, нСсколько соСдинСний автоматичСски Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ всСм доступным процСссорам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π΄Ρ‹(Π½ΠΈΡ‚ΠΈ) ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько соСдинСний ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π΄Π°.

Один слоТный ΠΈ нСзависящий ΠΎΡ‚ процСссора запрос Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ процСссор ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ запроса. БистСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ доступной для использования Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссоров, дискового Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Ρ‚.Π΄., Π½ΠΎ Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прСимущСства ΠΏΡ€ΠΈ использовании Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ядра.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρƒ PostgreSQL Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ процСссов, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π‘Π£Π‘Π” простаиваСт?

Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π²Ρ‹ΡˆΠ΅, PostgreSQL основан Π½Π° процСссах, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ запускаСт ΠΎΠ΄ΠΈΠ½ процСсс postgres (ΠΈΠ»ΠΈ postgres.exe Π½Π° Windows) Π½Π° соСдинСниС. ΠŸΡ€ΠΎΡ†Π΅ΡΡ postmaster (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСния ΠΈ запускаСт для Π½ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ процСссы postgres) Π·Π°ΠΏΡƒΡ‰Π΅Π½ всСгда. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, PostgreSQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ «Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…» процСссов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ сборщики статистики, Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ записи, Π΄Π΅ΠΌΠΎΠ½ Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌΠ°, walsender, ΠΈ Ρ‚.Π΄., ΠΈ всС ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ экзСмпляры «postgres» Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ инструмСнтов систСмного ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

НСсмотря Π½Π° ΠΈΡ… количСство, процСссы фактичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… рСсурсов. Π‘ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ памяти?

НСсмотря Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ это Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ памяти ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ инструмСнты Ρ‚ΠΈΠΏΠ° top ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° процСссов Π² Windows.

Π’Π°ΠΊΠΈΠ΅ инструмСнты ΠΊΠ°ΠΊ top ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ процСссов Windows ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ мноТСство экзСмпляров postgres (см. Π²Ρ‹ΡˆΠ΅), ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство памяти. Часто, Ссли ΠΏΡ€ΠΎΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю эту ΠΏΠ°ΠΌΡΡ‚ΡŒ, окаТСтся Ρ‡Ρ‚ΠΎ Π΅Ρ‘ большС, Ρ‡Π΅ΠΌ фактичСски установлСно всСго памяти Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅!

Вопросы эксплуатации

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SELECT Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… строчСк запроса? ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ строки?

Для получСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк, Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈΡ… количСство Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния SELECT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ LIMIT. Если Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ совпадаСт с ORDER BY, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ вСсь запрос Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ количСства Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… строк Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния SELECT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ курсор ΠΈ FETCH.

Для Π²Ρ‹Π±ΠΎΡ€Π° случайной строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SELECT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π½Π° эту Ρ‚Π΅ΠΌΡƒ см. Ρ‚Π°ΠΊΠΆΠ΅ Π² blog entry by Andrew Gierth.

Как ΠΌΠ½Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, индСксы, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚? Как ΠΌΠ½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ psql для получСния этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ?

Π’Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ систСмныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с pg_, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ эта ΠΆΠ΅ информация.

Π’Π°ΠΊΠΆΠ΅ посмотритС Ρ„Π°ΠΉΠ» pgsql/src/tutorial/syscat.source. Он ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SELECT Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· систСмных Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ?

Π’ 8.0 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ выполняСтся ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ALTER TABLE ALTER COLUMN TYPE.

Π’ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях сдСлайтС Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ дисковоС пространство, использованноС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ строками, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ VACUUM FULL.

ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ для строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…?

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния:

РазумССтся, понятиС «Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ» Π½Π° самом Π΄Π΅Π»Π΅ ограничиваСтся доступным дисковым пространством ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ памяти/своппинга. Когда значСния, пСрСчислСнныС Π²Ρ‹ΡˆΠ΅, Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ большиС, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² 32 TB Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ опСрационная систСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ хранятся ΠΊΠ°ΠΊ мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 1 GB, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ файловая систСма, Π½Π΅ Π²Π°ΠΆΠ½Ρ‹.

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ максимальноС количСство ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Ρ‹ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π°, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π΄ΠΎ 32k. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈ использовании разбиСния Ρ‚Π°Π±Π»ΠΈΡ†.

БущСствуСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ индСксы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ для ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π΄Π»ΠΈΠ½Π½Π΅Π΅ Ρ‡Π΅ΠΌ 2,000 символов. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊΠΈΠ΅ индСксы вряд Π»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π½ΡƒΠΆΠ½Ρ‹. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ гарантируСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса ΠΈΠ· Ρ…ΡΡˆΠ° MD5 Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π° полнотСкстовоС индСксированиС позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ слова Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.

Как ΠΌΠ½ΠΎΠ³ΠΎ дискового пространства Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкстового Ρ„Π°ΠΉΠ»Π°?

Π‘Π£Π‘Π” PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ дискового пространства Π΄ΠΎ 5 Ρ€Π°Π· большС для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· простого тСкстового Ρ„Π°ΠΉΠ»Π°.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, рассмотрим Ρ„Π°ΠΉΠ» Π² 100,000 строк, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ тСкстовоС описаниС. ΠŸΡ€ΠΈ этом Π΄Π»ΠΈΠ½Π° тСкста, Π² срСднСм, составляСт 20 Π±Π°ΠΉΡ‚. Π Π°Π·ΠΌΠ΅Ρ€ простого Ρ„Π°ΠΉΠ»Π° составит 2.8 MB. Π Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹ PostgreSQL, содСрТащСй эти ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ составит ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 5.2 MB ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…:

Π Π°Π·ΠΌΠ΅Ρ€ страницы Π΄Π°Π½Π½Ρ‹Ρ… Π² PostgreSQL составляСт 8192 Π±Π°ΠΉΡ‚ (8 KB), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ:

ИндСксов Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для большого количСства Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Π»ΠΈΠΊΠΈ.

ЗначСния NULL хранятся ΠΊΠ°ΠΊ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ поэтому ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ мСста.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ значСния Ρ‚ΠΈΠΏΠ° long ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ сТаты.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΈ запросы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΎΠΈ индСксы?

Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° большС минимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ запрос Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ малСнький ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’Π°ΠΊ устроСно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ доступ ΠΊ диску с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ сканировании индСксов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ простоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сканированиС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ использования индСкса для ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, PostgreSQL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ статистику ΠΏΠΎ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚Π° статистика собираСтся ΠΏΡ€ΠΈ использовании VACUUM ANALYZE ΠΈΠ»ΠΈ просто ANALYZE. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ статистику, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ Ссли ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Бтатистика Ρ‚Π°ΠΊΠΆΠ΅ влияСт Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ порядка соСдинСний Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° соСдинСния. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ содСрТимого Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ пСриодичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ сбор статистики.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ индСксы Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ORDER BY ΠΈΠ»ΠΈ для выполнСния соСдинСний Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° явной сортировкой, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ быстрСС, Ρ‡Π΅ΠΌ поиск ΠΏΠΎ индСксам Π² большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Однако, ORDER BY часто комбинируСтся с LIMIT ΠΈ Π² этом случаС индСкс Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ нСбольшая Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ SET enable_seqscan TO ‘off’ ΠΈ запуститС запрос снова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ сканированиС индСксов быстрСС.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с шаблонами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ LIKE ΠΈΠ»ΠΈ

, индСксы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

* Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ индСксы. ВмСсто Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксы Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π²

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полнотСкстовоС индСксированиС для поиска слов.

Π‘Ρ‚Π°Ρ‚ΡŒΡ SlowQueryQuestions содСрТит нСсколько большС совСтов ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ выполняСт ΠΌΠΎΠΉ запрос?

Π­Ρ‚ΠΎ выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ EXPLAIN. Π‘ΠΌ. страницу, ΠΏΠΎΡΠ²ΡΡ‰Π΅Π½Π½ΡƒΡŽ Using EXPLAIN.

Как ΠΌΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок сортировки тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…?

PostgreSQL сортируСт тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ Π² соотвСтствии с порядком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ локалью, которая Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΏΡ€ΠΈ initdb. (Π’ вСрсиях, начиная с 8.4, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ локаль ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….) Если Π²Π°ΠΌ Π½Π΅ нравится порядок сортировки, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ локаль. Π’ частности, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ «C» ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Если это Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° локаль «C».

Как ΠΌΠ½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΈ рСгистро-нСзависимый поиск ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ? Как ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс для рСгистро-нСзависимого поиска?

ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ поиск ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

* ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ рСгистро-нСзависимый поиск ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ. РСгистро-нСзависимый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ LIKE называСтся ILIKE.

РСгистро-нСзависимоС сравнСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит Ρ‚Π°ΠΊ:

Π­Ρ‚Π° конструкция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный индСкс Π½Π° «col». Однако, Ссли Π²Ρ‹ создадитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ индСкс «lower(col)», ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ использован:

Если Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ индСкс создаётся ΠΊΠ°ΠΊ UNIQUE, Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ создаётся ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ символы ΠΈ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ, ΠΈ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½ΠΎ индСкс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рСгистром. Π§Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ символы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ рСгистрС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ CHECK ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€.

Π’ PostgreSQL, начиная с вСрсии 8.4, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… CITEXT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ «lower()», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ фактичСски ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ рСгистро-нСзависимым Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. CITEXT Ρ‚Π°ΠΊΠΆΠ΅ доступСн для 8.3, Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ранняя вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ASCII символами ΠΈ для 8.2 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий доступна Π½Π° pgFoundry.

Как ΠΌΠ½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ запросС Ρ€Π°Π²Π½ΠΎ NULL? Как ΠΌΠ½Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ NULL? ΠœΠΎΠ³Ρƒ я ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поля NULL ΠΈΠ»ΠΈ Π½Π΅Ρ‚?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IS NULL ΠΈΠ»ΠΈ IS NOT NULL, ΠΊΠ°ΠΊ здСсь:

ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ NULL с Ρ‡Π΅ΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π΄Π°Ρ‘Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ NULL. Если это Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ COALESCE() для Π·Π°ΠΌΠ΅Π½Ρ‹ NULL ΠΊΠ°ΠΊ здСсь:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ IS NULL ΠΈΠ»ΠΈ IS NOT NULL Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ORDER BY. Когда ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния истина, Ρ‚ΠΎ ΠΏΡ€ΠΈ сортировкС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ значСния лоТь, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ записи с NULL Π±ΡƒΠ΄ΡƒΡ‚ Π² отсортированном спискС свСрху:

Π’ PostgreSQL, начиная с вСрсии 8.3, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ порядком сортировки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅Π΄Π°Π²Π½ΠΎ стандартизированныС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ NULLS FIRST/NULLS LAST, ΠΊΠ°ΠΊ здСсь:

ΠšΠ°ΠΊΠΎΠ²Ρ‹ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ?

Π’ΠΈΠΏΠ’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ имяЗамСчания
VARCHAR(n)varcharΡ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ, Π½Π΅Ρ‚ заполнСния
CHAR(n)bpcharзаполняСтся пустотой Π΄ΠΎ фиксированной Π΄Π»ΠΈΠ½Ρ‹
TEXTtextΠ½Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ограничСния ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ‹
BYTEAbyteaмассив Π±Π°ΠΉΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ null-Π±Π°ΠΉΡ‚ Π±Π΅Π· опаски)
«char» (with the quotes)charΠΎΠ΄ΠΈΠ½ символ

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ имя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° смотритС систСмныС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщСниях ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠ° ΡΠ²Π»ΡΡŽΡ‚ΡΡ «varlena» Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Ρ‚.Π΅. ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° Π½Π° дискС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, фактичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ пространство большС, Ρ‡Π΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Однако, Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ значСния Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ дисковоС пространство ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ ΠΈ мСньшС, Ρ‡Π΅ΠΌ оТидалось.

Π’ΠΈΠΏ «char» (ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ CHAR(n)) являСтся спСциализированным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚. Он Π΅ΡΡ‚ΡŒ Π² систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π½ΠΎ Π΅Π³ΠΎ использованиС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ рСкомСндуСтся.

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрийноС ΠΏΠΎΠ»Π΅/ΠΏΠΎΠ»Π΅ с Π°Π²Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ?

PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… SERIAL. ЀактичСски ΠΎΠ½ Π½Π΅ являСтся Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Π΅Π³ΠΎ использовании создаётся ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ связанная с этой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

автоматичСски транслируСтся Π²:

Π’Π°ΠΊΠΆΠ΅ сущСствуСт Ρ‚ΠΈΠΏ BIGSERIAL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° SERIAL, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° создаётся с Ρ‚ΠΈΠΏΠΎΠΌ BIGINT, Π° Π½Π΅ INTEGER. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот Ρ‚ΠΈΠΏ, Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° сСрийных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Как ΠΌΠ½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ вставкС SERIAL?

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SERIAL это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ RETURNING. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ вопроса, это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ nextval() ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² INSERT, ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ currval() послС INSERT.

НС ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ использованиС currval() ΠΈ nextval() ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ числа ΠΈΠ· ΠΌΠΎΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ снова ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ ΠΏΡ€ΠΈ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, Π³Π΄Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ/SERIAL?

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ конкурСнтности, значСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя запуска Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ Π² Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OID?

Для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² строках Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π»ΡƒΡ‡ΡˆΠΈΠΌ способом являСтся созданиС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ OID (Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ WITH OIDS само ΠΏΠΎ сСбС Π½Π΅ создаёт Ρ‚Π°ΠΊΠΎΠΉ индСкс).

БистСма провСряСт индСкс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ сущСствуСт ΡƒΠΆΠ΅ сгСнСрированный Π½ΠΎΠ²Ρ‹ΠΉ OID ΠΈ Ссли это Ρ‚Π°ΠΊ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ OID ΠΈ повторяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ содСрТащая OID ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… 4-Ρ… ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² строк.

PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ OID для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π³Π΄Π΅ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ использованиС Ρ‚ΠΈΠΏΠ° SERIAL, вмСсто ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ OID ΠΈΠ»ΠΈ BIGSERIAL, Ссли оТидаСтся, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 2-Ρ… ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² записСй.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CTID?

CTID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… физичСских записСй с Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΠΈ значСниями смСщСний Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ записями индСкса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° физичСскиС строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ЛогичСскиС CTID измСняСтся послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ CTID нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Но ΠΈΠ½ΠΎΠ³Π΄Π° использованиС CTID являСтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ строки Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ оТидаСтся ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ «ERROR: Memory exhausted in AllocSetAlloc()»?

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρƒ вас Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ вашС ядро ΠΈΠΌΠ΅Π΅Ρ‚ малСнький Π»ΠΈΠΌΠΈΡ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ рСсурсы. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ запуском сСрвСра Π‘Π” Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° shell, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ выполнится ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ больший сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ… процСсса ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° измСняСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса ΠΈ всСх Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², созданных послС Π΅Ρ‘ запуска. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с SQL ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ backend Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ слишком большой объСм Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Как ΠΌΠ½Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, какая вСрсия PostgreSQL Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°?

Из psql, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ SELECT version();

БущСствуСт Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ способ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…?

НичСго встроСнного Π½Π΅Ρ‚, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для сСбя.

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя?

Как ΠΌΠ½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ внСшнСС соСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†?

PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ внСшниС соСдинСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандартный синтаксис SQL. Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ запросы соСдинСния t1.col ΠΈ t2.col, Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ нСсоСдинённыС строки ΠΈΠ· t1 (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с t2). RIGHT соСдинСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсоСдинённыС строки ΠΈΠ· t2. FULL соСдинСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ совпавшиС строки плюс всС нСсоСдинённыС строки ΠΈΠ· t1 ΠΈ t2. Π‘Π»ΠΎΠ²ΠΎ OUTER являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ назначаСтся Π² LEFT, RIGHT ΠΈ FULL соСдинСниях. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ соСдинСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ INNER соСдинСниями.

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ нСсколько Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…?

НС сущСствуСт способа ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ запрос ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PostgreSQL Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ систСмныС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ спСцифичныС для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, нСпонятно Π΄Π°ΠΆΠ΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ сСбя вСсти Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ±Π°Π·ΠΎΠ²Ρ‹ΠΉ запрос.

contrib/dblink позволяСт запросы ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. РазумССтся, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ соСдинСния с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π½ΠΈΡ….

Как ΠΌΠ½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ нСсколько строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ список, Return more than one row of data from PL/pgSQL functions.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ «relation with OID #### Π½Π΅ сущСствуСт», ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡΡŒ ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π² функциях PL/PgSQL?

Π’ PostgreSQL Π΄ΠΎ вСрсии 8.3, PL/PgSQL ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ сцСнарии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… эффСктов этого состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли функция PL/PgSQL обращаСтся ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ эта Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠ·Π΄Π½Π΅Π΅ удаляСтся ΠΈ пСрСсоздаСтся, Π° функция Π·Π°Ρ‚Π΅ΠΌ вызываСтся снова, Ρ‚ΠΎ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ содСрТимоС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ EXECUTE для доступа ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π² PL/PgSQL. ИспользованиС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° заставит запрос ΠΏΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·.

Π’ PostgreSQL 8.3 ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅Ρ‚.

КакиС Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ?

РСпликация Master/slave позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π³Π»Π°Π²Π½Ρ‹ΠΉ (master) сСрвСр для выполнСния запросов чтСния/записи, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½Ρ‹Π΅ (slave) сСрвСра ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запросы чтСния/SELECT. НаиболСС популярным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ master-slave Π² PostgreSQL являСтся Slony-I.

РСпликация Multi-master позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы чтСния/записи Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…, Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° синхронизация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими сСрвСрами. НаиболСС популярным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² PostgreSQL являСтся PGcluster.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Π΅ ΠΈ основанныС Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ обСспСчСнии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° основС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кластСр сСрвСров PostgreSQL с раздСляСмым устройством хранСния?

PostgreSQL Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ shared storage Π½Π° SAN, SCSI-ΠΏΠ»Π°Ρ‚Π°Ρ…, iSCSI Ρ‚ΠΎΠΌΠ°Ρ… ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… раздСляСмых носитСлях. ΠšΠ»Π°ΡΡ‚Π΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠ°ΠΊ «RAC-style» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ кластСры основанныС Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ИспользованиС раздСляСмых устройств хранСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ‘failover’ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π΅ бСзопасно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅ врСмя Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ процСсс postmaster. РСкомСндуСтся Heartbeat ΠΈ STONITH ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ТёсткиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Ρ€Π°Π·Ρ€Ρ‹Π²Ρƒ соСдинСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Π² Π² ΠΌΠΎΡ‘ΠΌ запросС? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹?

НаиболСС часто ΠΈΠΌΠ΅Π½Π° Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° использования Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈ использовании Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ) ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² рСгистро-зависимом Π²ΠΈΠ΄Π΅; это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ эти ΠΈΠΌΠ΅Π½Π° Π² запросС. НСкоторыС интСрфСйсы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ pgAdmin, Π²ΠΎ врСмя создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ автоматичСски. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π»ΠΈΡΡŒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:

Π― потСрял ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Как я ΠΌΠΎΠ³Ρƒ Π΅Π³ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ?

Никак. Однако, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹

Π•ΡΡ‚ΡŒ Π»ΠΈ Π² PostgreSQL Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹?

Π’ чистом Π²ΠΈΠ΄Π΅ Π½Π΅Ρ‚. Однако PostgreSQL ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² своём Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ совмСстимы с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π” Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями), Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ большС.

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования. (ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ)

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ нСсколькими способами. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π” (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Π½ΠΎ ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚Π΅ΡΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚), Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использованиС языка PL/pgSQL для вашСй ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ PERFORM. НапримСр:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли вмСсто этого Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅:

Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π΄Π°ΠΆΠ΅ Ссли данная функция Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ (Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½Π° строка, содСрТащСС пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ получСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PERFORM.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ограничСния Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² PostgreSQL ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с настоящими Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ это:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ BEGIN, ROLLBACK ΠΈ COMMIT Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ?

PostgreSQL Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… функциях. Как ΠΈ всС запросы PostgreSQL, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ снаруТи Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° хранимая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° для управлСния транзакциями, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° интСрфСйс dblink ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±Π»ΠΎΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² PL/PgSQL, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ BEGIN/EXCEPTION/END создаёт ΠΏΠΎΠ΄Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ «SELECT count(*) FROM bigtable;» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ индСкс. PostgreSQL выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ видимости ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сканированиС всСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ количСство строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ², Π½ΠΎ это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ опСрациях записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ. Колонка reltuples Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pg_class содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ANALYZE Π½Π° эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. На большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ этого значСния составляСт тысячныС Π΄ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

«Π’ΠΎΡ‡Π½Ρ‹ΠΉ» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ count, часто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π² любом случаС; ΠΈΠ·-Π·Π° конкурСнтности MVCC, count Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ запроса SELECT count(*) (ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ уровнями изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ), ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΆΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ запроса. ΠŸΡ€ΠΈ постоянной Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π΄Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° count(*), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Ссли ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ транзакция Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ запрос Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ запускаСтся Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ запроса?

Когда PostgreSQL ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ запрос со всСми ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статистику Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² запросС, часто ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΠΌΡ‹ΠΌΠΈ ΠΈΠ»ΠΈ часто Π½Π΅ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΠΌΡ‹ΠΌΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±ΠΎΠ»Π΅Π΅ эффСктивный, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ извСстно оТидаСтся Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ части запроса. НапримСр, PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сканированиС вмСсто использования индСкса, Ссли осущСствляСтся поиск ‘active=y’ ΠΈ ΠΏΡ€ΠΈ этом извСстно, Ρ‡Ρ‚ΠΎ 99% записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ‘active=y’, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этом случаС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сканированиС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

Π’ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ запросС, PostgreSQL Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΠ³Π΄Π° создаёт ΠΏΠ»Π°Π½ запроса. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ «Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ‹ΠΉ» ΠΏΠ»Π°Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ прСдоставитС ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ запрос. К соТалСнию, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ»Π°Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ прСдоставили Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Π΅ΠΌ срСднСС арифмСтичСскоС ΠΈΠ· Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Иногда люди, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ запросы ΠΊΠ°ΠΊ ΠΌΠ΅Ρ€Ρƒ бСзопасности для прСдотвращСния SQL ΠΈΠ½ΡŒΠ΅ΠΊΡ†ΠΈΠΉ, Π° Π½Π΅ ΠΊΠ°ΠΊ инструмСнт Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ тяТёлых запросов, часто Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ люди Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π° использованиСм ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ссли ΠΈΡ… клиСнтский интСрфСйс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PgJDBC) ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚, PostgreSQL Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ способа Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²; Ссли Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‚ΠΎ нСсколько тСряСтся смысл ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π° сторонС сСрвСра. Запуск статистики, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° сильно Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π½ΠΎΡ€ΠΌΡ‹ ΠΈ Π² автоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² этом случаС ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ, ΠΏΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ согласованны ΠΈ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

Π‘ΠΌ. Using_EXPLAIN. Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ обратится Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π² список рассылки, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Guide to reporting problems.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ запрос Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ запускаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *