在 CouchDB 中存储用户活动
Storing User Activities In CouchDB
我是 CouchDB 和这些类型的数据库的新手,所以我有一个问题:我应该如何存储每个用户的 activity?我考虑将其存储为附件,使用用户数据库中的用户 ID 将其存储在不同的数据库中。这些会以某种方式起作用,但似乎效率不高。我正在尝试开发一个跟踪应用程序,因此数据会增长得非常快。我必须开发一个可以轻松管理和跟踪的数据库。您对在 CouchDB 中存储用户 activity 有何建议?
我建议创建一个独立于主数据库的数据库,然后将每个 activity 作为单个文档存储在该数据库中。然后,您可以根据需要编写 map/reduce 视图来查询它。
因此,如果您的主数据库名为 "foo",请创建另一个名为 "foo-activity" 的数据库。然后像这样将 activity 个文档添加到 "foo-activity" 中:
{
"user_id": 4242,
"activity": "clicking",
"url": "http://foo.bar",
"timestamp": 121212213
}
然后 activity_by_time_and_user 视图可能如下所示:
function(doc){
if doc.activity and doc.user_id
emit([doc.timestamp,doc.user_id], doc.activity)
}
然后您可以根据时间范围按用户搜索。
我是 CouchDB 和这些类型的数据库的新手,所以我有一个问题:我应该如何存储每个用户的 activity?我考虑将其存储为附件,使用用户数据库中的用户 ID 将其存储在不同的数据库中。这些会以某种方式起作用,但似乎效率不高。我正在尝试开发一个跟踪应用程序,因此数据会增长得非常快。我必须开发一个可以轻松管理和跟踪的数据库。您对在 CouchDB 中存储用户 activity 有何建议?
我建议创建一个独立于主数据库的数据库,然后将每个 activity 作为单个文档存储在该数据库中。然后,您可以根据需要编写 map/reduce 视图来查询它。
因此,如果您的主数据库名为 "foo",请创建另一个名为 "foo-activity" 的数据库。然后像这样将 activity 个文档添加到 "foo-activity" 中:
{
"user_id": 4242,
"activity": "clicking",
"url": "http://foo.bar",
"timestamp": 121212213
}
然后 activity_by_time_and_user 视图可能如下所示:
function(doc){
if doc.activity and doc.user_id
emit([doc.timestamp,doc.user_id], doc.activity)
}
然后您可以根据时间范围按用户搜索。