我在我的数据库中有一个存储日志的表。日志文件时间戳与第二精度和存储各种传感器的值和它们的来源:PostgreSQL bytea主键
log_id, log_date, primary_system_source, sub_system_source, values
凡LOG_ID,primary_source和sub_source是整数,并且值是一个可变长度的字节数组(数据类型:BYTEA)。
在大多数情况下LOG_ID,LOG_DATE,primary_system_source和sub_system_source场的组合就足够了作为主键。不幸的是,由于在某些行中解决了日志记录系统中的时间戳,所以区分行的唯一因素是传感器值也添加到主键。
看来我有不具有主键(坏?),并包括在主键的值字段之间的选择。我对第二选择感到担忧,因为我知道它可能会严重影响性能(表格将有数以百万计的行)。
任何提示哪个是最好的解决方案?
任何你不能使用自动递增主键的原因? (postgres lingo中的一个序列) – nos 2010-02-23 14:45:28
我可以,但一个愚蠢的用户可能会来,并尝试两次导入相同的日志。使用序列,数据库会高兴地重新导入日志,给它新的ID。使用主键将防止重复导入的相同日志(并提供比仅匹配文件名更多的保护)。 – James 2010-02-23 15:32:50