用于点击流应用程序的数据库RELATIONAL OR NOSQL?

时间:2013-07-10 09:39:27

标签: mysql database nosql key-value-store

我需要创建一个数据库来处理点击流(来自~240个子域)。我使用Java Script来获取每次点击的信息,如(Host,Page,Date,userID,Referer,HostName,RefererPath,uniqueUserID),而不是通过java web动态应用程序将数据插入数据库。每天大约有9百万条新记录,我必须每分钟插入新记录。另一个应用程序需要能够在最后一个(10分钟,20分钟,30分钟,1小时...... 24小时)检索有关特定文章/子域的浏览量/唯一访问者/等的信息。我只需要记录过去3个月的记录。

最初我考虑使用MySQL,因为我只对开源感兴趣。但我正在考虑NoSQL解决方案。问题是我只有关系数据库的经验,而且我真的无法判断NoSQL在这里是不是更好的解决方案。如果我选择使用NoSQL,我还应该使用哪个数据库? Key-value商店是最好的方式吗?

1 个答案:

答案 0 :(得分:2)

我猜这个数据的一致性并不重要(统计数据?)所以你确实可以节省一点点的一致性。 NoSQL似乎是一个不错的选择,一个关键的价值存储也是我的选择。现在真正的问题是:什么是最合适的?

我会考虑Redis和Riak(基本上是最知名的):

Riak (AP系统):

  • 容错(具有分区和复制的无主)
  • Map reduce
  • 全文搜索
  • BASE

Redis (CP系统):

  • 真的很快
  • 内存:你需要内存!这也意味着您需要复制,因此您不会在崩溃时丢失所有内容。我相信Redis也使用磁盘快照。
  • 使用reelection
  • 的主/从
  • BASE

两者都有更多的功能,你应该去阅读文档的陷阱。 Redis主要用作缓存,因为它很快,而Riak专注于容错。鉴于您的可扩展性要求,两者都可以满足您的需求。因此,您必须根据上述内容进行选择。