ฐานข้อมูล postgres pro ของรัสเซีย ความแตกต่างระหว่าง Postgres Pro Standard และ PostgreSQL ระบบนิเวศ PostgreSQL ในประเทศ

Postgres Pro เป็น DBMS ของรัสเซียที่พัฒนาโดย Postgres Professional โดยมีพื้นฐานมาจาก PostgreSQL DBMS ที่เผยแพร่อย่างอิสระ Postgres Pro รวมอยู่ในการลงทะเบียนซอฟต์แวร์ของรัสเซีย (ดู https://reestr.minsvyaz.ru/reestr/65273/)

ด้วยวิธีนี้ ลูกค้าจะสามารถเข้าถึงฟังก์ชันการทำงานและประโยชน์ด้านประสิทธิภาพที่เป็นประโยชน์ต่อตนเอง โดยไม่ต้องรอ PostgreSQL เวอร์ชันใหม่ (ซึ่งอาจใช้เวลานานถึงหนึ่งปี) ในฐานะผู้เขียน เราให้การสนับสนุนการพัฒนาทั้งหมดของเรา ในฐานะตัวแทนของชุมชนระหว่างประเทศของนักพัฒนา PostgreSQL เรายังให้การสนับสนุนเชิงพาณิชย์สำหรับ PostgreSQL DBMS ที่เผยแพร่อย่างเสรีอีกด้วย

การเปรียบเทียบเวอร์ชันของ PostgreSQL

ดีบีเอ็มเอสPostgreSQL
องค์กร
PostgreSQL
มาตรฐาน
PostgreSQL
DBMS เชิงพาณิชย์ที่พัฒนาโดย Postgres Professional สำหรับแอปพลิเคชันที่มีภารกิจสำคัญและมีภาระงานสูงDBMS โอเพ่นซอร์สของรัสเซีย พัฒนาโดย Postgres Professional โดยอิงจาก PostgreSQL DBMS ที่เผยแพร่อย่างอิสระDBMS ที่เผยแพร่อย่างเสรีซึ่งพัฒนาโดยประชาคมระหว่างประเทศ
การลงทะเบียนซอฟต์แวร์รัสเซียแบบครบวงจร
ตัวนับธุรกรรม 64 บิต
การสำรองข้อมูลส่วนเพิ่มในระดับบล็อก
ใบรับรอง FSTEC SVT 5, NDV 4
การทำธุรกรรมอัตโนมัติ
การแบ่งตาราง
การบีบอัดข้อมูล
มัลติมาสเตอร์
รองรับ 1C
โต๊ะพกพา
คำแนะนำเกี่ยวกับกำหนดการ


เวอร์ชัน PostgreSQL

หมายเลขเวอร์ชัน PostgreSQL มาจากหมายเลขเวอร์ชัน PostgreSQL โดยมีการบวกหนึ่งหลักเพื่อระบุหมายเลขเวอร์ชันปัจจุบัน เมื่อมีการเผยแพร่ PostgreSQL เวอร์ชันรองใหม่ (ซึ่งมักจะเกิดขึ้นเมื่อแพตช์ที่เกี่ยวข้องกับความปลอดภัยและการแก้ไขข้อผิดพลาดร้ายแรงปรากฏขึ้น) การกำหนดหมายเลข PostgreSQL จะถูกรีเซ็ตเป็นเวอร์ชันหนึ่ง ตัวอย่างเช่น เมื่อ PostgreSQL 9.5.1 เปิดตัว PostgresPro 9.5.1.1 จะถูกปล่อยออกมา จากนั้นก่อนที่ PostgreSQL 9.5.2 จะออก Postgres Pro 9.5.1.2, 9.5.1.3 ฯลฯ อาจถูกปล่อยออกมา เมื่อ PostgreSQL 9.5.2 เปิดตัว Postgres Pro จะได้รับการอัปเดตเป็นเวอร์ชัน 9.5.2.1 เป็นต้น

พร้อมๆ กับการปล่อยวาง รหัสแหล่งที่มา Postgres Pro เราเผยแพร่ชุดประกอบของเราเป็นแพ็คเกจภายใต้ แพลตฟอร์มต่างๆ- ระบบปฏิบัติการและเวอร์ชันต่อไปนี้คือ:

  1. ลินุกซ์
    • CentOS 6/7
    • เดเบียน 7/8
    • อูบุนตู 12.04/14.04/16.04/16.10,
    • ออราเคิลลินุกซ์,
    • เซิร์ฟเวอร์ Rosa Enterprise Linux
    • เซิร์ฟเวอร์โคบอลต์ ROSA SX,
    • เซิร์ฟเวอร์ ROSA DX โคบอลต์,
    • โรซ่า มาราธอน LTS 2012,
    • Alt Linux Centaur 8,
    • Alt Linux SPT 6,
    • อัลท์ลินุกซ์ SPT 7,
    • ซูส ลินุกซ์เอ็นเตอร์ไพรส์เซิร์ฟเวอร์
  2. Microsoft ® Windows ® 2012 หรือ 2016.

ฐาน ข้อมูลโพสต์เกรส Pro 9.5.*.* เข้ากันได้กับ PostgreSQL 9.5.* เมื่อไม่จำเป็นต้องย้ายจาก 9.5 ดัมพ์/กู้คืน เมื่อย้ายจากที่มากขึ้น รุ่นก่อนหน้า PostgreSQL ต้องใช้ดัมพ์/กู้คืนหรือ pg_upgrade

Postgres Pro Standard เวอร์ชันปัจจุบันคือ 11.2.1 วันที่วางจำหน่าย - 28 มีนาคม 2019. .

ความแตกต่างระหว่าง Postgres Pro Standard และ PostgreSQL

เมื่อเปรียบเทียบกับ PostgreSQL เวอร์ชันปัจจุบัน ปัจจุบัน Postgres Pro Standard มีการเปลี่ยนแปลงดังต่อไปนี้:

  1. การปรับปรุงประสิทธิภาพบนระบบมัลติคอร์:
    • เพิ่มประสิทธิภาพการจัดสรรตารางแฮชในหน่วยความจำที่ใช้ร่วมกัน ขจัดความขัดแย้งในการล็อคสำหรับกระบวนการจำนวนมาก
    • การเพิ่มประสิทธิภาพเจ้าของทรัพยากร ปรับปรุงประสิทธิภาพของการสืบค้นที่ซับซ้อนและตารางการสืบค้นด้วย จำนวนมากพาร์ติชัน
    • การเพิ่มประสิทธิภาพตัวจัดการบัฟเฟอร์
    • การเพิ่มประสิทธิภาพ LWLock สำหรับสถาปัตยกรรม Power8
    • การเพิ่มประสิทธิภาพการคอมมิตแบบสองเฟส
  2. การปรับปรุงการค้นหาข้อความแบบเต็ม:
    • รองรับการค้นหาวลี
    • รองรับพจนานุกรม hunspell สำหรับการทำงานกับรูปแบบคำ
    • พจนานุกรมบางฉบับ รวมถึงภาษารัสเซียและอังกฤษ รวมอยู่ในการแจกจ่าย และการเชื่อมต่อต้องใช้คำสั่ง SQL หนึ่งคำสั่ง
    • โมดูล shared_ispell ซึ่งปรับประสิทธิภาพการค้นหาข้อความแบบเต็มให้เหมาะสมโดยการโหลดพจนานุกรมลงในหน่วยความจำเมื่อเริ่มต้นเซิร์ฟเวอร์ และไม่ใช่เมื่อเริ่มต้นเซสชัน
  3. ครอบคลุมดัชนี รองรับโครงสร้าง INCLUDING ใน CREATE INDEX
  4. ความสามารถในการพกพา: libicu ได้รับการสนับสนุนบนทุกแพลตฟอร์ม โดยให้การจัดการลำดับการจัดเรียงและการดำเนินการอื่นๆ ที่ชัดเจนด้วยอักขระ Unicode ไลบรารีนี้ปรับปรุงประสิทธิภาพการเรียงลำดับบนแพลตฟอร์มจำนวนหนึ่ง และที่สำคัญคืออนุญาตให้ Postgres Pro ใช้คีย์ตัวย่อ ซึ่งปิดใช้งานใน PostgreSQL เวอร์ชันหลัก
  5. โมดูล pg_trgm ไม่เพียงแต่สนับสนุนการเปรียบเทียบสตริงแบบคลุมเครือเท่านั้น แต่ยังสนับสนุนการค้นหาสตริงย่อยแบบคลุมเครืออีกด้วย
  6. โมดูล pageinspect รองรับการเข้าถึงไม่เพียงแต่ข้อมูลเมตาเท่านั้น แต่ยังรวมถึงการแสดงข้อมูลตารางภายในด้วย
  7. มีการเพิ่มโมดูลใหม่ sr_plan ซึ่งช่วยให้คุณสามารถบันทึกแผนการดำเนินการแบบสอบถาม และใช้แผนที่บันทึกไว้ แทนที่จะสร้างแผนแบบสอบถามใหม่ทุกครั้งที่คุณดำเนินการ
  8. เพิ่มโมดูล dump_stat แล้ว ซึ่งช่วยให้คุณสามารถบันทึกข้อมูลเกี่ยวกับสถิติและเรียกคืนได้เมื่อดัมพ์ฐานข้อมูล ซึ่งช่วยให้คุณเร่งกระบวนการกู้คืนโดยขจัดความจำเป็นในการคำนวณสถิติด้วยคำสั่ง VACUUM ANALYZE หลังจากการกู้คืน
  9. เพิ่มโมดูล JSQuery แล้ว ซึ่งช่วยให้คุณสามารถกำหนดคำสั่งในภาษาพิเศษสำหรับฟิลด์ประเภท JSONB พร้อมรองรับดัชนี GIN
  10. โมดูลให้ ประเภทเพิ่มเติมข้อมูลสำหรับความเข้ากันได้กับ ไมโครซอฟต์ เอสคิวแอลเซิร์ฟเวอร์
  11. โมดูลให้ ตัวดำเนินการเพิ่มเติมความเท่าเทียมกันสำหรับความเข้ากันได้กับ Microsoft SQL Server
  12. โมดูลมีฟังก์ชันที่ไม่ปลอดภัยในการทำธุรกรรมสำหรับการตัดทอนตารางชั่วคราว ป้องกันไม่ให้ไดเร็กทอรี pg_class เติบโต
  13. โมดูลจัดเตรียมชุดฟังก์ชันที่อัปเดตสถิติบนตารางเป้าหมายทันทีหลังจากการดำเนินการ INSERT, UPDATE, DELETE และ SELECT INTO
  14. โมดูลเพิ่มการรองรับคำแนะนำให้กับตัวกำหนดตารางเวลา ซึ่งช่วยให้คุณสามารถปิดใช้งานหรือเปิดใช้งานดัชนีบางตัวเมื่อดำเนินการสืบค้น

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง PostgreSQL และ PostgreSQL ได้ในตารางเปรียบเทียบผลิตภัณฑ์

ใบอนุญาตมาตรฐาน PostgreSQL

Postgres Pro Standard ได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ PostgreSQL พร้อมส่วนเสริม Postgres Professional:

ลิขสิทธิ์บางส่วน (c) 2015-2019, Postgres Professional
ลิขสิทธิ์บางส่วน (c) 1996-2019, PostgreSQL Global Development Group
บางส่วน ลิขสิทธิ์ (c) 1994 ผู้สำเร็จราชการแทนพระองค์แห่งมหาวิทยาลัยแคลิฟอร์เนีย

อนุญาตให้ใช้ คัดลอก ดัดแปลง และแจกจ่ายซอฟต์แวร์นี้และเอกสารประกอบของซอฟต์แวร์นี้เพื่อวัตถุประสงค์ในการทดสอบ การพัฒนาซอฟต์แวร์ การทำความคุ้นเคยกับฟังก์ชันการทำงานของ DBMS การใช้ในกระบวนการศึกษาโดยไม่เสียค่าใช้จ่าย และโดยไม่ต้องลงนามในข้อตกลงใดๆ โดยมีเงื่อนไขว่าสำหรับ แต่ละสำเนาข้อมูลนี้มีให้ไว้ข้างต้นประกาศลิขสิทธิ์ ย่อหน้าปัจจุบัน และสี่ย่อหน้าต่อไปนี้ การใช้งานเพื่อวัตถุประสงค์อื่น การรวมเข้ากับผลิตภัณฑ์อื่น การจำลองแบบ และการดำเนินการอื่น ๆ จำเป็นต้องซื้อใบอนุญาตแยกต่างหาก

มหาวิทยาลัยแห่งแคลิฟอร์เนียจะไม่รับผิดชอบต่อความเสียหายใด ๆ รวมถึงการสูญเสียรายได้ที่เกิดขึ้นโดยตรงหรือโดยอ้อม พิเศษหรือโดยบังเอิญจากการใช้ซอฟต์แวร์นี้หรือเอกสารประกอบ แม้ว่ามหาวิทยาลัยแห่งแคลิฟอร์เนียจะได้รับคำแนะนำถึงความเป็นไปได้ของความเสียหายดังกล่าว .

มหาวิทยาลัยแห่งแคลิฟอร์เนียขอปฏิเสธการรับประกันใด ๆ โดยเฉพาะ ซึ่งรวมถึงแต่ไม่จำกัดเพียง การรับประกันโดยนัยต่อความสามารถเชิงพาณิชย์หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ที่ให้ไว้ ซอฟต์แวร์มีให้ "ตามสภาพ" และมหาวิทยาลัยแคลิฟอร์เนียไม่มีภาระผูกพันในการบำรุงรักษา การสนับสนุน การอัปเดต การปรับปรุง หรือการเปลี่ยนแปลง

บริษัท Postgres Professional Limited Liability Company จะไม่รับผิดชอบต่อความเสียหายใดๆ รวมถึงการสูญเสียรายได้ที่เกิดจากการใช้ซอฟต์แวร์นี้หรือเอกสารประกอบโดยตรงหรือโดยอ้อม เป็นพิเศษหรือโดยบังเอิญ แม้ว่า Postgres Professional Limited Liability Company จะได้รับคำแนะนำถึงความเป็นไปได้ของความเสียหายดังกล่าวแล้วก็ตาม .

บริษัทรับผิด Postgres Professional Limited ขอปฏิเสธการรับประกันใดๆ โดยเฉพาะ ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันโดยนัยต่อความสามารถเชิงพาณิชย์หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ซอฟต์แวร์นี้จัดทำขึ้น "ตามสภาพที่เป็นอยู่" และบริษัท Postgres Professional Limited Liability Company ไม่มีภาระผูกพันในการจัดให้มีการบำรุงรักษา การสนับสนุน การอัปเดต การขยายเวลา หรือการเปลี่ยนแปลง

ประวัติความเป็นมาของ POSTGRES เริ่มต้นในปี 1977 ด้วยฐานข้อมูล Ingress

ในปี 1986 ได้มีการเปลี่ยนชื่อเป็น PostgreSQL (อ่านว่า Post-Gres-Q-El) ที่มหาวิทยาลัยเบิร์กลีย์ แคลิฟอร์เนีย

ในปี 1995 Postgres ได้กลายเป็นฐานข้อมูลแบบเปิด psql แบบโต้ตอบปรากฏขึ้น

ในปี 1996 Postgres95 ได้เปลี่ยนชื่อเป็น PostgreSQL เวอร์ชัน 6.0

Postgres มีนักพัฒนาหลายร้อยรายทั่วโลก

สถาปัตยกรรม PostgreSQL

PostgreSQL เป็นเซิร์ฟเวอร์ฐานข้อมูลแบบรวมที่มีกลไกการจัดเก็บข้อมูลเดียว Postgres ใช้โมเดลไคลเอ็นต์-เซิร์ฟเวอร์

สำหรับไคลเอนต์แต่ละราย กระบวนการใหม่ (ไม่ใช่เธรด!) จะถูกสร้างขึ้นบนเซิร์ฟเวอร์ เพื่อทำงานกับกระบวนการไคลเอนต์ดังกล่าว เซิร์ฟเวอร์ใช้เซมาฟอร์

คำขอของลูกค้าต้องผ่านขั้นตอนต่อไปนี้

1. เชื่อมต่อ

2. การแยกวิเคราะห์: มีการตรวจสอบความถูกต้องของคำขอและสร้างแผนผังแบบสอบถาม parser ขึ้นอยู่กับยูทิลิตี้ Unix พื้นฐาน yacc และ lex

3. เขียนใหม่: มีการใช้แผนผังแบบสอบถามและมีการตรวจสอบกฎเกณฑ์ที่อยู่ในนั้นด้วย ไดเร็กทอรีระบบ- แต่ละครั้งที่แบบสอบถามของผู้ใช้ถูกเขียนใหม่ลงในแบบสอบถามที่เข้าถึงตารางฐานข้อมูล

4. เครื่องมือเพิ่มประสิทธิภาพ: สำหรับแต่ละคำขอ แผนการสืบค้นจะถูกสร้างขึ้น ซึ่งจะถูกถ่ายโอนไปยังผู้ดำเนินการ จุดประสงค์ของแผนคือทุกคนจะผ่านมันไปได้ ตัวเลือกที่เป็นไปได้รับผลลัพธ์ (ไม่ว่าจะใช้ดัชนี การรวม ฯลฯ) และเลือกตัวเลือกที่เร็วที่สุด

5. การดำเนินการสืบค้น: ผู้ดำเนินการจะวนซ้ำแผนผังและรับผลลัพธ์โดยใช้การเรียงลำดับ การรวม ฯลฯ และส่งคืนแถว

Postgres เป็นฐานข้อมูลเชิงวัตถุสัมพันธ์ แต่ละตารางในนั้นแสดงถึงคลาส และการสืบทอดจะถูกนำไปใช้ระหว่างตาราง ใช้มาตรฐาน SQL92 และ SQL99

โมเดลธุรกรรมถูกสร้างขึ้นบนพื้นฐานของสิ่งที่เรียกว่าการควบคุมพร้อมกันหลายเวอร์ชัน (MVCC) ซึ่งให้ ประสิทธิภาพสูงสุด- ความสมบูรณ์ในการอ้างอิงนั้นมั่นใจได้ด้วยการมีอยู่ของคีย์หลักและรอง

องค์กรของ PostgreSQL DBMS

เช่นเดียวกับ DBMS อื่นๆ PostgreSQL ต้องให้บริการการสืบค้น SQL และส่งกลับผลลัพธ์ แอปพลิเคชันไคลเอนต์- เมื่อต้องการทำเช่นนี้ เครื่องมือเพิ่มประสิทธิภาพแบบสอบถาม DBMS จะทำการตัดสินใจ การใช้งานที่เหมาะสมที่สุดทรัพยากรและสร้างแผนการสืบค้น ในเวลาเดียวกัน เขาสามารถพึ่งพากลไกการเร่งการทำงานที่ใช้ (ดัชนี แคชหน่วยความจำ ทรัพยากรโปรเซสเซอร์ ข้อมูลสถิติ ฯลฯ)
ผลลัพธ์แบบสอบถามจะถูกส่งกลับไปยังการเชื่อมต่อไคลเอนต์

ใน Windows ไฟล์บริการ pg_ctl.exe จะควบคุมทุกอย่าง (หยุด เริ่ม เริ่มใหม่)

โปรแกรมฐานข้อมูลนั้นคือ postgres.exe

เครื่องมือเพิ่มประสิทธิภาพคิวรีนั้นอยู่ภายใต้การควบคุมของนักพัฒนาเพียงเล็กน้อย ดังนั้นเราจะกลับไปที่ส่วนการวิเคราะห์ประสิทธิภาพโดยอ้อมเท่านั้น



แต่การจัดการพื้นที่ดิสก์มีความสำคัญอย่างยิ่ง เช่นเดียวกับ DBMS อื่นๆ สำหรับฐานข้อมูล PostgreSQL ควรใช้ RAID 10 สำหรับฐานข้อมูลและดิสก์อาร์เรย์แยกต่างหากสำหรับบันทึก การใช้ระบบ STORAGE ยังส่งผลดีต่อประสิทธิภาพโดยรวมอีกด้วย อีกหนึ่งฟีเจอร์ที่เพิ่มความเร็วในการทำงานด้วยการวางข้อมูลบน ไดรฟ์ที่แตกต่างกันเหล่านี้คือพื้นที่ตาราง

สิ่งสำคัญสำหรับผู้ดูแลระบบคลังข้อมูลหลายกิกะไบต์ พื้นที่ตารางช่วยให้สามารถวางตารางและดัชนีขนาดใหญ่บนดิสก์หรืออาร์เรย์แยกกัน ปรับปรุงประสิทธิภาพการสืบค้น

PostgreSQL มีลักษณะพิเศษในการใช้งานพื้นที่เก็บข้อมูลซึ่งเรียกว่า "คลัสเตอร์" ในกรณีนี้ เรากำลังพูดถึงตำแหน่งไดเร็กทอรีสำหรับฐานข้อมูล นอกจากนี้ PostgreSQL ยังจัดระเบียบโครงสร้างไฟล์เดียวโดยที่แต่ละไฟล์ไม่ตรงกับตารางหรือวัตถุฐานข้อมูลอื่นโดยตรง

เมื่อทำการติดตั้ง คุณจะต้องระบุ “คลัสเตอร์” (ไดเร็กทอรีการอ่าน)

รูปที่ 6.7.1

เมื่อติดตั้งแล้ว PostgreSQL จะสร้าง ฐานระบบ postgres และฐานข้อมูล template1 เป็นเทมเพลตการตั้งค่าสำหรับฐานข้อมูลใหม่ทั้งหมด โดยทั่วไปในสภาพแวดล้อม Linux ไดเร็กทอรี /var/postgres/data จะมีไฟล์บริการจำนวนหนึ่งสำหรับ PostgreSQL และไดเร็กทอรี /var/postgres/data/base จะมีฐานข้อมูล โดยแต่ละไฟล์อยู่ในไดเร็กทอรีแยกกันของตัวเอง

น่าเสียดายที่วิธีการจัดเก็บข้อมูลที่ใช้ใน PostgreSQL จำเป็นต้องมีการบำรุงรักษาเพิ่มเติม - การจัดเรียงข้อมูลเป็นระยะของฐานข้อมูลด้วยคำสั่ง VACUUM บันทึก. แพลตฟอร์มไม่ได้ใช้มุมมองข้อความค้นหาที่เป็นรูปธรรม (มุมมองของผู้ใช้)

ขนาดฐานข้อมูล

ในขณะนี้ (เวอร์ชัน 9.1.2) PostgreSQL มีข้อจำกัดดังต่อไปนี้:

จุดแข็งของ PostgreSQL คือ:

1. รองรับฐานข้อมูลขนาดเกือบไม่จำกัด

2. กลไกธุรกรรมและการจำลองแบบที่มีประสิทธิภาพและเชื่อถือได้

3. ระบบที่ขยายได้ของภาษาการเขียนโปรแกรมในตัว: รองรับ PL/pgSQL, PL/Perl, PL/Python และ PL/Tcl เป็นมาตรฐาน

4. คุณสามารถใช้ PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme และ PL/sh และยังรองรับการโหลดโมดูลที่เข้ากันได้กับ C อีกด้วย

5. มรดก;

6. ขยายได้ง่าย

ยูทิลิตี้การดูแลฐานข้อมูล PostgreSQL pgAdmin - เปลือกกราฟิกการออกแบบและการดูแลระบบ PostgreSQL DBMS สำหรับระบบ Unix และ Windows

รูปที่ 6.7.2

Pgadmin เขียนด้วยภาษาโปรแกรม C และใช้ชุดพัฒนาแพลตฟอร์ม wxWidgets (เดิมคือ wxWindows) ที่ยอดเยี่ยม pgAdmin ได้รับการเผยแพร่ภายใต้ใบอนุญาต PostgreSQL เช่น ยังเป็นซอฟต์แวร์ฟรีอีกด้วย

PostgreSQL เป็น DBMS เชิงวัตถุแบบโอเพ่นซอร์สข้ามแพลตฟอร์ม บทความนี้จะแสดงวิธีการติดตั้ง PostgreSQL อูบุนตู ลินุกซ์ให้เชื่อมต่อและทำการจับคู่ คำสั่ง SQL อย่างง่ายรวมถึงวิธีตั้งค่าการสำรองข้อมูล

หากต้องการติดตั้ง PostgreSQL 9.2 บน Ubuntu 12.10 ให้รันคำสั่งต่อไปนี้:

sudo apt-add-repository ppa:pitti/ postgresql
อัปเดต sudo apt-get
sudo apt-get ติดตั้ง postgresql-9.2

มาลองทำงานกับ DBMS ผ่านเชลล์กันดีกว่า:

sudo -u postgres psql

มาสร้างฐานข้อมูลทดสอบและผู้ใช้ทดสอบกัน:

สร้างฐานข้อมูล test_database;
สร้างผู้ใช้ test_user ด้วยรหัสผ่าน "qwerty" ;
ให้สิทธิ์ทั้งหมดบนฐานข้อมูล test_database ให้กับ test_user;

หากต้องการออกจากเชลล์ ให้ป้อนคำสั่ง \q

ตอนนี้เรามาลองทำงานกับฐานข้อมูลที่สร้างขึ้นในนามของ test_user:

psql -h localhost test_database test_user

มาสร้างตารางใหม่กันเถอะ:

สร้างลำดับ user_ids;
สร้างผู้ใช้ตาราง (
id INTEGER คีย์หลักเริ่มต้น NEXTVAL ("user_ids" ) ,
เข้าสู่ระบบ CHAR(64) ,
รหัสผ่าน CHAR(64));

โปรดทราบว่า PostgreSQL ต่างจาก DBMS อื่นๆ ตรงที่ไม่มีคอลัมน์ที่มีคุณสมบัติ auto_increation Postgres ใช้ลำดับแทน ในตอนนี้ ก็เพียงพอแล้วที่จะรู้ว่าการใช้ฟังก์ชัน nextval ทำให้เราได้รับตัวเลขเฉพาะสำหรับลำดับที่กำหนด:

เลือกถัดไป ("user_ids" ) ;

โดยการตั้งค่าเริ่มต้นสำหรับฟิลด์ id ของตารางผู้ใช้เป็น ถัดไป("user_ids")เราได้รับเอฟเฟกต์แบบเดียวกับที่ auto_increation ให้มา เมื่อเพิ่มบันทึกใหม่ลงในตาราง เราไม่จำเป็นต้องระบุรหัส เนื่องจากรหัสเฉพาะจะถูกสร้างขึ้นโดยอัตโนมัติ หลายตารางสามารถใช้ลำดับเดียวกันได้ ด้วยวิธีนี้เราสามารถรับประกันได้ว่าค่าของบางฟิลด์ในตารางเหล่านี้จะไม่ทับซ้อนกัน ในแง่นี้ ลำดับมีความยืดหยุ่นมากกว่าการเพิ่มขึ้นอัตโนมัติ

คุณสามารถสร้างตารางเดียวกันได้โดยใช้เพียงคำสั่งเดียว:

สร้างตาราง users2 (
รหัสหลักซีเรียลคีย์
เข้าสู่ระบบ CHAR(64) ,
รหัสผ่าน CHAR(64));

ในกรณีนี้ ลำดับสำหรับฟิลด์ id จะถูกสร้างขึ้นโดยอัตโนมัติ

ขณะนี้การใช้คำสั่ง \d คุณสามารถดูรายการตารางที่มีอยู่ทั้งหมด และเมื่อใช้ \d ผู้ใช้ คุณสามารถดูคำอธิบายของตารางผู้ใช้ได้ หากคุณไม่ได้รับข้อมูลที่ต้องการ ให้ลอง \d+ แทน \d คุณสามารถรับรายการฐานข้อมูลได้ด้วยคำสั่ง \l และสลับไปยังฐานข้อมูลเฉพาะด้วยคำสั่ง \c dbname หากต้องการแสดงวิธีใช้คำสั่ง ให้พูด \? -

สิ่งสำคัญที่ควรทราบคือใน PostgreSQL ตามค่าเริ่มต้น ชื่อตารางและคอลัมน์จะถูกแปลงไป ตัวพิมพ์เล็ก- หากคุณไม่ต้องการให้มีพฤติกรรมเช่นนี้ คุณสามารถใช้เครื่องหมายคำพูดคู่ได้:

สร้างตาราง "anotherTable" ("someValue" VARCHAR (64 ) ) ;

คุณสมบัติอื่นของ PostgreSQL ที่อาจทำให้เกิดปัญหาเมื่อเริ่มทำงานกับ DBMS นี้คือสิ่งที่เรียกว่า "สคีมา" สคีมาเป็นเหมือนเนมสเปซสำหรับตาราง เช่น ไดเร็กทอรีที่มีตารางอยู่ภายในฐานข้อมูล

การสร้างสคีมา:

สร้างการจอง SCHEMA;

เปลี่ยนไปใช้รูปแบบ:

ตั้งค่า search_path ถึงการจอง;

คุณสามารถดูรายการโครงร่างที่มีอยู่ได้โดยใช้คำสั่ง \dn สคีมาเริ่มต้นมีชื่อว่าสาธารณะ โดยหลักการแล้ว คุณสามารถใช้ PostgreSQL ได้สำเร็จโดยไม่ต้องรู้ว่ามีสคีมาอยู่ แต่เมื่อทำงานกับโค้ดเดิมและในบางกรณี Edge การรู้เกี่ยวกับสคีมาอาจมีประโยชน์มาก

มิฉะนั้นการทำงานกับ PostgreSQL ก็ไม่แตกต่างจากการทำงานกับ DBMS เชิงสัมพันธ์อื่น ๆ มากนัก:

INSERT INTO ผู้ใช้ (เข้าสู่ระบบ, รหัสผ่าน)
ค่านิยม ("afiskon" , "123456" ) ;
เลือก * จากผู้ใช้;

หากคุณพยายามเชื่อมต่อกับ Postgres จากเครื่องอื่น คุณจะล้มเหลว:

psql -h 192.168.0.1 test_database test_user

Psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: การเชื่อมต่อถูกปฏิเสธ
เซิร์ฟเวอร์ทำงานบนโฮสต์ "192.168.0.1" และยอมรับหรือไม่
การเชื่อมต่อ TCP/IP บนพอร์ต 5432?

หากต้องการแก้ไขปัญหานี้ ให้เพิ่มบรรทัด:

Listen_addresses = "localhost,192.168.0.1"

... ไปยังไฟล์ /etc/postgresql/9.2/main/postgresql.conf เช่นกัน

จนถึงปัจจุบัน ระบบนิเวศสำหรับการสร้างและปรับใช้โซลูชันประสิทธิภาพสูงได้ก่อตัวขึ้นรอบๆ PostgreSQL DBMS แบบโอเพ่นซอร์สที่มีฟังก์ชันการทำงานเต็มรูปแบบ ทำให้ DBMS นี้ถือเป็นทางเลือกที่แท้จริงแทนผลิตภัณฑ์เชิงพาณิชย์

20/07/2015 อีวาน Panchenko

PostgreSQL DBMS แบบโอเพ่นซอร์สที่ทำงานได้อย่างสมบูรณ์ได้สร้างระบบนิเวศรอบๆ ตัวมันเองสำหรับการสร้างและใช้งานโซลูชันประสิทธิภาพสูง และในปัจจุบัน ระบบนี้ถือได้ว่าเป็นทางเลือกแทนผลิตภัณฑ์เชิงพาณิชย์

รากฐานของ PostgreSQL อยู่ในโครงการ POSTGRES ของ Michael Stonebraker ศาสตราจารย์แห่งมหาวิทยาลัยแคลิฟอร์เนียที่ Berkeley ซึ่งได้รับการพัฒนาให้เป็นหนึ่งในสามสาขา ฐานข้อมูลเชิงสัมพันธ์ข้อมูล. โครงการแรกเติบโตจาก System R ซึ่งสนับสนุนโดย IBM ในช่วงต้นทศวรรษที่ 70 โครงการที่สองคือโครงการ Ingres ของ Stonebreaker และโครงการที่สามคือ Oracle Ingres DBMS พัฒนาขึ้นตามจิตวิญญาณของ Berkeley ในฐานะ ฐานเปิดรหัสที่แจกจ่ายบนเทปในราคา รายการไปรษณีย์- ระบบได้รับการพัฒนาสำหรับระบบปฏิบัติการ UNIX PDP 11 ซึ่งกำหนดความนิยมไว้ล่วงหน้า และใบอนุญาต BSD แบบเสรีนิยมและความสามารถพิเศษของ Stonebreaker มีส่วนช่วยในการพัฒนา Ingres และการเกิดขึ้นของ ปริมาณมาก DBMS เชิงสัมพันธ์

โครงการ Postgres เป็นผลมาจากการทำความเข้าใจประสบการณ์ของ Ingres และความปรารถนาที่จะเอาชนะข้อจำกัดของประเภทข้อมูลโดยอนุญาตให้มีคำจำกัดความของประเภทใหม่ งานในโครงการนี้เริ่มขึ้นในปี 2528 ในช่วงปี พ.ศ. 2528 ถึง พ.ศ. 2531 คำอธิบายของแบบจำลองข้อมูล ภาษาคิวรี POSTQUEL และพื้นที่เก็บข้อมูลปรากฏขึ้น แต่ถึงกระนั้นก็มีการบันทึกข้อ จำกัด โมเดลเชิงสัมพันธ์อันเป็นผลมาจากความเรียบง่าย เวอร์ชันแรกของ DBMS Postgres สำหรับโพสต์เชิงสัมพันธ์เปิดตัวในปี 1989 และโค้ด Ingres และ Postgres ไม่มีอะไรที่เหมือนกัน โครงการนี้ปิดตัวลงหลังจากการเปิดตัวเวอร์ชัน 4.2 ในปี 1993 แต่โค้ดโอเพ่นซอร์สและใบอนุญาต BSD สนับสนุนให้ Andrew Yu และ Jolly Chen ผู้สำเร็จการศึกษาจาก Berkeley พัฒนาต่อไปในปี 1994 หลังจากแทนที่ภาษาคิวรี POSTQUEL ด้วยภาษามาตรฐานแล้ว โครงการ SQLที่เรียกว่า Postgres95 ดึงดูดผู้ติดตามจำนวนมากได้ทันที

ในปี 1996 โครงการนี้ได้รับการตั้งชื่อว่า PostgreSQL เพื่อเน้นการเชื่อมต่อกับโครงการ POSTGRES และ SQL ดั้งเดิม และถูกยึดครองโดย กลุ่มความคิดริเริ่มผู้ใช้และนักพัฒนาของ PGDG (PostgreSQL Global Development Group) การตัดสินใจทั้งหมดเกี่ยวกับแผนการพัฒนาและการเปิดตัวเวอร์ชันใหม่นั้นจัดทำโดยคณะกรรมการบริหาร (ทีมงานหลัก) ซึ่งประกอบด้วยคนหกคน นอกจากนี้ยังมีกลุ่มนักพัฒนารายใหญ่ (ประมาณ 20 คน สามคนมาจากรัสเซีย) ซึ่งมีส่วนสำคัญในการพัฒนา PostgreSQL เช่นเดียวกับนักพัฒนาเท่านั้น

การพัฒนาและการสนับสนุน

วงจรการทำงานของ PostgreSQL เวอร์ชัน "หลัก" ถัดไปมักจะใช้เวลาประมาณหนึ่งปี ในระหว่างนี้ใครๆ ก็สามารถส่งคำแนะนำ (แพตช์) เพื่อประกอบการพิจารณาได้ รายชื่อผู้รับจดหมาย pgsql-hackers ใช้เพื่อหารือเกี่ยวกับพวกเขา และหากแพตช์ได้ผ่านขั้นตอนการตรวจสอบภาคบังคับโดยนักพัฒนารายอื่น รายการนั้นจะรวมอยู่ในรีลีสใหม่ (มีขั้นตอนในการติดตามสถานะของคำแนะนำที่เสนอบนเว็บไซต์ postgresql.org) ในระหว่างการเตรียมการเผยแพร่ เวอร์ชันเบต้าจะปรากฏขึ้น ซึ่งโดยปกติแล้วจะรวมกับการจัดการประชุม PGDG

เมื่อถึงจุดหนึ่ง จะมีการประกาศขั้นตอนการแช่แข็งโค้ด ในระหว่างนั้นจะมีคำแนะนำจาก ฟังก์ชั่นใหม่ไม่ได้รับการยอมรับ แต่อนุญาตให้แก้ไขหรือปรับปรุงโค้ดได้เท่านั้น บางครั้งในขณะที่ทำงานกับเวอร์ชันใหม่ ข้อผิดพลาดจากเวอร์ชันก่อนหน้าจะถูกค้นพบหรือแก้ไข (แบ็คพอร์ต) และเนื่องจากมีการแก้ไขสะสม จึงมีการตัดสินใจที่จะเผยแพร่เวอร์ชันเสถียรใหม่ที่เข้ากันได้กับเวอร์ชันเก่า ตัวอย่างเช่น 9.4.4 เป็นการแก้ไขข้อบกพร่องสำหรับเวอร์ชันเสถียร 9.4 เมื่อใกล้สิ้นสุดรอบ Release Candidate จะถูกปล่อยออกมา และจากนั้น PostgreSQL เวอร์ชันหลักใหม่จะถูกปล่อยออกมา

PGDG ให้การสนับสนุนเวอร์ชันหลักผ่านรายชื่ออีเมลเป็นเวลาห้าปีนับจากวันที่เผยแพร่ และข้อความแสดงข้อผิดพลาดที่มีรูปแบบถูกต้องมีโอกาสที่จะได้รับการตรวจสอบอย่างรวดเร็วทุกครั้ง และมักมีกรณีที่โปรแกรมแก้ไขออกภายใน 24 ชั่วโมง นอกเหนือจากการสนับสนุนจากชุมชนนักพัฒนาแล้ว PostgreSQL ยังได้รับการสนับสนุนเชิงพาณิชย์จากบริษัทจำนวนหนึ่งอีกด้วย เช่น EnterpriseDB ในอเมริกาเหนือ, 2ndQuadrant, Dalibo และบริษัทอื่นๆ ในยุโรป และ Postgres Professional ในรัสเซีย

รอยเท้า PostgreSQL ของรัสเซีย

หนึ่งในนักพัฒนา PostgreSQL คนแรกๆ (1996) คือ Vadim Mikheev จาก Krasnoyarsk เขาเป็นผู้เขียนส่วนต่างๆ ของ DBMS เช่น: การควบคุมหลายเวอร์ชัน การเข้าถึงพร้อมกัน(การควบคุมการทำงานพร้อมกันหลายเวอร์ชัน, MVCC) ซึ่งการจัดการธุรกรรมและการสนับสนุนความสมบูรณ์ของข้อมูลมีพื้นฐานอยู่ใน PostgreSQL สมัยใหม่ ระบบทำความสะอาด (สุญญากาศ); บันทึกการทำธุรกรรม (WAL); ข้อความค้นหาและทริกเกอร์ที่ซ้อนกัน ปัจจุบันในบรรดานักพัฒนาหลักของโครงการ PostgreSQL มีตัวแทนสามคนจากรัสเซีย: นักวิจัยที่ State Aviation Institute of Moscow State University Oleg Bartunov สำเร็จการศึกษาจากภาควิชาฟิสิกส์ของ Moscow State University Fedor Sigaev และ Alexander Korotkov (MEPhI) พวกเขาแปล PostgreSQL เป็นภาษาท้องถิ่น (รองรับการเข้ารหัสระดับประเทศ รวมถึง Unicode) สร้างระบบสำหรับการค้นหาข้อความแบบเต็มและการทำงานกับข้อมูลกึ่งโครงสร้าง (hstore, json, jsonb) และยังเสนอวิธีการจัดทำดัชนีใหม่ (GiST, GIN, SP-GiST) ).

