用户使用CouchDB的上次访问时间

用户使用CouchDB的上次访问时间,couchdb,Couchdb,我是CouchDB的新手,但这与问题无关。问题很简单,但我不清楚 例如:Boris 5秒钟前在网站上,Ivan看到了他的个人资料 如何正确实现此功能(用户上次访问时间) 问题是,如果我们在CouchDB中更新用户配置文件文档,例如:property last_access_time,每次刷新页面时,我们都会获得最相关的信息(使用MySQL,我们就是这样做的),但另一方面,到一天结束时,我们将在大约100000++的地方获得文档的修订版 P>那么,你是怎么做的呢?或者你有什么想法? < P>如果

我是CouchDB的新手,但这与问题无关。问题很简单,但我不清楚

例如:Boris 5秒钟前在网站上,Ivan看到了他的个人资料

如何正确实现此功能(用户上次访问时间)

问题是,如果我们在CouchDB中更新用户配置文件文档,例如:property last_access_time,每次刷新页面时,我们都会获得最相关的信息(使用MySQL,我们就是这样做的),但另一方面,到一天结束时,我们将在大约100000++的地方获得文档的修订版

<> P>那么,你是怎么做的呢?或者你有什么想法?

< P>如果一个文档中有很大的一部分是相对静态的,(一个小部分)是高度动态的,我会考虑把它分成两个不同的文档。
另一种选择可能是使用更适合这种性质的小块数据的高写入吞吐量的东西,如Redis或MongoDB,并且(如果必要)有一个后台任务,偶尔将信息写入CouchDB。

CouchDB在快速文档更新方面没有问题。就这么做吧,就像MySQL一样。高
\u rev
没有问题

唯一的问题是,从第一天起,你必须对你的沙发负责所有CouchDB用户都必须这样做,但您可能必须尽快这样做。(更新很少的应用程序磁盘满的风险较低,因此开发人员可以推迟这项工作。)

  • 轮询数据库并在需要时运行压缩(基于大小、文档计数、
    seq_id
    number)
  • 调查你的观点,并运行压缩
  • 始终具有足够的磁盘容量和i/o带宽以支持压缩。数学上最坏情况:需要2倍的数据库大小和2倍的写入速度;然而,大多数应用程序需要更少的内存。因为您是在更新文档,而不是添加文档,所以您需要的方式更少

    • 这不是一个完整的答案,而是一个可能的优化。除了这里的任何其他答案之外,它也会起作用

      不存储最新的时间戳,只在时间戳更改了5秒或60秒时更新时间戳。

      假设用户在一天内每秒刷新一次。这是86400次更新。但是,如果只以5秒的间隔更新时间戳,则为17280;60秒是1440

      您可以在客户端执行此操作。当您想要更新时间戳时,获取当前文档并检查旧的时间戳。如果不到5秒,不要做任何事情。否则,请正常更新


      您也可以在服务器端执行此操作。在CouchDB中编写一个
      \u update
      函数,您可以像POST
      /db/\u design/my\u app/\u update/last access/the_doc\u id?time=2011-01-31T05:05:31.872Z那样进行查询。更新功能将做同样的事情:检查旧的时间戳,或者什么也不做,或者根据经过的时间进行更新。

      答案取决于您使用的是沙发应用程序(直接浏览器连接到CouchDB)还是传统的中间层(例如PHP、Ruby on Rails、Tomcat、Django)。是哪一个?谢谢。+1,尽管我有不同的答案,但我同意Redis是个好主意。定期同步的快速更新非常适合Redis。可能会改变CouchDB;这取决于您的应用程序的全部优点/缺点。但是Redis(memcache等)是一种常见的应用程序扩展。谢谢你的回答。似乎60秒的延迟是安静的,所以我会使用它。