应用程序事件记录统计信息

时间:2014-12-02 11:28:05

标签: mongodb postgresql logging datastore

我有生产和工作的应用程序。它托管在heroku上,并在云中使用Postgres 9.3。有2个数据库:master和(只读跟随者)slave。有UsersLikesFollowingsSubscriptions等表格。我们需要存储有关userCreateduserDeleteduserLikedSomethinguserUnlikedSomethinguserFollowedSomeoneuserUnfollowedSomeone等事件的完整日志。稍后我们必须准备关于当前和历史数据的统计报告/图表。主要问题是当用户被删除时,它只是从数据库中删除,因此我们无法检索从数据库中删除的用户,因为它们不再存储在数据库中。同样适用于喜欢/不喜欢跟随/取消关注等等。很少有事情我不知道如何妥善处理:

  1. 如果我们将事件存储在具有外键的同一数据库中的用户配置文件中,那么历史数据将会发生变化,因为每个事件都将被链接到#34;当前的用户个人资料将随时间变化。

  2. 如果我们将事件存储在单独的postgres数据库中(db只是为了使日志卸载主数据库)然后使用实际用户配置文件加入事件,我们将不得不使用跨数据库连接(dblink )我猜这可能很慢(我之前从未使用过这个功能)。无论如何,这不会解决第1点的问题。

  3. 我想过使用不同类型的数据库来存储日志 - 也许MongoDb - 因为我记得mongoDb更多"写得很重"比postgres(更多"阅读重"?)所以它可能更适合存储日志/事件。但是,我必须将用户配置文件存储在两个数据库中(甚至每个事件的用户配置文件都可以解决第1点)。

  4. 我知道这是一个非常普遍的问题,但是可能存在某种标准方法或特殊数据库类型来存储这些数据?

0 个答案:

没有答案