programing

PostgreSQL의 JSON 스키마 검증

lastmemo 2023. 3. 27. 20:56
반응형

PostgreSQL의 JSON 스키마 검증

Postgre에서 JSON 스키마 검증에 대한 정보를 찾을 수 없습니다.SQL, Postgre에서 JSON Schema 검증을 구현하는 방법이 있습니까?SQL JSON 데이터 유형

다른 포스트그레가 있습니다.json 검증을 구현하는 SQL 확장입니다.사용법은 "Postgres-JSON-schema"와 거의 동일합니다.

CREATE TABLE example (id serial PRIMARY KEY, data jsonb);
-- do is_jsonb_valid instead of validate_json_schema
ALTER TABLE example ADD CONSTRAINT data_is_valid CHECK (is_jsonb_valid('{"type": "object"}', data));

INSERT INTO example (data) VALUES ('{}');
-- INSERT 0 1

INSERT INTO example (data) VALUES ('1');
-- ERROR:  new row for relation "example" violates check constraint "data_is_valid"
-- DETAIL:  Failing row contains (2, 1).

트윗을 검증하는 벤치마킹을 몇 가지 실시했습니다만, 「Postgres-JSON-schema」보다 20배 빠릅니다.주로 SQL이 아닌 C로 쓰여져 있기 때문입니다.

면책 사항, 이 확장자는 제가 작성했습니다.

포스트그레가 있다PL/PgSQL에서 JSON 스키마 검증을 구현하는 SQL 확장입니다.

이것은 다음과 같이 사용됩니다(프로젝트 README 파일에서 가져옵니다).

CREATE TABLE example (id serial PRIMARY KEY, data jsonb);
ALTER TABLE example ADD CONSTRAINT data_is_valid CHECK (validate_json_schema('{"type": "object"}', data));

INSERT INTO example (data) VALUES ('{}');
-- INSERT 0 1

INSERT INTO example (data) VALUES ('1');
-- ERROR:  new row for relation "example" violates check constraint "data_is_valid"
-- DETAIL:  Failing row contains (2, 1).

필요한 것은 JSON Schema의 제약을 Postgre로 변환하는 것입니다.SQL의 예:

{
    "properties": {
        "age": {"minimum": 21}
    },
    "required": ["age"]
}

대상:

SELECT FROM ...
WHERE (elem->>'age' >= 21)

기존 툴에 대해서는 잘 모릅니다.MySQL과 비슷한 것을 알고 있습니다.자신의 글을 쓸 때는 도움이 될 수 있지만, Postgre에서는 JSON 타입을 사용할 때는 아무것도 없습니다.SQL.

언급URL : https://stackoverflow.com/questions/22228525/json-schema-validation-in-postgresql

반응형