Bartunov และ Sigaev เป็นส่วนหนึ่งของทีมพัฒนาของพอร์ทัล Rambler (ผู้นำของ Runet ในช่วงต้นทศวรรษ 2000) ซึ่งจำเป็นต้องสร้างระบบการจัดการเนื้อหาและแพลตฟอร์มสำหรับการพัฒนาโครงการเนื้อหาที่ผสมผสานประสิทธิภาพและความยืดหยุ่นสูง ตอนนั้นเองที่เกิดแนวคิดในการจัดระเบียบการค้นหาอย่างรวดเร็วผ่านอาร์เรย์โดยใช้ DBMS แต่ในเวลานั้น PostgreSQL รองรับการทำงานกับดัชนีประเภท B-tree และ R-tree ซึ่งไม่เหมาะกับงานนี้ ดังนั้นนักพัฒนาจึงหันมา ความสนใจของพวกเขาต่อโครงสร้างพื้นฐานของแผนผังดัชนีทั่วไป Generalized Search Tree (GiST)

ระบบ GiST เดิมที โครงการวิจัยลักษณะทั่วไปของ R-tree และรูปแบบต่างๆ (RD-tree, Signature-tree ฯลฯ) และการใช้งาน GiST สำหรับ PostgreSQL ที่เสนอโดยผู้เขียน GiST มีข้อจำกัดมากมาย (เฉพาะคีย์ขนาดคงที่ ขาดการสนับสนุนการกู้คืน ฯลฯ .) ซึ่งไม่อนุญาตให้เราพูดถึง ใช้ในอุตสาหกรรม- Bartunov และ Sigaev ปรับปรุง GiST ให้ทันสมัย ​​ซึ่งกลายเป็นองค์ประกอบเต็มรูปแบบของ PostgreSQL - ดัชนีได้รับการพัฒนาบนพื้นฐานของ ค้นหาอย่างรวดเร็วบนอาร์เรย์ ระบบค้นหาข้อความแบบเต็มของ OpenFTS และดัชนีสำหรับการค้นหาต้นไม้และกราฟ ltree การใช้งาน GiST ของ R-tree ได้เข้ามาแทนที่การใช้งาน R-tree ที่แยกจาก PostgreSQL

