MySQL表历史记录和快照的最佳方法

时间:2020-06-11 07:17:15

标签: php mysql laravel

我正在使用MySQL在Laravel 7中开发CRM。在其中,我有一个有客户的订单。 我想做两件事:

  1. 让订单始终指向创建地点的客户数据
  2. 存储客户信息的历史记录(来自客户表)

过去,我使用的_history表具有与原始结构相同的结构,_snapshot表仅具有更改(例如:id_snapshot,id_customer,列,值,日期),数据快照(例如客户数据)在mysql中为json格式。

但是我不知道什么是最好的可扩展解决方案。

2 个答案:

答案 0 :(得分:0)

基本上,存储此数据的SQL可能是一个好方法。您可以想象在像AWS RDS这样的云提供商上使用可扩展的MySQL实例。

另一种可能的方法是使用NoSQL数据库,例如MongoDB或Elasticsearch。它更易于扩展,特别适合JSON数据。

如果对性能的要求不高,您还可以使用Firebase等100%SaaS服务,甚至将JSON数据存储在S3服务上。

答案 1 :(得分:0)

您可以使用触发器的历史记录表自己实现这种审核框架。直到最近,这才是最明智的方式。但是,既然MariaDB实现了一个称为“时态表”的功能,它将为您重新发明轮子:

https://mariadb.com/kb/en/temporal-data-tables/

它使您可以查看过去任何时间点的数据。