Logging 用于日志记录的快速数据存储

Logging 用于日志记录的快速数据存储,logging,nosql,node.js,Logging,Nosql,Node.js,我目前正在写一份调查问卷,收集并存储来自不同用户的大量数据,我正在寻找一种有效存储结果的方法。我有以下要求: 写得真快 持久的 可从node.js使用 小开销 在存储数据之前未授权读取(为了性能起见,我只需要写) 每个用户都可以发布几个结果,我需要在以后的某个时间点按用户id查询这些结果。这些请求将由并行运行的不同node.js进程处理。最后,数据可能如下所示: user1: result1 result2 result3 user2: result1 user3: re

我目前正在写一份调查问卷,收集并存储来自不同用户的大量数据,我正在寻找一种有效存储结果的方法。我有以下要求:

  • 写得真快
  • 持久的
  • 可从node.js使用
  • 小开销
  • 在存储数据之前未授权读取(为了性能起见,我只需要写)
每个用户都可以
发布
几个结果,我需要在以后的某个时间点按用户id查询这些结果。这些请求将由并行运行的不同node.js进程处理。最后,数据可能如下所示:

user1:
  result1
  result2
  result3
user2:
  result1
user3:
  result1
  result2
基本上我需要能够:

  • 获取用户列表
  • 查询给定用户的结果
我首先想到的是每个用户使用一个文件,但我担心这不会扩展,因为可能会有更多的用户超过允许的最大文件数

有什么建议吗

编辑:如果有帮助,每个结果都会很小,通常小于50kb


编辑2:每个结果都适合一条ASCII行(数据中没有
\n
),否则数据应该被视为没有特定结构的字符串。

像redis这样的键值对db会帮助您。它可以使用node.js,如果用户使用userid作为密钥,则可以使用userid查询用户

但更重要的是。。您需要性能还是需要扩展?:)


--Sai

我感到惊讶的是,没有人不知道像Couchdb这样只有附加的dbms

由于写入只会到达数据库文件的末尾,因此不仅速度非常快,而且非常健壮。 . 查询它也不是问题,因为您有视图(用js编写)。在任何语言中与Couchdb对话都非常简单,就像使用REST/http一样

在我做的一些简单的写工作台下,我通过插入多个服务器,成功地利用了100%的10个内核,我认为这是非常强大的

我不会使用东京内阁,因为它的发展已经正式停止,而倾向于京都内阁


这是我的2个要素

不确定为什么这必须是NoSQL。。。考虑使用SQLite代替文件。它非常快速、耐用、易于查询(SQL)。它非常适合node,因为node是单线程的,SQLite是进程内数据库


这里有一个从节点访问SQLite的API:

请看一看。HTTP/JSON API,Lucene支持,完全分布式。我在里面存储了数百个TiB的数据。它甚至是默认的持久性,一个用于您正在/正在寻找做的事情的常用工具。

我真的很喜欢redis,但它不适合在这里使用,这是一种过度使用(我不需要任何数据结构)。我需要性能(书面形式)和可伸缩性。我刚才给了redis一个KV db的例子。。但你可以选择任何千伏分贝。甚至伯克利DB或东京内阁。你需要为它做计划。像redis这样的节点和DB提供了最佳性能和可感知的可伸缩性…“any kv DB”并不是我想要的答案…架构图可能:)。。您要查找的数据访问模式指向KV DB类型。我不能给你一个明确的数据库并强迫你使用它,因为你需要根据你的使用模式对它们进行基准测试。数据库是复杂的实体。对不起,如果我不能给你一分贝,并要求你使用它。什么是安全级别,你正在寻找?在内存中写入数据的数据库应该像Memcached一样快速。但在单服务器模式下使用它会导致安全灾难。如果您目前不考虑安全性,那么在JS:)中使用内存内哈希将获得最高的写入速度,那么您决定使用哪个数据存储?您能提供一些关于为什么选择那个特定DBMS的见解吗?