最近我想到了将历史数据存储在MySQL数据库中的最佳实践.目前,每个版本化表有两列- valid_from和valid_to,这两个DATETIME类型.包含当前数据的记录已valid_from填充其创建日期.当我更新这一行时,我填写valid_to更新日期并添加与上一行valid_from相同的新记录valid_to- 简单的东西.但我知道表格会非常快,因此获取数据可能会非常慢.
我想知道你是否有任何存储历史数据的做法?
担心"大"表和性能是一个常见的错误.如果您可以使用索引来访问您的数据,那么如果您有1000条1000000条记录并不重要 - 至少不是您能够衡量的.你提到的设计是常用的; 这是一个很棒的设计,时间是业务逻辑的关键部分.
例如,如果您想知道客户下订单时商品的价格是多少,那么能够搜索valid_from <order_date和valid_until为null或> order_date的产品记录是迄今为止最简单的解决方案.
情况并非总是如此 - 如果您仅为了存档目的而保留数据,那么创建存档表可能更有意义.但是,您必须确保时间实际上不是业务逻辑的一部分,否则搜索多个表的痛苦将是巨大的 - 想象每次要查找有关的表时必须搜索产品表或product_archive表在下订单时的产品价格.
| 归档时间: |
|
| 查看次数: |
5805 次 |
| 最近记录: |