我正在构建一个在多台机器上运行的自动化测试套件,所有机器都将其状态报告给postgresql数据库。我们将运行一系列自动化测试,我们将存储以下信息:
测试次数并不多(比如几千),每台机器(比如50台)都有一项服务,可以检查数据库并确定是否该在该机器上开始新的自动化测试。
我应该如何组织我的SQL表来存储所有信息?是每个属性都有一个列的单个表吗?
如果将来我需要添加属性但希望保持与旧数据库格式的兼容性(即我可能不想删除并创建包含更多列的新表),我该如何处理?新属性应该在不同的表中吗?
我也在考虑复制数据库。如果出现故障,我不介意是否在从属数据库上备份最新的屏幕截图。我应该将屏幕截图存储在自己的表中以简化复制吗?
答案 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来说没什么。