我有生产和工作的应用程序。它托管在heroku上,并在云中使用Postgres 9.3。有2个数据库:master和(只读跟随者)slave。有Users
,Likes
,Followings
,Subscriptions
等表格。我们需要存储有关userCreated
,userDeleted
,userLikedSomething
,userUnlikedSomething
,userFollowedSomeone
,userUnfollowedSomeone
等事件的完整日志。稍后我们必须准备关于当前和历史数据的统计报告/图表。主要问题是当用户被删除时,它只是从数据库中删除,因此我们无法检索从数据库中删除的用户,因为它们不再存储在数据库中。同样适用于喜欢/不喜欢跟随/取消关注等等。很少有事情我不知道如何妥善处理:
如果我们将事件存储在具有外键的同一数据库中的用户配置文件中,那么历史数据将会发生变化,因为每个事件都将被链接到#34;当前的用户个人资料将随时间变化。
如果我们将事件存储在单独的postgres数据库中(db只是为了使日志卸载主数据库)然后使用实际用户配置文件加入事件,我们将不得不使用跨数据库连接(dblink
)我猜这可能很慢(我之前从未使用过这个功能)。无论如何,这不会解决第1点的问题。
我想过使用不同类型的数据库来存储日志 - 也许MongoDb - 因为我记得mongoDb更多"写得很重"比postgres(更多"阅读重"?)所以它可能更适合存储日志/事件。但是,我必须将用户配置文件存储在两个数据库中(甚至每个事件的用户配置文件都可以解决第1点)。
我知道这是一个非常普遍的问题,但是可能存在某种标准方法或特殊数据库类型来存储这些数据?