关于相同模式或不同的归档表

时间:2012-02-15 03:53:38

标签: database database-design schema archive

我正在使用Oracle作为后端的Java项目。我们有一些表 - 包含大量数据。数据将在6个月后存档,以存档表格。

我有两个选择:

  1. 主表和存档表位于同一架构中。
  2. 另一个架构中的一个架构和归档表中的主表。
  3. 根据个人用户选项,我有时需要从主表和归档表中获取数据。

    两个选项中哪一个更好的设计?各有什么好处?

    由于

2 个答案:

答案 0 :(得分:1)

我刚刚做了类似的事情并且反击Jim's回答实际上更喜欢不同的架构路线。

有几个原因......

您可以使用相同的名称调用表。这很有用,很容易看出发生了什么。我调用了架构archive,因此所有选择都来自archive.my_table。如果要将两个表合并在一起,例如,

select * from prod.my_table 
 union 
select *  from archive.my_table

,读得很好而且毫不含糊。

您可以获取所有表格定义,包括授权等,然后执行它们。无需为使用不同名称创建大量新定义而烦恼。唯一的区别是您的原始架构必须能够从归档架构中进行选择。

我同意Jim对不同的表空间以及不同的索引表空间(如果你正在使用它们,你必须将它们编入索引)。如果您正在使用旋转光盘,虽然您可以将存档表空间放在任何较慢的光盘上,因为如果对它们的查询速度变慢则无关紧要。

答案 1 :(得分:0)

我在两种不同的产品中使用类似的方案。在我看来,最好的方法是将它们保持在相同的模式中,但是为了提高性能,您可能希望将它们放在不同的表空间中,每个表空间的数据文件位于不同的物理磁盘上(即每个表空间的SAN上的不同LUN)。这就是我们在数据仓库软件中所做的事情;我们有活动数据所在的表,以及在一天结束时将数据移动到HIST表的移动历史记录过程。

除了组织like-tables之外,不同模式的唯一真正好处是,如果您希望模式能够从不同的服务器/实例运行。由于您似乎希望能够在某些情况下加入表格,因此您无法在不同的实例中使用它们(不是没有DBLink,而是要避免使用它们)。因此,拥有不同的架构并没有多大好处。