用于跟踪用户行为的Nosql存储


nosql storage for tracking user behavior

我正试图开发一个系统,记录用户在我们的网站上的动作,所以以后我们可以做一些模式。我不确定应该使用什么数据存储,但我考虑使用NoSQL之类的东西,因为它易于扩展。它应该是无模式的,因此我们可以在必要时轻松更改数据格式。此外,它应该快速而频繁地写入数据,但很少进行读取。

数据应该像这样:

用户id = 1,行动= act1 timestamp = 1234, additional_info1 = something_here用户id = 2, action = act1 timestamp = 324, additional_info2 = something_else_here

在存储方面,我们想为一个用户、一个动作、一个additional_info做一些统计。

你能给我一些提示,我应该使用什么存储?

PS:我们的webapp是用PHP写的

根据您的规格-快速,经常和安全的写入,不那么快的读取,可伸缩性和键将是集合的"代表",并通过它将获取数据,我推荐Cassandra DB。它的描述是:

最佳使用:当你写的比读的多时(日志)

需要的资源:

http://cassandra.apache.org/

由Facebook开发,用于处理消息系统,但也被其他大型玩家使用,如Digg, Twitter, Reddit, Rackspace, Cloudkick, Cisco, SimpleGeo, Ooyala, OpenX。

就写作而言,最快最可靠。

编辑:

另一个描述Cassandra的关键句子:

写比读快,因此实时数据分析是一个自然的利基。

据我所知,这个小生境或多或少就是你需要它的目的。

在这里你可以了解一些细节,并对NoSQL数据库机制进行一个很好的、客观的比较-

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

如果你想要一个更容易的出路,但在较不安全的写作为代价,MongoDB也是一个可行的选择。

它有一个更简单的查询系统,所以基本上你可以更容易地搜索数据。

资源:

http://www.mongodb.org/

欢呼,

据我所知,您需要易于使用和动态/无模式。虽然信息还不够,但我觉得你需要像Redis或MongoDB这样的东西。请注意,MongoDB存储JSON文档和查询有时会变得复杂,可能会涉及一些学习曲线。另一方面,有了Redis,你可以在短时间内做好准备。但是,您应该知道,您需要以不同于RDBMS的方式进行思考。数据分析部分没有连接和关系的东西,所以你需要理解并相应地设计你的解决方案。

如果你需要NoSQL的概述,我已经在我的博客中解释了一些不同类型的NoSQL数据库。http://ttltheory.wordpress.com/2011/08/07/next-generation-data-storage/

你能给我一些提示,我应该使用什么存储?

不完全是。你似乎已经决定使用NoSQL数据库了。

你(我们?)需要回答这个问题的信息是你想捕获什么信息(明确地),你想如何分析它,以及你想如何呈现结果。

无论如何都要使用nosql系统实现完整的解决方案,但是如果您没有很好地定义您的需求,那么我强烈建议使用关系数据库来建模数据并生成示例报告。