ในปี 2011 Alexander Korotkov ในฐานะนักศึกษาระดับบัณฑิตศึกษาที่ MEPhI ซึ่งเป็นส่วนหนึ่งของโปรแกรม Google Summer of Code ได้พัฒนาการใช้งานอัลกอริทึมการสร้าง GiST บนพื้นที่ดิสก์ และนำเสนอในการประชุม PGConf.EU 2011 (https://wiki .postgresql.org/images/0/07 /Fast_GiST_index_build.pdf) จากนั้นเขาก็แนะนำ อัลกอริธึมใหม่การแยกโหนดสำหรับ R-tree ซึ่งใช้ในแอปพลิเคชันต่างๆ ของ GiST: สำหรับประเภทข้อมูลเรขาคณิตในตัว, ช่วง, pgSphere, ประเภทเรขาคณิตใน PostGIS

ระบบค้นหาข้อความแบบเต็มของ PostgreSQL เป็นหนึ่งในข้อได้เปรียบหลักของ DBMS นี้: ความสามารถในการรวมเกณฑ์การค้นหาข้อความแบบเต็มในการสืบค้น SQL ที่กำหนดเองจะแยกการค้นหาใน PostgreSQL ออกจากเครื่องมือค้นหาเฉพาะทาง เช่น Solr หรือ Sphynx Sigaev และ Korotkov พัฒนาระบบค้นหาข้อความคลุมเครือโดยอิงจากการสลายตัวแบบไตรแกรม - โมดูล pg_trgm ซึ่งเพิ่มความสามารถในการจัดทำดัชนีการค้นหาโดยใช้เงื่อนไข LIKE/ILIKE เช่นเดียวกับนิพจน์ทั่วไป การค้นหาดัชนีสำหรับนิพจน์ทั่วไป pg_trgm ถูกนำเสนอบน การประชุมนานาชาติ PGCon 2012 (http://www.pgcon.org/2012/schedule/attachments/248_Alexander%20Korotkov%20-%20Index%20support%20for%20regular%20expression%20search.pdf) อย่างไรก็ตาม เพื่อให้การค้นหาข้อความแบบเต็มและการค้นหาในอาร์เรย์มีประสิทธิภาพ ประสิทธิภาพของดัชนี GiST ยังไม่เพียงพอ - จำเป็นต้องมีดัชนีย้อนกลับ โดยการเปรียบเทียบกับ GiST ดัชนีดังกล่าวได้ถูกนำมาใช้: Generalized Inverted iNdex (GIN) อนุญาตให้จัดทำดัชนีของวัตถุที่ซับซ้อนด้วยการแบ่งพาร์ติชันเป็นคีย์โดยพลการ GIN ถูกนำเสนอที่งาน PostgreSQL Anniversary Summit ในเมืองโตรอนโตในปี 2549 (http://www.sai.msu.su/~megera/postgres/talks/Gin-toronto-2006.pdf) ด้วยเหตุนี้ PostgreSQL DBMS จึงสามารถแข่งขันกับระบบค้นหาข้อความแบบเต็มแบบพิเศษได้ การพัฒนาเพิ่มเติมของ GiST คือเทคโนโลยีในการค้นหาเพื่อนบ้านที่ใกล้ที่สุด (KNN) ซึ่งช่วยให้สามารถจัดระเบียบการค้นหาที่มีประสิทธิภาพสำหรับทั้งวัตถุทางเรขาคณิตที่ใกล้ที่สุดและรูปภาพที่คล้ายกันและชุดข้อมูลที่ซับซ้อนอื่น ๆ

ส่วนขยาย PostgreSQL ที่ได้รับความนิยมมากที่สุดอย่างหนึ่งคือโมดูล PostGIS ซึ่งรองรับมาตรฐาน OpenGIS และการฉายภาพ GIS ทั้งหมดสำหรับการทำงานกับข้อมูลเรขาคณิตในช่องว่างตั้งแต่สองถึงห้ามิติ PostGIS มีอัลกอริธึมการแบ่งโหนดที่พัฒนาโดย Korotkov สำหรับประเภทเรขาคณิต ซึ่งเพิ่มความเร็วในการค้นหาจากสามเป็นสิบเท่า

เริ่มต้นด้วยเวอร์ชัน 8.2 (2549) ส่วนขยาย Hstore ปรากฏใน PostgreSQL ซึ่งใช้ประเภทข้อมูลสำหรับการจัดเก็บชุดคู่คีย์-ค่า และด้วยความต้องการที่เพิ่มขึ้นสำหรับ DBMS เชิงเอกสาร แนวคิดจึงเกิดขึ้นเพื่อเพิ่มการสนับสนุนสำหรับการซ้อน ประเภทและอาร์เรย์ไปยัง Hstore ต้นแบบถูกนำเสนอโดย Bartunov และ Sigaev ในการประชุม PGCon 2013 ต่อจากนั้น ชนิดข้อมูล jsonb ก็ถูกสร้างขึ้นตามงานนี้ ที่เก็บข้อมูลไบนารีวัตถุ json ซึ่งกลายเป็นหนึ่งใน คุณสมบัติที่สำคัญ PostgreSQL เวอร์ชัน 9.4.4

DBMS PostgreSQL สมัยใหม่

ตลอดประวัติศาสตร์การพัฒนาที่ยาวนานกว่า 20 ปี PostgreSQL ได้พัฒนาจากการพัฒนาทางวิชาการไปสู่ ​​DBMS ระดับองค์กรเต็มรูปแบบ ซึ่งถือเป็นทางเลือกที่แท้จริงนอกเหนือจากฐานข้อมูลเชิงพาณิชย์ สิทธิ์การใช้งาน PostgreSQL อนุญาตให้ใช้งาน ปรับเปลี่ยนโค้ด และรวมไว้ในผลิตภัณฑ์อื่นๆ ได้ไม่จำกัด รวมถึงผลิตภัณฑ์ที่เป็นกรรมสิทธิ์และเชิงพาณิชย์

ความน่าเชื่อถือและความปลอดภัย

ปัญหาด้านความน่าเชื่อถือมีความสำคัญอย่างยิ่งในแอปพลิเคชันระดับองค์กรเมื่อทำงานกับข้อมูลที่มีความสำคัญต่อภารกิจ PostgreSQL DBMS ทำให้สามารถกำหนดค่าการสำรองข้อมูลแบบ hot และกู้คืนไปยังจุดที่กำหนดในอดีตได้ และยังรองรับ ประเภทต่างๆการจำลองแบบ (ซิงโครนัส อะซิงโครนัส และคาสเคด) ทั้งหมดนี้ช่วยให้คุณสร้างระบบที่ทนทานต่อข้อผิดพลาดด้วยการสำรองข้อมูลแบบ "อุ่น" หรือ "ร้อน" รวมถึงสร้างโซลูชันคลัสเตอร์ที่เชื่อถือได้

PostgreSQL ให้ความสำคัญกับความปลอดภัยเป็นพิเศษ - DBMS มอบให้ วิธีการต่างๆการรับรองความถูกต้อง: ด้วยรหัสผ่านในรูปแบบที่ชัดเจนหรือเข้ารหัส (md5) โดยใช้ เซิร์ฟเวอร์ LDAP, RADIUS หรือโมดูลปลั๊กอิน (PAM); โดยการรับรองความถูกต้องภายนอก (ident, peer, ใบรับรอง - ใบรับรอง SSL, gss - Kerberos ผ่านโปรโตคอล GSSAPI, sspi - Kerberos/NTLM สำหรับ Windows) เมื่อจัดการผู้ใช้และการเข้าถึงออบเจ็กต์ฐานข้อมูล คุณสามารถเลือกผู้ใช้และบทบาทแต่ละรายการซึ่งสามารถซ้อนกันได้ การเข้าถึงออบเจ็กต์ฐานข้อมูล (ให้สิทธิ์/เพิกถอน) สามารถดำเนินการได้โดยตรงโดยผู้ใช้หรือโดยอ้อมผ่านบทบาท ในเวอร์ชัน 9.5 จะมีการแยกการเข้าถึงในระดับคอลัมน์และแถว (Row Level Security) การสนับสนุน SELinux ได้ถูกนำมาใช้ผ่านฟังก์ชันการทำงานภายในของ SE-PostgreSQL (การเข้าถึงภาคบังคับ)

เมื่อมาตรฐาน ANSI SQL พัฒนาขึ้น ก็ได้รับการรองรับใน PostgreSQL: SQL-92, SQL:1999, SQL:2003, SQL:2008 และ SQL:2011 อีกด้วย PostgreSQL 9.4 รองรับคุณสมบัติ SQL:2011 ที่จำเป็น 160 รายการจาก 179 รายการ

PostgreSQL DBMS ให้การสนับสนุนอย่างเต็มที่ คุณสมบัติของกรดและรับประกันการแยกธุรกรรมด้วยกลไกการควบคุมการทำงานพร้อมกันหลายเวอร์ชัน - ธุรกรรมการอ่านจะไม่บล็อกธุรกรรมการเขียน และในทางกลับกัน สิ่งนี้เกิดขึ้นจริงสำหรับระดับการแยกอนุกรมที่เข้มงวดที่สุด ซึ่งใช้ระบบ SSI (SERIALIZABLE SNAPSHOT ISOLATION) ที่เป็นนวัตกรรมใหม่ และจัดให้มีการแยกธุรกรรมที่สมบูรณ์ เพื่อให้มั่นใจว่าผลลัพธ์ของธุรกรรมพร้อมกันจะเหมือนกับเมื่อดำเนินการตามลำดับ

คุณสมบัติของนักพัฒนา

นักพัฒนามีเครื่องมือที่ช่วยให้พวกเขาสร้างแอปพลิเคชันทุกประเภทได้ ประกอบด้วย:

  • อินเทอร์เฟซสำหรับ Tcl, Perl, C, C++, PHP, Json, ODBC, JDBC, Embedded SQL ใน C, Python, Ruby, Java;
  • การเป็นตัวแทน ลำดับ การสืบทอด ข้อจำกัดด้านความสมบูรณ์ เข้าร่วมภายนอก, การสืบค้นแบบซ้อน, ฟังก์ชันหน้าต่าง, CTE (พร้อมการสืบค้น), ขั้นตอนการจัดเก็บ, ฟังก์ชัน, ทริกเกอร์;
  • ระบบค้นหาข้อความแบบเต็มในตัวที่ยืดหยุ่นพร้อมรองรับภาษารัสเซียและยุโรปทั้งหมด
  • รองรับ NoSQL: ข้อมูลกึ่งโครงสร้าง (xml, json, jsonb);
  • การเชื่อมต่อแหล่งข้อมูลภายนอกเป็นตารางฐานข้อมูลหลักทั้งหมด ด้วยความสามารถในการเขียนผ่าน Foreign Data Wrappers

ความสามารถในการขยายและการใช้งาน

ความสามารถในการขยายเป็นหนึ่งในคุณสมบัติพื้นฐานของระบบซึ่งเป็นรากฐานของสถาปัตยกรรม ผู้ใช้สามารถเพิ่มฟังก์ชัน ประเภทข้อมูล ตัวดำเนินการเพื่อทำงานกับประเภทใหม่ได้อย่างอิสระ ใช้วิธีการเข้าถึงดัชนี (Btree, Hash, GiST, GIN, SP-GiST) และภาษาการเขียนโปรแกรม (pl/pgsql, pl/perl, pl/python , pl /tcl, pl/R, pl/java, pl/v8,...) การเชื่อมต่อกับ แหล่งข้อมูลภายนอก(Foreign Data Wrappers) ถูกนำมาใช้ผ่านอินเทอร์เฟซกับ DBMS เกือบทั้งหมด และส่วนขยายที่ดาวน์โหลดได้ช่วยให้ เช่น สนับสนุนข้อมูลทางภูมิศาสตร์ ข้อมูล PostGISดำเนินการค้นหาแบบคลุมเครือโดยใช้ตรีแกรม ทำงานกับอาร์เรย์ ฯลฯ

ผู้ใช้หลักของ PostgreSQL ได้แก่บริษัทต่างๆ เช่น Microsoft, Yahoo, Instagram, BASF และ Afilias DBMS นี้ยังใช้ใน ภาครัฐ: ตัวอย่างเช่น ในฝรั่งเศส บริการสภาพอากาศระดับชาติและระบบข้อมูลของกองทุนแห่งชาติเพื่อผลประโยชน์ของครอบครัว (CNAF) ซึ่งจัดเก็บข้อมูลเกี่ยวกับผู้คน 30 ล้านคน อิงจาก PostgreSQL ในรัสเซีย PostgreSQL ถูกใช้โดยเฉพาะอย่างยิ่งโดย Yandex และ Avito รวมถึงในหลายๆ เจ้าหน้าที่รัฐบาลและในสถานประกอบการอุตสาหกรรม

PostgreSQL รองรับ Unix clone ทั้งหมด รวมถึง Linux, FreeBSD, Solaris, HPUX, Mac OS X และ Windows

PostgreSQL DBMS คำนึงถึงคุณลักษณะทางสถาปัตยกรรม โปรเซสเซอร์แบบมัลติคอร์ดังนั้นประสิทธิภาพจะเพิ่มขึ้นเกือบเป็นเส้นตรงตามจำนวนคอร์ แต่ถึงกระนั้นก็มีข้อจำกัดบางประการในระบบ (ดูตาราง)

PostgreSQL ใช้เครื่องมือวางแผนคิวรีเพื่อเพิ่มประสิทธิภาพการสืบค้นที่ซับซ้อน ความสามารถของตัวกำหนดเวลาในการยกเว้นมุมมองของตารางลูกโดยอิงจากการวิเคราะห์เงื่อนไขการสืบค้นและข้อจำกัดด้านความสมบูรณ์ที่มีอยู่ (การยกเว้นข้อจำกัด) ทำให้คุณสามารถใช้การแบ่งพาร์ติชันใน PostgreSQL ซึ่งมีความสำคัญอย่างยิ่งสำหรับคลังข้อมูลขนาดใหญ่

เมื่อทำการจัดทำดัชนี นอกเหนือจาก B-tree แบบดั้งเดิม ยังมีสิ่งต่อไปนี้อีกด้วย: Hash, GIN (ดัชนี INverted ทั่วไป - ดัชนีผกผันทั่วไป), GiST (แผนผังการค้นหาทั่วไป - แผนผังการค้นหาทั่วไป), SP-GiST (GiST ที่แบ่งพาร์ติชันอวกาศ - ดัชนีเชิงพื้นที่) - และดัชนีสามารถสร้างขึ้นตามนิพจน์ (ฟังก์ชัน) และหากจำเป็น ดัชนีจะถูกสร้างขึ้นสำหรับบางแถวในตารางเท่านั้น (ดัชนีบางส่วน)

ระบบนิเวศ PostgreSQL ในประเทศ

การเอาชนะการพึ่งพาทางเทคโนโลยีเป็นไปไม่ได้ในสภาพแวดล้อมแบบปิด ดังนั้นจึงแนะนำให้แนะนำซอฟต์แวร์โอเพ่นซอร์ส โดยเฉพาะอย่างยิ่งการบูรณาการชุมชนการเขียนโปรแกรมของรัสเซียเข้ากับระบบนิเวศการพัฒนา PostgreSQL DBMS รวมถึงการสร้างศูนย์ความสามารถในประเทศและการพัฒนาการฝึกอบรมผู้เชี่ยวชาญ ระบบ. ความพร้อมใช้งาน ชุดที่สมบูรณ์ซอร์สโค้ด ขั้นตอนการประกอบ และที่สำคัญที่สุดคือการสนับสนุนด้านเทคนิคจากนักพัฒนาในประเทศภายในประเทศ ถือเป็นรากฐานของความสำเร็จของการบูรณาการดังกล่าว แท้จริงแล้วประสิทธิภาพของ DBMS ส่วนใหญ่ขึ้นอยู่กับระบบที่ทรงพลัง การสนับสนุนทางเทคนิคในโหมด 24x7x365 - นี่เป็นงานระดับอุตสาหกรรมที่ บริษัท Postgres Professional กำลังแก้ไขสำหรับ PostgreSQL ในรัสเซีย

ในรัสเซียทุกวันนี้ ระบบนิเวศของ PostgreSQL กำลังพัฒนา รวมถึงบริษัทและสถาบันต่างๆ เพิ่มมากขึ้นเรื่อยๆ การทำงานร่วมกันสมาชิกของพันธมิตรไม่เพียงแต่เกี่ยวข้องกับการพัฒนา PostgreSQL DBMS และส่วนขยายเท่านั้น แต่ยังรวมถึงการบูรณาการอย่างใกล้ชิดกับระบบปฏิบัติการ การพัฒนา โซลูชั่นการใช้งาน, เครื่องมือการโยกย้ายจาก DBMS อื่น ๆ ฯลฯ ในบรรดาส่วนใหญ่ ผลงานที่สำคัญในการพัฒนา PostgreSQL สามารถแยกแยะได้ดังต่อไปนี้

คลัสเตอร์ที่ไม่ต้องแชร์และปรับขนาดความพร้อมใช้งานสูงได้คลัสเตอร์จะช่วยให้คุณสามารถปรับขนาดการบันทึกและการประมวลผลข้อมูลในระบบ OLAP และ OLTP ในขณะที่ให้บริการได้ ระดับสูงการเข้าถึงซึ่งเป็นที่ต้องการในระบบอุตสาหกรรมที่มีภาระงานสูง การกระจายการกำหนดค่าที่ทนทานต่อข้อผิดพลาดของ PostgreSQL ทำให้ง่ายต่อการปรับใช้คลัสเตอร์ที่ซ้ำซ้อนอย่างสมบูรณ์เพื่อทำงานในสภาพแวดล้อมการประมวลผลที่เปลี่ยนแปลงแบบไดนามิก (เช่น ระบบคลาวด์) นอกจากนี้ คุณสามารถสร้างคลัสเตอร์ MultiMaster ที่พร้อมใช้งานสูงพร้อมมาตราส่วนการอ่าน-เขียนเมื่อจำนวนโหนดเพิ่มขึ้น และเนื่องจากการแบ่งส่วนข้อมูล ความจุพื้นที่จัดเก็บทั้งหมดจึงเกินความจุที่มีอยู่ในแต่ละโหนดทีละรายการได้

ที่เก็บข้อมูลที่เชื่อมต่อกลไก Foreign data wrapper (fdw) สำหรับการทำงานกับที่เก็บข้อมูลเฉพาะ (จัดเก็บตามแถวหรือคอลัมน์ ทำงานกับดิสก์ หรือจัดเก็บใน หน่วยความจำเข้าถึงโดยสุ่ม) จะเร่งความเร็วการดำเนินการทั้งแบบสอบถาม OLTP และ OLAP

ระบบสำหรับการเพิ่มประสิทธิภาพการปรับตัวอัตโนมัติของการดำเนินการค้นหา วิธีการที่ทันสมัยการเรียนรู้ของเครื่องเปิดโอกาสใหม่ในการพัฒนา DBMS - งานต่างๆ เช่น การทำโหลดบาลานซ์ การคำนวณแผนการดำเนินการสืบค้น การสร้างดัชนีที่มีประสิทธิภาพ ฯลฯ อาจมี ทางออกที่ดีที่สุดสำหรับชุดข้อมูล การสืบค้น และเงื่อนไขการโหลดที่เฉพาะเจาะจง นอกจากนี้ การเรียนรู้ของเครื่องยังช่วยให้คุณสร้างอัลกอริธึมการประมวลผลขึ้นมาใหม่แบบปรับเปลี่ยนได้แบบเรียลไทม์ เครื่องมือการเรียนรู้ของเครื่องที่สร้างขึ้นในฟังก์ชัน DBMS มาตรฐานได้รับการพัฒนาร่วมกับผู้เชี่ยวชาญจาก Moscow State University และ National Research University Higher School of Economics สามารถขยายขอบเขตของแอปพลิเคชัน DBMS ได้ตามปกติ โดยเฉพาะอย่างยิ่ง แอปพลิเคชันเหล่านี้จะช่วยให้คุณมีประสิทธิภาพและสูญเสียน้อยที่สุด ความแม่นยำแบบเรียลไทม์ดำเนินการค้นหาข้อมูลปริมาณมาก นอกจากนี้ยังสามารถตอบสนองต่อการเปลี่ยนแปลงในการกระจายข้อมูลและการสืบค้นได้อย่างยืดหยุ่น ซึ่งเป็นสิ่งสำคัญอย่างยิ่งสำหรับ DBMS ในยุค Internet of Things

ฟังก์ชั่นเพิ่มเติมของข้อมูลกึ่งโครงสร้างด้วยเทคโนโลยีที่ช่วยให้คุณทำงานกับข้อมูลในรูปแบบ JSON และ JSONB ได้ PostgreSQL จึงรวมข้อดีของ DBMS แบบดั้งเดิม เช่น การทำธุรกรรม ความเหมือนของการเปลี่ยนแปลง และความสมบูรณ์ของข้อมูล เข้ากับความยืดหยุ่นของ NoSQL โดยไม่ทำให้ประสิทธิภาพลดลง ภาษาคิวรีข้อมูลแบบกึ่งโครงสร้างทำให้สามารถกำหนดคิวรีที่ซับซ้อนใน SQL ได้ เพิ่มประสิทธิภาพโดยการลดความซับซ้อนของโครงสร้างข้อมูล ถ่ายโอนการกรองข้อมูลที่ซับซ้อนจากแอปพลิเคชันไปยังฝั่ง DBMS และการใช้ดัชนีอย่างมีประสิทธิภาพ

ระบบที่ได้รับการปรับปรุงสำหรับการตรวจสอบและติดตามการดำเนินการตามคำขอ DBMS ระดับอุตสาหกรรมต้องการความสามารถในการติดตามและติดตามการดำเนินการสืบค้นด้วยการติดตามทรัพยากรสำหรับขั้นตอนต่างๆ ของการประมวลผล ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานของแอปพลิเคชันและการกำหนดค่าเซิร์ฟเวอร์ PostgreSQL มอบความสามารถในการรวบรวมตัววัดประสิทธิภาพต่างๆ และวิธีการเชื่อมโยงตัวชี้วัดเหล่านั้นกับตัววัด OS

แปลเอกสารและฝึกอบรมกระบวนการแปลเป็นภาษารัสเซียได้เริ่มขึ้นแล้ว เอกสารทางเทคนิคนอกจากนี้ยังมีการวางแผนการอัปเดตให้ทันเวลาอีกด้วย นอกจากนี้ รัสเซียกำลังพัฒนาระบบผู้เชี่ยวชาญด้านการฝึกอบรมในด้านต่างๆ เช่น เทคโนโลยีสมัยใหม่และการพัฒนา DBMS การดำเนินงานทางอุตสาหกรรมของ DBMS และการพัฒนาแอปพลิเคชันประยุกต์ ระบบข้อมูลขึ้นอยู่กับ DBMS โดยคำนึงถึง PostgreSQL มีการสร้างหลักสูตรการฝึกอบรมขั้นสูงสำหรับผู้ดูแลระบบและนักพัฒนา และบนพื้นฐานของระบบการรับรองก็ถูกสร้างขึ้น

อนาคตของ PostgreSQL

ในเดือนกรกฎาคม 2558 PostgreSQL 9.5 เวอร์ชันอัลฟ่าได้เปิดตัวซึ่งได้รับความสนใจอย่างจริงจังในการใช้งานฟังก์ชันใหม่ที่เป็นลักษณะเฉพาะของโซลูชันระดับองค์กรและมุ่งเป้าไปที่การเพิ่มความน่าเชื่อถือและประสิทธิภาพของ DBMS เป็นหลัก

ฟังก์ชันความปลอดภัยระดับแถวช่วยให้คุณจัดระเบียบการเข้าถึงไม่ใช่ทั้งตาราง แต่เข้าถึงแต่ละแถวได้ คุณสมบัตินี้เรียกอีกอย่างว่า Virtual Private Database หรือการควบคุมการเข้าถึงแบบละเอียด และช่วยเสริมกลไกการควบคุมการเข้าถึงข้อมูลที่มีอยู่ของ PostgreSQL ด้วยฟังก์ชัน pgaudit คุณสามารถดำเนินการตรวจสอบการทำงานของฐานข้อมูลโดยละเอียดได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับการตรวจสอบประสิทธิภาพโดยอัตโนมัติ ระบบการใช้งานเช่น เพื่อบันทึกเส้นทางการตรวจสอบ นอกจากนี้ในเวอร์ชันใหม่ยังมีการพัฒนาเครื่องมือสำหรับการทำงานกับ Big Data โดยเฉพาะดัชนี Block Range (BRIN) ปรากฏขึ้นพร้อมกับวิธีการเข้าถึงตามช่วงหน้า (ใช้พื้นที่น้อยลงและต้องการทรัพยากรน้อยลงเมื่ออัปเดต แม้ว่าจะมีประสิทธิภาพน้อยกว่าในการดึงข้อมูลมากกว่า B-tree) เพื่อปรับปรุงความน่าเชื่อถือ จึงได้รวมส่วนขยาย pg_rewind ไว้ด้วย ซึ่งเมื่อใช้การจำลองแบบมาสเตอร์-สเลฟ จะทำให้คุณสามารถซิงโครไนซ์เซิร์ฟเวอร์หลักที่ล้มเหลวกับสเลฟได้อย่างรวดเร็ว

ปัจจุบัน PostgreSQL เป็น DBMS แบบโอเพ่นซอร์สที่มีฟังก์ชันการทำงานเต็มรูปแบบ ซึ่งช่วยให้คุณสามารถแก้ไขปัญหาต่างๆ ได้มากมาย ในระหว่างที่ PostgreSQL มีอยู่ ระบบนิเวศน์ก็ได้ก่อตัวขึ้นรอบๆ ซึ่งรวมถึงนักพัฒนา นักวิเคราะห์ และผู้ใช้ ซึ่งช่วยให้สามารถขยายฟังก์ชันการทำงานของ DBMS นี้ได้โดยขึ้นอยู่กับความต้องการของตลาด

วรรณกรรม

  1. เซอร์เกย์ มูราฟเยอฟ, เซอร์เกย์ ดวอร์ยันคิน, อิกอร์ นาเซนคอฟ DBMS: ปัญหาของทางเลือก // Open Systems.DBMS - 2558. - ครั้งที่ 1. - หน้า 22–24. URL: (วันที่เข้าถึง: 1.09.2015)
  2. คอนสแตนติน เซเลซเนฟ, วิทาลี มักซิมอฟ. การทดแทนการนำเข้า: เป้าหมายหรือวิธีการ? // เปิดระบบ DBMS - 2558. - ครั้งที่ 1. - หน้า 30–33. URL: (วันที่เข้าถึง: 2.09.2015)
  3. อเล็กซานเดอร์ ลาชมานอฟ. นำเข้า การทดแทน: ความเสี่ยงและภาพลวงตา // Open Systems.DBMS - 2558. - ครั้งที่ 1. - หน้า 34–35. URL: (วันที่เข้าถึง: 09/03/2015)

อีวาน พันเชนโก้ ([ป้องกันอีเมล]) - รอง ผู้อำนวยการทั่วไป บริษัท Postgres Professional (มอสโก)



ชนิดข้อมูลในตัวที่รองรับ

ประเภทตัวเลข
ตัวเล็ก จำนวนเต็ม 2 ไบต์แบบสั้น
จำนวนเต็ม จำนวนเต็ม 4 ไบต์ปกติ
ใหญ่ จำนวนเต็มขนาดใหญ่ 8 ไบต์
ทศนิยม
ตัวเลข เศษส่วนจุดคงที่
จริง เศษส่วนจุดลอยตัว
ความแม่นยำสองเท่า เศษส่วนจุดลอยตัวที่มีความแม่นยำสองเท่า
อนุกรม จำนวนเต็มพร้อมการเพิ่มขึ้นอัตโนมัติ
เรื่องใหญ่ จำนวนเต็มขนาดใหญ่พร้อมการเพิ่มขึ้นอัตโนมัติ
ประเภทเงิน
เงิน เพื่อจัดเก็บมูลค่าทางการเงิน
ประเภทตัวละคร
อักขระที่แตกต่างกัน (n), varchar (n) เส้น ความยาวตัวแปรมีข้อจำกัด
ตัวละคร(n) ถ่าน(n) สตริงความยาวคงที่
ข้อความ สตริงตัวแปรที่มีความยาวไม่จำกัด
ประเภทไบนารี (ไบนารี)
บายที สตริงไบนารี่ที่มีความยาวผันแปรได้
วันและเวลา
การประทับเวลา [ (p) ] [ ไม่มีเขตเวลา ] วันและเวลา
การประทับเวลา [ (p) ] พร้อมเขตเวลา วันที่และเวลาพร้อมเขตเวลา
ช่วงเวลา[(p)] ช่วงเวลา
วันที่ วันที่เท่านั้น
เวลา [ (p) ] [ไม่มีเขตเวลา] เวลาเท่านั้น
เวลา [ (p) ] พร้อมเขตเวลา เฉพาะเวลาที่มีเขตเวลา
ประเภทบูลีน
บูลีน จริงหรือเท็จ
ประเภทเรขาคณิต
จุด จุดบนระนาบ (x,y)
เส้น เส้นที่มองไม่เห็น (ยังใช้งานไม่เต็มที่)
แอลเซก ส่วนที่มองเห็นได้ ((x1,y1),(x2,y2))
กล่อง รูปสี่เหลี่ยมขนมเปียกปูน ((x1,y1),(x2,y2))
เส้นทาง รูปหลายเหลี่ยมแบบปิด (คล้ายกับรูปหลายเหลี่ยม) ((x1,y1),…)
เส้นทาง เส้นโพลีไลน์ [(x1,y1),…]
รูปหลายเหลี่ยม รูปหลายเหลี่ยม (คล้ายกับรูปหลายเหลี่ยมปิด) ((x1,y1),…)
วงกลม วงกลม (x,y),r (ศูนย์กลางและรัศมี)
ประเภทที่อยู่เครือข่ายคอมพิวเตอร์
ไซเดอร์ เครือข่าย IPv4 หรือ IPv6
ไอเน็ต โฮสต์และเครือข่าย IPv4 หรือ IPv6
มาคัดเดอร์ หมายเลขทางกายภาพ
สตริงบิต
บิต [(n)] สตริงบิตที่มีความยาวคงที่
แตกต่างกันเล็กน้อย [(n)] สตริงบิตความยาวแปรผัน
ประเภทสำหรับการค้นหาข้อความ
แบบสอบถาม คำขอค้นหาข้อความ
tsvector รายการค้นหาข้อความ
ประเภท UUID
อุ๊ย ตัวระบุที่ไม่ซ้ำกันสากล
ประเภท XML
xml ข้อมูลเอ็กซ์เอ็มแอล

นอกจากชุดประเภทนี้แล้ว PostgreSQLให้ความสามารถในการสร้างรายการ (ประเภท ENUM) อาร์เรย์ของประเภท ประเภทคอมโพสิต เช่น โครงสร้างในภาษา C และยังมีประเภทสำหรับการระบุวัตถุที่ไม่ซ้ำกัน (OID) และประเภทเทียมสำหรับขั้นตอนการจัดเก็บ

ประเภทข้อมูลที่ผู้ใช้สร้างขึ้น

การใช้คำสั่ง CREATE ผู้ใช้ประเภทสามารถสร้างชนิดข้อมูลใหม่ตามความต้องการได้

รองรับหลายภาษา

ฐาน PostgreSQLทำงานร่วมกับการแปลเป็นภาษาท้องถิ่นที่ติดตั้งในระบบปฏิบัติการและสอดคล้องกับมาตรฐาน POSIX ในทางปฏิบัติหมายถึงความสามารถในการทำงานกับหลายภาษา รวมถึงภาษารัสเซียในการเข้ารหัสที่เป็นไปได้ทั้งหมด: koi8-r, cp1251, iso8859-5 และ UTF-8 โอกาส การดำเนินการที่ถูกต้อง PostgreSQLด้วยการเข้ารหัสเฉพาะนั้นขึ้นอยู่กับการสนับสนุนที่ถูกต้องของการเข้ารหัสนี้โดยระบบปฏิบัติการเอง
ต้องขอบคุณการใช้ไลบรารี gettext ข้อความแสดงข้อผิดพลาดในยูทิลิตี้ได้รับการแปลเป็นหลายภาษา รวมถึงภาษารัสเซียด้วย

ภาษา

ซึ่งสามารถนำไปใช้ในการเขียน Stored Procedure (ฟังก์ชัน)

  • หลาม
  • ซี/ซี++
  • PL/pgSQL

ฟังก์ชั่นและตัวดำเนินการ

สำหรับแต่ละประเภทที่ระบุไว้ข้างต้น จะมีชุดฟังก์ชันและผู้ปฏิบัติงานของตัวเอง ซึ่งทำให้การทำงานกับข้อมูลประเภทนี้สะดวก ยืดหยุ่น และมีประสิทธิภาพมากที่สุด รายการฟังก์ชันและตัวดำเนินการเหล่านี้ต้องใช้เอกสารประกอบที่ให้มาในจำนวนค่อนข้างมาก PostgreSQLดังนั้นดูรายละเอียดที่นั่น

ดัชนี
PostgreSQLมีดัชนี 4 ประเภท: B-tree, Hash, GiST และ GIN ดัชนีแต่ละประเภทมีอัลกอริธึมการใช้งานของตัวเอง ซึ่งสามารถเพิ่มประสิทธิภาพได้อย่างมากหากเป็นเช่นนั้น บางประเภทข้อมูล ให้เลือกประเภทดัชนีเฉพาะ
PostgreSQLช่วยให้คุณสร้างดัชนีโดยใช้นิพจน์ ตัวอย่างเช่น: สร้าง ดัชนีทดสอบ1_lower_col1_idx บนทดสอบ 1 (ล่าง (col1));
PostgreSQLช่วยให้คุณสร้างดัชนีบางส่วนโดยใช้ส่วนคำสั่ง WHERE เช่น: สร้าง ดัชนี orders_unbilled_index บนคำสั่งซื้อ (order_nr) ที่ไหนเรียกเก็บเงินแล้ว เป็น ไม่จริง;.

ค้นหาข้อความแบบเต็ม
เริ่มต้นจากเวอร์ชัน 8.3 ในเคอร์เนล PostgreSQLรวมฟังก์ชันการค้นหาข้อความแบบเต็มไว้ด้วย (ซึ่งก่อนหน้านี้จัดให้เป็นโมดูลส่วนขยายแยกต่างหาก)
การค้นหาข้อความแบบเต็มช่วยให้คุณสร้างแบบสอบถามได้ เอกสารข้อความเช่น: "ค้นหาเอกสารทั้งหมดที่มีคำเฉพาะและออกตามลำดับที่แน่นอน" ซึ่งทั้งคำขอและลำดับของปัญหาสามารถกำหนดค่าได้อย่างยืดหยุ่นตามความต้องการเฉพาะ

การควบคุมธุรกรรมที่เกิดขึ้นพร้อมกันหลายเวอร์ชันและการแยกธุรกรรม
ใน PostgreSQLนำไปใช้ (การควบคุมการเกิดพร้อมกันหลายเวอร์ชัน, MVCC) - การควบคุมธุรกรรมที่เกิดขึ้นพร้อมกันหลายเวอร์ชันซึ่งจัดการการเข้าถึงข้อมูลเชิงแข่งขันบนพื้นฐานหลายเวอร์ชัน ในทางปฏิบัติ หมายความว่าเมื่อทำการสืบค้นฐานข้อมูล แต่ละธุรกรรมจะเห็นสแน็ปช็อตของข้อมูล (เวอร์ชัน) ณ เวลาที่ทำสแน็ปช็อตนี้ ไม่ใช่สถานะปัจจุบันของข้อมูล ด้วยวิธีนี้ ธุรกรรมจะได้รับการปกป้องจากการดูข้อมูลที่ไม่สมบูรณ์ซึ่งอาจยังคงถูกสร้างขึ้นโดยธุรกรรมอื่นๆ ที่เกิดขึ้นพร้อมกันในแถวตารางเดียวกัน นอกจากนี้ยังทำให้สามารถแยกธุรกรรมสำหรับแต่ละเซสชันฐานข้อมูลได้อีกด้วย MMVC ช่วยให้คุณหลีกเลี่ยงวิธีการล็อคที่ชัดเจนที่ใช้ใน DBMS แบบดั้งเดิม จึงลดการล็อคข้อมูลให้เหลือน้อยที่สุดและปรับปรุงประสิทธิภาพในการทำงานที่มีผู้ใช้หลายคน ข้อได้เปรียบหลักของ MMVC คือ การอ่านข้อมูลจะไม่บล็อกการเขียน และการเขียนจะไม่บล็อกการอ่าน
ยังอยู่ใน PostgreSQLมีการใช้รูปแบบดั้งเดิมของการล็อคข้อมูลที่ชัดเจนซึ่งใช้ในการแยกธุรกรรม เช่น:

  • การล็อคระดับโต๊ะ
  • ล็อคที่ระดับบันทึกตาราง (แถว)
  • ล็อคคำแนะนำ (สำหรับการล็อคระดับแอปพลิเคชันดั้งเดิม)

นอกจากนี้ยังใช้การติดตามการหยุดชะงัก (การล็อคร่วมกัน)

เขียนบันทึกล่วงหน้า (WAL)
PostgreSQLใช้กลไก WAL (บันทึกการเขียนล่วงหน้า) ซึ่งมีข้อดีเช่น:

  • การปรับปรุงประสิทธิภาพของ DBMS เนื่องจากมีการบันทึกเฉพาะการเปลี่ยนแปลงที่ทำขึ้นโดยไม่ต้องเขียนข้อมูลทั้งหมดในตารางใหม่
  • เพิ่มความน่าเชื่อถือในการจัดเก็บข้อมูลโดยการบันทึกข้อมูลบัฟเฟอร์ล่วงหน้าใน WAL
  • ความสามารถในการย้อนกลับสถานะฐานข้อมูล ณ เวลาใดก็ได้โดยใช้ WAL กับสำเนาสำรองที่มีอยู่

พื้นที่โต๊ะ
พื้นที่โต๊ะใน PostgreSQLอนุญาตให้คุณระบุตำแหน่งที่เก็บข้อมูลสำหรับวัตถุฐานข้อมูลในระบบไฟล์ ขั้นแรก พื้นที่ตารางที่มีชื่อเฉพาะจะถูกสร้างขึ้น นอกจากนี้ ชื่อนี้ยังสามารถใช้เมื่อสร้างตารางเพื่อวางตารางเหล่านี้ในพื้นที่ตารางนี้โดยเฉพาะ

การตั้งค่าเซิร์ฟเวอร์ที่ยืดหยุ่น
ไฟล์การกำหนดค่าหลัก postgresql.conf มีพารามิเตอร์ที่กำหนดค่าได้มากกว่า 150 รายการในส่วนต่างๆ:

  • ไฟล์และเส้นทางไปยังพวกเขา
  • เชื่อมต่อเครือข่าย
  • การอนุญาตและความปลอดภัย
  • การจัดสรรทรัพยากร
  • WAL - บันทึกการเขียนกลับ
  • การวางแผนแบบสอบถาม
  • ข้อผิดพลาดและการบันทึก
  • ขอสถิติ
  • การเพิ่มประสิทธิภาพข้อมูลผ่าน VACUUM
  • การจัดการล็อค
  • ความเข้ากันได้ของเวอร์ชันและแพลตฟอร์ม
  • การตั้งค่าเริ่มต้นของไคลเอ็นต์

ไฟล์การกำหนดค่าเพิ่มเติม pg_hba.conf มีการตั้งค่าสำหรับการเข้าถึงฐานข้อมูลแต่ละฐานข้อมูล เช่น การระบุที่อยู่ IP และ/หรือเครือข่ายเฉพาะที่อนุญาตให้เข้าถึงได้ เช่นเดียวกับวิธีการอนุญาตสำหรับการเข้าถึงฐานข้อมูลและความสามารถในการเปิดใช้งานการรักษาความปลอดภัย ( เข้ารหัส) การเชื่อมต่อ) ผ่าน SSL

ข้อจำกัดด้านความซื่อสัตย์
รองรับข้อจำกัดด้านความสมบูรณ์ต่อไปนี้:

  • ไม่เป็นโมฆะ - ไม่เป็นโมฆะ
  • ไม่ซ้ำใคร - มีเอกลักษณ์
  • คีย์หลัก - คีย์หลัก
  • คีย์ต่างประเทศ/ข้อมูลอ้างอิง - คีย์ต่างประเทศ ลิงก์
  • ตรวจสอบ - ตรวจสอบ

ขั้นตอนการจัดเก็บ
ขั้นตอนการจัดเก็บใน PostgreSQLสามารถเขียนด้วยภาษาในตัวที่รองรับ Stored Procedure สามารถใช้ในทริกเกอร์และสามารถส่งคืนประเภทข้อมูลที่รองรับ รวมถึงอาร์เรย์และรายการ

ทริกเกอร์
ทริกเกอร์ได้รับการออกแบบสำหรับ การดำเนินการอัตโนมัติแต่ละขั้นตอนขึ้นอยู่กับการดำเนินการที่กำหนดไว้ สามารถกำหนดทริกเกอร์ก่อนหรือหลังการดำเนินการ INSERT, UPDATE หรือ DELETE ทั้งเมื่อมีการเปลี่ยนแปลงบันทึกในตารางและเมื่อมีการดำเนินการคำสั่ง SQL ถ้าเหตุการณ์ที่มีการกำหนดทริกเกอร์เกิดขึ้น กระบวนการที่กำหนดให้กับทริกเกอร์นี้จะถูกเรียก

ระบบกฎเกณฑ์
ระบบกฎ (เรียกอย่างถูกต้องว่าระบบกฎการปรับเปลี่ยนแบบสอบถาม) อนุญาตให้แก้ไขแบบสอบถามตามกฎที่ระบุ จากนั้นส่งแบบสอบถามที่ปรับเปลี่ยนไปยังผู้วางแผนแบบสอบถามสำหรับการจัดกำหนดการและการดำเนินการ ระบบกฎเกณฑ์ดีมาก เครื่องมืออันทรงพลังและสามารถใช้ได้ในหลายกรณี เช่น ขั้นตอนการจัดเก็บ มุมมอง และเวอร์ชัน

โครงการ

PostgreSQLรองรับสคีมา สคีมาเป็นเหมือนขอบเขตเพิ่มเติมภายในฐานข้อมูล สคีมายังสามารถเปรียบเทียบกับเส้นทางเพิ่มเติมได้ (ต้องระบุชื่อของสคีมาก่อนชื่อตาราง) และกับไดเร็กทอรีภายในที่สามารถวางตารางได้ ทุกฐานข้อมูลมีสคีมาเริ่มต้น สาธารณะซึ่งตารางทั้งหมดจะถูกสร้างขึ้นตามค่าเริ่มต้นและไม่จำเป็นต้องระบุโดยเฉพาะ แต่ผู้ดูแลระบบฐานข้อมูลสามารถสร้างสคีมาอื่น ๆ (และจำกัดการเข้าถึงตารางเหล่านั้น) ซึ่งให้การกระจายสิทธิ์การเข้าถึงระดับอื่นสำหรับผู้ใช้ อนุญาตให้ผู้ใช้แต่ละคน เพื่อจัดสรรส่วนส่วนบุคคลภายในฐานข้อมูล A ที่มีชื่อตารางเดียวกันกับผู้ใช้รายอื่น

บทบาทและสิทธิพิเศษ
PostgreSQLจัดการสิทธิ์ฐานข้อมูลโดยใช้แนวคิด บทบาท- บทบาทอาจเป็นผู้ใช้ฐานข้อมูลรายบุคคลหรือกลุ่มผู้ใช้ก็ได้ บทบาทสามารถเป็นเจ้าของออบเจ็กต์ในฐานข้อมูล (เช่น ตาราง) และยังสามารถกำหนดสิทธิ์การเข้าถึงให้กับออบเจ็กต์เหล่านี้ให้กับบทบาทอื่นๆ ได้อีกด้วย เป็นไปได้ที่จะให้สิทธิ์การเป็นสมาชิกบทบาทหนึ่งในอีกบทบาทหนึ่ง และโอนสิทธิ์ของบทบาทที่จะเป็นสมาชิกไปยังบทบาทนี้ แนวคิดเรื่องบทบาทมาแทนที่แนวคิดเก่าของผู้ใช้และกลุ่ม โดยมีฟังก์ชันการทำงานแบบเดียวกัน

การรวบรวมสถิติ
หากต้องการสร้างแผนแบบสอบถามประสิทธิภาพ ให้ผู้วางแผนแบบสอบถามเข้ามา PostgreSQLใช้สิ่งที่เรียกว่า สถิติหรือ ข้อมูลทางสถิติซึ่งรวบรวมตามการวิเคราะห์ข้อมูลในตาราง ซึ่งรวบรวมโดยใช้คำสั่ง ANALYZE ซึ่งจะเป็นส่วนหนึ่งของกระบวนการบำรุงรักษาฐานข้อมูล VACUUM เริ่มต้นจากเวอร์ชัน 8.1 ใน PostgreSQLแทนที่จะเรียกคำสั่งการรวบรวมสถิติด้วยตนเอง ก็สามารถทำงานกับเครื่องมือใหม่ที่เรียกว่าได้ เครื่องดูดฝุ่นอัตโนมัติ- ด้วยเครื่องดูดฝุ่นอัตโนมัติ กระบวนการรวบรวมสถิติที่จำเป็นทั้งหมดและกระบวนการบำรุงรักษาฐานข้อมูลจะเกิดขึ้นโดยอัตโนมัติในเบื้องหลัง ขึ้นอยู่กับการตั้งค่า PostgreSQLตัวมันเองจะกำหนดตารางที่จำเป็นในการรวบรวมสถิติและดำเนินการบำรุงรักษา VACUUM

สำรองและเรียกคืน
PostgreSQLมีหลายโหมด สำเนาสำรองและการกู้คืนฐานข้อมูล เนื่องจากฐานข้อมูลอยู่ในระบบไฟล์จึงค่อนข้าง วิธีการปกติเป็นการสำรองข้อมูลระดับไฟล์เช่น ไดเร็กทอรีซึ่งเป็นที่ตั้งของไฟล์ฐานข้อมูล เงื่อนไขเดียวสำหรับโหมดนี้คือการปิดเซิร์ฟเวอร์โดยสมบูรณ์ PostgreSQL- อย่างไรก็ตาม สำหรับระบบที่มีความพร้อมใช้งานสูง โหมดการสำรองข้อมูลนี้จึงไม่สามารถยอมรับได้ PostgreSQLช่วยให้คุณสามารถสำรองข้อมูลในขณะที่เซิร์ฟเวอร์กำลังทำงานอยู่โดยไม่ขัดจังหวะ ทำงานประจำ- โหมดที่ง่ายที่สุดคือการรับดัมพ์ฐานข้อมูล แบบฟอร์มข้อความ(ในรูปของ. คำสั่ง SQL) บน เอาต์พุตมาตรฐาน- เพื่อประหยัดเนื้อที่ดิสก์ คุณสามารถเปลี่ยนเส้นทางดัมพ์ดังกล่าวไปยังอินพุตมาตรฐานไปยังยูทิลิตี้การบีบอัดได้ทันที (เช่น gzip) นอกจากนี้ยังสามารถสร้างดัมพ์ฐานข้อมูลในรูปแบบไบนารี่ได้ รวมถึงความสามารถในการตั้งค่าพารามิเตอร์พิเศษเพื่อความสะดวกยิ่งขึ้นในการรับสำเนาสำรองและการกู้คืนในภายหลัง
PostgreSQLยังให้ความสามารถในการสำรองข้อมูลและด้วยเหตุนี้จึงกู้คืนฐานข้อมูลไปยังจุดเวลาที่กำหนดตลอดจนการสำรองข้อมูลส่วนเพิ่ม