แนะนำการใช้ PostgreSQL
PostgreSQL คืออะไร ?
Ref: https://www.postgresql.org/
PostgreSQL คือ open-source object-relational database system มาพร้อมกับ feature ที่ support reliability, data integrity และ performance ที่ดี
Feature สำคัญโดดเด่นของ PostgreSQL
- Object-Relational Database คือการ support object-oriented features ทำให้ support data type ที่หลากหลายกว่า relational database ทั่วๆไป
Data Types
- Primitives: Integer, Numeric, String, Boolean
- Structured: Date/Time, Array, Range / Multirange, UUID
- Document: JSON/JSONB, XML, Key-value (Hstore)
- Geometry: Point, Line, Circle, Polygon
- Customizations: Composite, Custom Types
- SQL Compliance and Extensions เพิ่มความสามารถ SQL ให้สามารถใช้ feature อย่าง user-defined types, operators, functions ที่ช่วยอำนวยความสะดวกในการ query ในแต่ละเคสมากขึ้น
-- Selecting data from a JSONB column
SELECT
info->'customer' AS customer,
info->>'order' AS order_id
FROM orders
WHERE info->'items' @> '[{"product":"Widget"}]';
-- Querying an array column
SELECT *
FROM products
WHERE tags @> ARRAY['electronics','sale'];
-- Full-text search
SELECT title, ts_rank_cd(textsearch, query) AS rank
FROM articles, to_tsquery('english', 'PostgreSQL | SQL') query
WHERE query @@ textsearch
ORDER BY rank DESC;
- Data Types and Indexing support การทำ index technique อย่าง B-tree, hash, and GIST
-- Create a B-tree index on the 'email' column of the 'users' table
CREATE INDEX idx_users_email ON users (email);
- Cross-Platform and Language Support สาม ารถ run บน OS หลากหลายและหลากหลายภาษาได้
Install PostgreSQL
Ref: https://www.postgresql.org/download/
สามารถลงได้ทั้ง 2 แบบคือ
- ลงที่เครื่องเลย
- ลงผ่าน docker
ในทีนี้เพื่อให้สามารถ run ได้ทุก Platform เราจะขอใช้ docker-compose.yml
ในการ run
version: '3.8'
services:
postgres:
image: postgres:latest
container_name: postgres
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: admin
ports:
- "5050:80"
depends_on:
- postgres
restart: unless-stopped
volumes:
postgres_data:
run ด้วย
docker-compose up -d
เมื่อลองเปิดด้วย localhost:5050 แล้ว login ด้วย user, pass ตาม config จะเจอหน้าจอประมาณนี้ออกมาได้
หลังจากนั้นใส่ config เพื่อต่อเข้ากับ PostgreSQL
เมื่อลองกดต่อเข้าไปก็จะเจอหน้า Host ของ database
- ลองกดขยายดู หากเจอ
mydatabase
(ตาม config docker-compose) = ถือว่าสร้างได้แล้วเรียบร้อย
รู้จัก pgAdmin
เริ่มต้นสร้าง table products ขึ้นมา
เมื่อสร้างเรียบร้อยจะได้ตารางออกมา
ลอง insert, query ข้อมูล
- insert ข้อมูลเข้า
- query ดึงข้อมูล