哪种数据模型最适合简单的用户视图跟踪器?

Posted

技术标签:

【中文标题】哪种数据模型最适合简单的用户视图跟踪器?【英文标题】:Which data model is optimal for a simple tracker of user views? 【发布时间】:2011-09-14 01:35:36 【问题描述】:

这里有更多关于你们的学术问题。假设我想在 ruby​​ on rails 应用程序中创建一个模型来跟踪简单的视图信息。我想记录 user_id,查看页面的 URI,并跟踪用户访问页面的次数。

模型 A:一种方法是创建一个具有 user_id 和 page 属性的模型视图(记录 uri),然后在每次用户打开页面时创建一个新条目。

模型 B:第二种方法是向模型添加属性“page_views”,以跟踪用户访问该页面的次数。

优点和缺点:模型 A 将记录更多信息并导致比模型 B 更大的数据库。但是,模型 B 需要控制器搜索现有的用户页面组合,或者向该条目添加视图,或创建一个新的。这会导致数据库更小,但由于需要搜索现有条目,因此规模可能会更小。

所以我对你们的问题是:哪个更重要?我的想法错了吗?我在这里遗漏了什么(忽略了其他性能考虑因素?)

【问题讨论】:

我们对基于 Redis 的 NoSQL 解决方案也是如此,如果你对 NoSQL 没问题,我可以分享一下 嗨 mikhailov - 我目前不知道 NoSQL - 但是,我总是想了解更多,所以如果你想写出来,我会很高兴阅读和学习! NoSQL 非常适合非关系数据 【参考方案1】:

跟踪用户活动的 NoSQL 方法:

model app/models/user.rb
class User < ActiveRecord::Base
  include UserModules::Tracker
  ...
end


mixin app/models/user_modules/tracker.rb
module UserModules
  module Tracker

    def get
      key = "user_" + self.id.to_s

      arr = Resque.redis.lrange(key, 0, -1)
      arr.map|i| JSON.parse(i)
    end


    def put(controller_name, action_name, details="")
      key     = "user_" + self.id.to_s
      created = Time.now.to_formatted_s(:db).to_json

      # silent exception handle, so you can do not run Redis localy
      begin
        Resque.redis.rpush key, 
          :controller_name => controller_name,
          :action_name     => action_name,
          :details         => details,
          :created_at      => created
      rescue
        nil
      end

    end

  end
end


controller app/controller/dashboard.rb
class Dashboard < ApplicationController
  after_filter :track, :only => :show

  # this action will be tracked
  def show
  end

  # this action will show tracking
  def logs_show
    render :json => current_user.get
  end

  ...

  private

  def track
    details = "any details...."
    current_user.put(controller_name, action_name, details)
  end
end

您需要安装 Redis,我更喜欢使用 Resque 作为通过 Resque.redis 设置和初始化 Redis 的常用方法,因为它可以帮助您使用 resque- 浏览跟踪网络

在我的gist中设置 Redis 的路上

【讨论】:

以上是关于哪种数据模型最适合简单的用户视图跟踪器?的主要内容,如果未能解决你的问题,请参考以下文章

EasyDL的哪种算法更适合你的图像分类应用

KnockoutJS 3.X API 第二章 数据监控视图模型与监控

如何使用 MVVMCross 构建视图模型

哪种模型适合预测百分比? [关闭]

确定用于简单时间跟踪应用程序的数据模型

Rails - 相同的模型/控制器,但不同的视图