数据库设计——如何存储和使用灵活的自定义用户事件?
Database Design - How to store and use flexible custom user events?
我正在努力思考如何设计数据库(在我的例子中是 postgresql)来存储灵活的自定义事件。我的想法是不必为我要跟踪的每个新事件创建不同的行。
这是它的第一个想法:
这里的问题是使用其他工具(例如 excel 或 Tableau)进行分析变得相当困难,因为现在行的传统名称作为值包含在内。
鉴于之前的数据,这里的结构可能更适合分析,因为行名称是特定事件:
总结一下我的问题:我怎样才能正确存储具有变量 key
和不同类型 value
的事件?
沿用最初的 key/value 设计。
您的 table 的结构对数据的呈现没有影响,例如,如果您将它们导出以用于电子表格。导出数据时,您始终可以使用
这样的查询
SELECT timestamp, user_id,
jsonb_object_agg(key, values)
FROM (SELECT timestamp, user_id, key
jsonb_agg(value) AS values
GROUP BY timestamp, user_id, key) AS q
GROUP BY timestamp, user_id;
我正在努力思考如何设计数据库(在我的例子中是 postgresql)来存储灵活的自定义事件。我的想法是不必为我要跟踪的每个新事件创建不同的行。
这是它的第一个想法:
这里的问题是使用其他工具(例如 excel 或 Tableau)进行分析变得相当困难,因为现在行的传统名称作为值包含在内。
鉴于之前的数据,这里的结构可能更适合分析,因为行名称是特定事件:
总结一下我的问题:我怎样才能正确存储具有变量 key
和不同类型 value
的事件?
沿用最初的 key/value 设计。
您的 table 的结构对数据的呈现没有影响,例如,如果您将它们导出以用于电子表格。导出数据时,您始终可以使用
这样的查询SELECT timestamp, user_id,
jsonb_object_agg(key, values)
FROM (SELECT timestamp, user_id, key
jsonb_agg(value) AS values
GROUP BY timestamp, user_id, key) AS q
GROUP BY timestamp, user_id;