Mở đầu
JSONB là một dạng lưu trữ dữ liệu dạng JSON trong PostgreSQL, cho phép truy vấn và thao tác nhanh hơn so với JSON thông thường. Khi kết hợp với Supabase – một nền tảng Backend-as-a-Service (BaaS) dựa trên PostgreSQL – chúng ta có một giải pháp mạnh mẽ để xử lý dữ liệu JSONB một cách hiệu quả. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng Supabase để lưu trữ, truy vấn và tối ưu hiệu năng cho dữ liệu JSONB.
JSONB là gì và tại sao nên dùng?
JSONB (Binary JSON) là dạng dữ liệu nhị phân của JSON trong PostgreSQL. Khác với JSON thông thường, JSONB lưu trữ dữ liệu dưới dạng đã được parse, giúp truy vấn nhanh hơn và hỗ trợ chỉ mục (index) hiệu quả. JSONB cũng loại bỏ khoảng trắng thừa và sắp xếp lại các khóa, giúp tiết kiệm không gian lưu trữ.
Một số ưu điểm của JSONB:
– Tốc độ truy vấn nhanh: Dữ liệu đã được parse sẵn, không cần parse lại khi truy vấn.
– Hỗ trợ chỉ mục: Có thể tạo GIN index để tăng tốc độ truy vấn các trường bên trong JSONB.
– Tính linh hoạt: Dễ dàng lưu trữ cấu trúc dữ liệu phức tạp mà không cần thay đổi schema.
Lưu trữ dữ liệu JSONB trong Supabase
Supabase sử dụng PostgreSQL làm cơ sở dữ liệu, nên hoàn toàn hỗ trợ JSONB. Để lưu trữ dữ liệu JSONB, bạn chỉ cần khai báo kiểu dữ liệu là jsonb trong bảng:
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
metadata JSONB
);Sau khi tạo bảng, bạn có thể insert dữ liệu JSONB vào:
INSERT INTO products (name, metadata)
VALUES
('Product A', '{"color": "red", "size": "M", "tags": ["new", "sale"]}'::jsonb),
('Product B', '{"color": "blue", "size": "L", "tags": ["new"]}'::jsonb);