API 요청 로그를 저장하기 위해 큰 데이터웨어 하우스에서 동적 필드와 값을 지원해야합니다. 사용자 사례는 모든 API 요청 쿼리 문자열을 저장해야하며 나중에 쿼리를 수행 할 수 있어야한다는 것입니다 (따라서 스토리지가 아니라, 그래서 나는 그들을 위해 얼룩을 사용할 수 없습니다)
예 : http://example.com/?action=test&foo=abc&bar=def...
모든 field => value
매핑 을 저장해야 합니다. 즉 (action => test), (foo => abc), (bar => def)
, 필드가 동적이기 때문에 내가 찾은 유일한 해결책은 Entity-Attribute-Value를 사용하는 것입니다. 그러나 사람들은 그것이 매우 나쁜 디자인이라고 계속 말합니다.
따라서 위의 사용 사례를 고려할 때 EAV에 적합한 대안은 무엇입니까?
KAV를 사용하는 현재 스키마
테이블
requests
(id, timestamp, uri)
예(1, 149382220, '/')
테이블
params
(request_id, key, value)
예(1, 'action', 'test'), (1, 'foo', 'abc'), (1, 'bar', 'def')
어떤 제안?
업데이트 : AWS RedShift에서웨어 하우스를 실행합니다.
SQL
충분히 구체적이지 않습니다. 두 번 요청을 받았습니다. 나는 세번째입니다.
hstore
or json
데이터 유형 을 사용하려고합니다 (또는 jsonb
"/ 업그레이드 할 때").