DB 확장
pgvector(임베딩 검색)와 PostGIS(지도) 같은 확장을 켜고 끄는 법, 켤 수 있는 목록, 공유 데이터베이스에서의 동작.
DB 확장 (pgvector, PostGIS …)
list_extensions { ref }가 켤 수 있는 확장과 상태(available·enabled·version)를 돌려줘요.
enable_extension { ref, name }으로 켜고 disable_extension { ref, name, confirm: name }으로 꺼요.
켜고 끄는 것은 소유자·관리자만 할 수 있어요.
켤 수 있는 것: vector(pgvector), postgis, citext, hstore, uuid-ossp, pgcrypto,
ltree, fuzzystrmatch, btree_gin, btree_gist, intarray, tablefunc.
pg_trgm과 unaccent는 처음부터 켜져 있고 끌 수 없어요. 목록 밖의 확장은 거절돼요.
확장은 extensions 스키마에 설치돼요. 이 스키마는 모든 검색 경로(SQL 창, 직접 연결, 데이터 API)에
있어서 스키마 이름 없이 써요.
-- enable_extension { ref, name: "vector" } 뒤에
create table docs (id bigserial primary key, body text, embedding vector(1536));
create index if not exists docs_embedding_hnsw on docs using hnsw (embedding vector_cosine_ops);
select id, body from docs order by embedding <=> '[...]' limit 5;
-- enable_extension { ref, name: "postgis" } 뒤에
create table places (id bigserial primary key, name text, at geography(point, 4326));
select name from places where st_dwithin(at, st_makepoint(126.978, 37.566)::geography, 1000);데이터 API에서 가까운 것 찾기는 함수로 만들어 POST /rest/v1/rpc/<함수>로 불러요.
공유 데이터베이스에서는 확장을 데이터베이스 전체가 함께 써요. 다른 프로젝트도 켜 두었으면
꺼도 설치는 남고(note) 이 프로젝트의 기록만 지워요. 확장을 쓰는 열·인덱스·함수가 남아 있으면
끌 수 없으니 먼저 지우세요.
HTTP로는 GET /extensions, PUT /extensions/<이름>(켜기), DELETE /extensions/<이름>(끄기)이에요.