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
またはjson
データ型を使用しようとします(またはjsonb
9.4に「アップグレード」する場合)。