我需要在大型数据仓库中支持动态字段和值以存储API请求日志,而我的用例是我需要存储所有API请求查询字符串,并在将来能够对其进行查询(因此,不仅仅是存储,所以我不能为他们使用blob)
例如 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
如果/当它们“升级”到9.4时)。