Thiết kế bảng không gian PostGIS
Bộ hướng dẫn thiết kế bảng dữ liệu vị trí trên PostGIS: chọn kiểu hình học, hệ tọa độ SRID và index không gian đúng cách.
Lập trìnhTrung cấp★ 1,849⑂ 109Điểm AI 8/10Cập nhật lần cuối: 23 thg 9, 2026
Làm được gì
- So sánh GEOMETRY và GEOGRAPHY bằng bảng đối chiếu (đơn vị, độ chính xác, hiệu năng, loại index) để chọn đúng kiểu cột.
- Quy tắc SRID: lưu ở 4326 (WGS84), chuyển sang UTM khi cần đo mét, không trộn SRID, ràng buộc CHECK để cưỡng chế SRID.
- Chọn index không gian: GiST mặc định, BRIN cho bảng GEOMETRY rất lớn chỉ ghi thêm, SP-GiST cho dữ liệu điểm.
- Mẫu thiết kế bảng thực tế: POI, thửa đất, theo dõi GPS, vùng phục vụ/giao hàng.
- Mẹo hiệu năng: dùng ST_DWithin thay ST_Distance, lọc trước bằng
&&, tránh hàm trên cột đã index, dùng generated column. - Kiểm tra dữ liệu: ST_IsValid/ST_MakeValid, giới hạn tọa độ, và nhắc dùng truy vấn tham số hóa để tránh SQL injection.
Phù hợp với ai
- Lập trình viên backend xây ứng dụng bản đồ, tìm cửa hàng gần nhất, giao hàng theo vùng trên PostgreSQL/PostGIS.
- Data engineer cần tối ưu truy vấn không gian đang chạy chậm.
- Nhóm mới chuyển dữ liệu GIS vào cơ sở dữ liệu, hay nhầm thứ tự (lon, lat).
Ví dụ sử dụng
- "Thiết kế bảng cho API tìm nhà hàng trong 1km" → GEOGRAPHY(POINT,4326), index GiST, truy vấn ST_DWithin.
- "Tính diện tích thửa đất theo mét vuông" → cột generated với
ST_Area(boundary::GEOGRAPHY)hoặc chuyển sang UTM. - "Bảng GPS 100 triệu dòng, index GiST quá nặng" → gợi ý BRIN với pages_per_range và các đánh đổi.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/timescale/pg-aiguide/HEAD/skills/design-postgis-tables/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục skills/design-postgis-tables từ repo GitHub timescale/pg-aiguide vào ~/.claude/skills/design-postgis-tables/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/timescale/pg-aiguide.git && mkdir -p ~/.claude/skills && cp -r pg-aiguide/skills/design-postgis-tables ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal.
- Tải mã nguồn:
git clone https://github.com/timescale/pg-aiguide.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Sao chép skill:
cp -r pg-aiguide/skills/design-postgis-tables ~/.claude/skills/ - Khởi động lại Claude Code, rồi yêu cầu ví dụ: "giúp tôi thiết kế bảng PostGIS cho dữ liệu GPS".
- Trước khi áp dụng thật, đảm bảo PostgreSQL 15+ và đã chạy
CREATE EXTENSION postgis;.
Xem mã nguồn trên GitHub ↗Giấy phép: Apache-2.0