PostgreSQL表用于存储自动化测试结果

时间:2010-03-26 06:20:42

标签: sql postgresql

我正在构建一个在多台机器上运行的自动化测试套件,所有机器都将其状态报告给postgresql数据库。我们将运行一系列自动化测试,我们将存储以下信息:

  • 测试ID(GUID)
  • 测试名称
  • 测试说明
  • 状态(正在运行,已完成,等待运行)
  • 进度(%)
  • 开始考试时间
  • 考试结束时间
  • 测试结果
  • 运行测试的最新截图(每30秒更新一次)

测试次数并不多(比如几千),每台机器(比如50台)都有一项服务,可以检查数据库并确定是否该在该机器上开始新的自动化测试。

我应该如何组织我的SQL表来存储所有信息?是每个属性都有一个列的单个表吗?

如果将来我需要添加属性但希望保持与旧数据库格式的兼容性(即我可能不想删除并创建包含更多列的新表),我该如何处理?新属性应该在不同的表中吗?

我也在考虑复制数据库。如果出现故障,我不介意是否在从属数据库上备份最新的屏幕截图。我应该将屏幕截图存储在自己的表中以简化复制吗?

2 个答案:

答案 0 :(得分:0)

如果在插入列表中指定列,如

INSERT INTO TABLE (Col1, Col2,..) VALUES (1, 2, ...)

如果稍后添加列,则可以。唯一的问题可能是您开始删除列。

更新应该没问题,因为您已经指定了列。

最终你可以从一个属性表开始,但是你松开了明确的列类型,从表中选择将是一个maintinance和性能麻烦。

所以创建表,然后插入时,确保指定列名,然后当你更改表结构(添加新列)时,这应该不是问题,除非它们设置为不为null,在这种情况下,您可能必须指定默认值。

答案 1 :(得分:0)

单个表格没问题。

如果您有一组冗余数据(例如,测试状态等),您可能希望将它们分解为自己的小表(因此您存储1或2而不是“通过”“失败“,并且可以加入状态表。”

如果添加列,没什么大不了的。为确保向后兼容性,请确保始终符合列名​​:

select cola, colb, colc from table...

insert into table(cola, colb, colc) values ('x', 'y', 'z')

当然,请确保在新列中允许空值。

几千行对于postgres来说没什么。