【发布时间】:2018-06-17 05:59:54
【问题描述】:
直截了当,我尝试在 google 和 SO 上进行搜索,但找不到我要查找的内容。这可能是因为我的搜索措辞不正确。
我的问题是,
我有几张桌子,每年可以容纳 1,000 到 100,000 行。我想弄清楚,我/我应该如何处理归档数据?我对数据库没有很好的经验,但下面是我想出的一些方法,我不确定哪种方法更好。当然要考虑性能和易于编码。我正在使用 Java 1.8、Sql2o 和 Postgres。
方法一
每年将数据归档到单独的数据库中。
我不太喜欢这种方法,因为当我们想要搜索旧数据时,我们的应用程序将需要搜索不同的数据库,并且为此添加更多代码对我来说很麻烦。
方法二
将数据归档到单独的数据库中,用于存储 2-3 年之前的数据。
并使用在线状态来提高性能。 (参见方法 3)这是我倾向于作为“最佳”解决方案的东西,其中代码不那么复杂,但数据库也保持相对干净。
方法三 只需为每一行设置状态(例如:A=active,R=Archived)以可能提高查询的性能。只需使用“select * from table where status = 'A'”来减少要查看的行数。
【问题讨论】:
-
方法3,加上适当的索引(这很重要)应该没问题。或者根本没有方法,只是适当的索引。 100000/年听起来并不多(除非你从大爆炸开始就在线)。
-
这个问题听起来最好在dba.stackexchange.com上问
-
您如何决定应该归档哪些行?如果它只是基于日期/时间戳。您可以相应地对表进行分区。
标签: java sql postgresql sql2o