我想知道是否存在区分此类数据的典型方法
我必须在数据库中列出设备(例如),每个人都有
我通常在同一个表中混合配置/实际数据,另一个表用于日志数据,
这似乎是一个常见的问题,所以我想知道是否有任何标准的方法来做到这一点。
修改:
这是一个例子
街上的信号量:
由于
答案 0 :(得分:1)
你可能会这样划分(对sql语法和类型很懒):
`
id(键) 位置 型
signal_id,timestamp(复合键) color_stat(红色,黄色,绿色)之一 functioning_state `
在我看来,有些东西不会改变信号,比如它的位置和类型,以及确实改变它的修复状态和颜色的东西。使用此表,您可以查询特定日期灯光工作和红色的时间。
答案 1 :(得分:1)
我认为这里的术语有些混乱。
你所谓的“配置数据”对我来说就像“商业密钥”或“候选密钥”:一组数据(可能)不变,并且唯一地标识实体:只有一个交通信号灯在大街的尽头。
您所谓的“实际数据”似乎是实体的属性,随着时间的推移会发生变化。
所以我认为将它们放在同一个表中并不存在设计问题。
在单独的表中记录“日志数据”(审计跟踪,历史记录)也是一个非常好的主意。
答案 2 :(得分:0)
看起来您可以将这些信息正确地标准化为多个表格。
看起来你不应该考虑把它全部塞进一张桌子里。
答案 3 :(得分:0)
您的配置和实际应该进入不同的表。配置似乎是相当静态的,当写入表中经历极少数写入时,不会碎片化并降低性能。实际数据表会更小,然后可以使用索引,分区,填充索引等对关系返回配置进行优化。实际表可能会更频繁地分段,但应该能够快速重建,因为它包含的数据较少。
以有利于您的prevelant搜索方法的方式优化日志表。如果按日期范围搜索,则在大多数情况下按记录日期对表进行聚类。如果搜索是通过配置项的id进行搜索,则考虑使用id进行分区或仅使用集群并允许表进行分段,并根据配置项的id将其分段。