Foundationপ্রথম নীতি থেকে
LEVEL 8 · Database Systems

GIN

জিন

Generalized Inverted Index — value থেকে তার containing rows-এর তালিকা; full-text search আর array containment-এর engine।

also: generalized-inverted-index, inverted-index

B-tree key→row; GIN উল্টো: element→row list (posting tree)।

CREATE INDEX ON docs USING gin (to_tsvector('english', body));
SELECT * FROM docs WHERE to_tsvector('english', body) @@ 'database & index';

CREATE INDEX ON tickets USING gin (tags);      -- tags text[]
SELECT * FROM tickets WHERE tags @> '{urgent,db}';
  • Write-heavy table-এ ব্যয়বহুল — এক row insert অনেক posting update; fastupdate pending list দিয়ে batch করে
  • tsvector-এ position data — phrase query, ranking (ts_rank) সম্ভব
  • Array/jsonb containment (@>, ?) — GIN-ই প্রধান রাস্তা

Search-এর জগতে inverted index-ই মূল স্থাপত্য — Elasticsearch-এর কেন্দ্রও এটা।