我应该如何在旧数据库中存储500个键值对?

时间:2014-02-10 13:58:00

标签: sql oracle database-design

我有一个包含260列的遗留表:4个存储全局值,256个列存储参数。我需要扩展表来存储512个值。

最佳解决方案是创建一个只有三列(id,value,parent_id)的子表,因此根据需要存储尽可能多的参数。但是,这需要对代码进行大量重写,而且我不确定性能。

另一种解决方案是简单地扩展表(使其更宽)以存储两倍的值。这是一个更安全的解决方案,因为我需要对代码实施最小的更改。此外,新表格在接下来的4年内不会被修改(至少),因此坚持下去可能是有意义的。

只是为了提供更多信息,我的系统没有单元测试(因此我不愿意修改代码),不使用ORM(因此我需要在代码编写和读取数据库时做很多更改并且PM担心第一个解决方案可能比现有解决方案慢。我可以期望在表中存储10000行,因此建议的子表将是大约5M行。

任何人都可以证明所提议的设计实际上比当前设计更快吗?设计考虑是不够的(目前的系统工作......)。是否有其他好的(或坏的)理由转向拟议的设计?

1 个答案:

答案 0 :(得分:2)

您正在查看数据库仓库和雪花之间的关键。

如果这是一个表格,你将要处理大量的阅读,那么你需要关注不同的事情。

在将条目分成“子表”后将条目插入数据库现在将采用512个插入而不是1.但是,编辑单个参数将修改一个小区域,不会影响其他511个区域。

就我个人而言,我认为512列有点过分,但我会考虑是否存在其他一些可以转换为逻辑表的关系,而不是“无论我需要什么价值去”的“匿名表”。

对于所有数据库事物,你可以做的最好的事情测试它。只有你知道这个表最常用的方式,编写测试来插入1M行并读取1M次非常容易。