PlanetScale ra mắt Tin giúp tìm kiếm full-text cực nhanh trên Postgres

PlanetScale vừa làm một extension tìm kiếm cho Postgres: nhanh hơn các giải pháp hiện tại mà lại ngốn ít RAM hơn hẳn.
PlanetScale vừa tung ra Tin ("Text INdex"), một extension tìm kiếm native dùng được ngay cho Postgres và database Neki. Nó đưa các tính năng tìm kiếm full-text — như xếp hạng BM25, tìm theo cụm từ (phrase matching) và truy vấn wildcard — vào thẳng bên trong Postgres. PlanetScale phải tự làm công cụ này vì các giải pháp có sẵn như GIN tích hợp, ParadeDB hay pg_textsearch không đáp ứng đủ yêu cầu của họ về dạng truy vấn, cập nhật dữ liệu liên tục và độ tin cậy.
Vì sao cần quan tâm: Nhiều ứng dụng Postgres từ giờ sẽ không cần phải dựng thêm cụm search cluster riêng bên ngoài nữa. Khi benchmark trên bộ dữ liệu Stack Exchange nặng 85 GB, Tin chỉ mất 8 phút để đánh index với 32 GB RAM. Trong khi đó, GIN của Postgres mất hơn 2 tiếng và đòi tới 64 GB RAM mới xong. Với các truy vấn xếp hạng top-10, Tin xử lý số query mỗi giây (QPS) gấp 25 lần ParadeDB, còn độ trễ p99 thì thấp hơn 26 lần.
Thử ngay / Cần biết: Bạn tạo index bằng cú pháp USING tin và truy vấn qua toán tử ==>:
CREATE INDEX prod_idx ON products USING tin(description);
SELECT * FROM products WHERE description ==> 'stretch denim jeans'
ORDER BY tin.score(ctid) DESC LIMIT 10;
Stack database của bạn có vẻ sắp gọn gàng đi đáng kể đấy.
Nguồn
- PlanetScale Blog — https://planetscale.com/blog/introducing-tin
- Hacker News — https://news.ycombinator.com/item?id=49766611

