PostgreSQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์ส (Open-source Relational Database Management System – RDBMS) ที่ทรงพลังและมีความสามารถสูง พัฒนาต่อเนื่องมากว่า 30 ปี
คุณสมบัติเด่นของ PostgreSQL:
-รองรับ SQL มาตรฐาน (Standard SQL:2008)
-รองรับข้อมูลแบบ JSON, XML, และข้อมูลเชิงพื้นที่ (GIS)
-รองรับฟังก์ชันขั้นสูง เช่น triggers, stored procedures, window functions, CTEs
-ขยายความสามารถได้ เช่น สร้าง data type เอง, เขียนฟังก์ชันด้วยภาษาอื่น (เช่น Python, PL/pgSQL)
-เสถียร ปลอดภัย และเหมาะกับงานระดับองค์กร
-มีระบบ replication, backup, และ clustering
PostgreSQL มี extensions ช่วยเพิ่มฟังก์ชันการทำงานให้กับฐานข้อมูล ซึ่งทำให้ PostgreSQL มีความยืดหยุ่นและสามารถตอบสนองความต้องการที่หลากหลายได้มากขึ้น ต่อไปนี้คือ extensions ที่ได้รับความนิยม:
1. PostGIS
ฟังก์ชัน: เพิ่มความสามารถในการจัดการข้อมูลเชิงพื้นที่ (Spatial data) เช่น การเก็บข้อมูลแผนที่ พิกัด และการคำนวณระยะห่าง
การใช้งาน: ใช้สำหรับงาน GIS (Geographic Information Systems), การวิเคราะห์แผนที่ หรือแอปพลิเคชันที่ต้องการการคำนวณข้อมูลตำแหน่ง
2. pg_partman
ฟังก์ชัน: ช่วยในการจัดการ partitioning ของตาราง (แบ่งตารางขนาดใหญ่ให้เล็กลงเพื่อเพิ่มประสิทธิภาพ)
การใช้งาน: ใช้เมื่อคุณต้องการแบ่งตารางที่มีข้อมูลจำนวนมากออกเป็นส่วนย่อย (partitions) เพื่อเพิ่มความเร็วในการ query
3. pg_stat_statements
ฟังก์ชัน: เก็บสถิติการใช้ SQL queries ที่มีการรันบ่อย ๆ ช่วยให้คุณสามารถวิเคราะห์ประสิทธิภาพและทำการปรับแต่งฐานข้อมูล
การใช้งาน: ใช้ในการวิเคราะห์ประสิทธิภาพของคำสั่ง SQL ในการทำงาน
4. hstore
ฟังก์ชัน: เพิ่มฟังก์ชันการจัดการข้อมูลในรูปแบบ key-value pairs
การใช้งาน: ใช้ในกรณีที่ต้องการจัดเก็บข้อมูลที่ไม่เป็นระเบียบ (non-relational data) โดยไม่ต้องใช้ฐานข้อมูล NoSQL
5. pg_trgm
ฟังก์ชัน: ช่วยเพิ่มประสิทธิภาพในการค้นหาข้อความโดยใช้ trigram (การแบ่งข้อความออกเป็นชุดของสามตัวอักษร)
การใช้งาน: ใช้ในการค้นหาข้อความที่ไม่ตรงกัน เช่น การค้นหาคำที่คล้ายกันหรือมีตัวสะกดผิด
6. pg_bigm
ฟังก์ชัน: เพิ่มการสนับสนุนการค้นหาคำในรูปแบบ “bigram” (การแบ่งข้อความออกเป็นชุดของสองตัวอักษร)
การใช้งาน: ใช้สำหรับการค้นหาข้อความที่มีความคล้ายคลึงกัน เช่น การค้นหาข้อความที่สะกดผิด หรือค้นหาคำในฟิลด์ขนาดใหญ่
7. Citus
ฟังก์ชัน: เปลี่ยน PostgreSQL ให้สามารถทำงานในรูปแบบ distributed database (ฐานข้อมูลแบบกระจาย)
การใช้งาน: ใช้เมื่อฐานข้อมูลมีข้อมูลจำนวนมากและต้องการขยายขนาดฐานข้อมูลแบบกระจายเพื่อรองรับการประมวลผลที่รวดเร็ว
8. uuid-ossp
ฟังก์ชัน: สร้าง UUIDs (Universally Unique Identifiers) ภายใน PostgreSQL
การใช้งาน: ใช้เมื่อคุณต้องการสร้างค่า unique identifier ที่ไม่ซ้ำกันสำหรับการอ้างอิงข้อมูลในระบบต่าง ๆ
9. pgcrypto
ฟังก์ชัน: เพิ่มฟังก์ชันการเข้ารหัสข้อมูล เช่น การเข้ารหัสและถอดรหัสข้อมูล
การใช้งาน: ใช้สำหรับการเข้ารหัสข้อมูลที่เก็บในฐานข้อมูลเพื่อความปลอดภัย เช่น การเข้ารหัสรหัสผ่านหรือข้อมูลสำคัญ
10. pg_repack
ฟังก์ชัน: ช่วยในการจัดการกับตารางและดัชนีที่มีการพังหรือเต็ม (bloat) โดยการแยกข้อมูลออกมาและจัดเรียงใหม่
การใช้งาน: ใช้เมื่อฐานข้อมูลเริ่มมีขนาดใหญ่และทำให้การ query ช้าลง
โดยรวมแล้วต้องบอกว่า PostgreSQL นั้นเป็นทั้งระบบฐานข้อมูลแบบดั้งเดิมและร่วมสมัยที่ ทำงานได้กับข้อมูลแทบจะทุกตัวแล้วในปัจจุบัน
อธิบายมาตั้งนาน แล้วเข้าเรื่องของเรากันดีกว่า วันนี้เราจะไปติดตั้ง PostgreSQL 17 ซึ่งเป็น version ล่าสุดบน Ubuntu 24.04 (Noble Numbat) ซึ่งเป็นตัวล่าสุดเหมือนกัน ก็ใหม่สุดๆ กันไปเลยนะ
1. เช็คก่อนเลยว่า Ubuntu ที่ใช้อยู่เป็น 24.04 เพื่อความชัวร์ ด้วยคำสั่ง
lsb_release -a
เราก็จะได้ผลลัพธ์ดังรูปที่ 1
2. พิมพ์
sudo apt update
เพื่อเป็นการอัพเดท repository index file ใหม่
3. ทำการเพิ่ม repository สำหรับ PostgreSQL 17
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
4. ทำการ import key ของ repository
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
5. ทำการ update index file ใน repository ตัวใหม่ที่เราเพิ่งเพิ่มเข้าไปใน step 3
sudo apt update
6. ทำการติดตั้ง PostgreSQL 17
sudo apt install postgresql-17
ให้เราตอบ Y เพื่อยืนยันการติดตั้ง
7. พิมพ์คำสั่งเพื่อ start service PostgreSQL และ enable เพื่อให้ทำงานอัตโนมัติหากเครื่องมีการรีบูต
sudo systemctl start postgresql sudo systemctl enable postgresql
8. พิมพ์คำสั่ง เพื่อทำการแก้ไขไฟล์ให้ postgreSQL ทำงานในทุก IP
sudo nano /etc/postgresql/17/main/postgresql.conf
9. ให้เลื่อนมายัง ตรงที่เขียนว่า #listen_addresses = ‘localhost’ และแก้เป็น
listen_addresses = ‘*’
หลังจากแก้ไขไฟล์แล้ว ให้ทำการ บันทึกด้วยคำสั่ง ^X และกด Y เพื่อบันทึกการเปลี่ยนแปลง
10. พิมพ์คำสั่งเหล่านี้เพื่อเปลี่ยน authentication เป็นชนิด MD5 เพราะมันจำเป็นสำหรับการ authen ผ่าน remote ซึ่งส่วนใหญ่เราต้องใช้อยู่แล้ว เพราะในการ remote มาจัดการ
sudo sed -i '/^host/s/ident/md5/' /etc/postgresql/17/main/pg_hba.conf sudo sed -i '/^local/s/peer/trust/' /etc/postgresql/17/main/pg_hba.conf echo "host all all 0.0.0.0/0 md5" | sudo tee -a /etc/postgresql/17/main/pg_hba.conf
11. ทำการ restart service postgresql เพื่อให้อ่านค่า config ใหม่ที่เราแก้ไปข้างต้น
sudo systemctl restart postgresql
12. พิมพ์คำสั่งเพื่อเข้าไปยัง postgresql
sudo -u postgres psql
ซึ่งหมายถึง เรากำลังเชื่อมต่อด้วย username ที่ชื่อว่า postgres ซึ่งเทียบเท่ากับ sa ใน SQL Server นั่นเอง
13. หลังจากนั้นทำการเปลี่ยนรหัสของ user : postgres ด้วยคำสั่ง
ALTER USER postgres PASSWORD 'SuperStrongPasswordHere;
14. หลังจากนั้นก็ออกด้วยคำสั่ง
\q
ก็เป็นอันเรียบร้อยสำหรับการติดตั้ง PostgreSQL 17 บน Ubuntu 24.04 สำหรับผู้ที่ต้องการดูเป็นแบบ Video นั้นรับชมได้ที่ https://www.youtube.com/watch?v=ZKqwBzJB3uw