Быстрое хранилище данных для регистрации - PullRequest
2 голосов
/ 21 января 2011

В настоящее время я пишу анкету, которая собирает и хранит большое количество данных от разных пользователей, и я ищу способ эффективного хранения результатов. У меня есть следующие требования:

  • очень быстрая запись
  • стойкие
  • можно использовать из node.js
  • небольшие накладные расходы
  • чтение не разрешено до сохранения данных (для повышения производительности мне нужна только запись)

Каждый пользователь может POST несколько результатов, которые мне нужно будет запросить по идентификатору пользователя в более поздний момент времени. Эти запросы будут обрабатываться различными процессами node.js, работающими параллельно. В конце данные могут выглядеть так:

user1:
  result1
  result2
  result3
user2:
  result1
user3:
  result1
  result2

И в принципе мне нужно уметь:

  • Получить список пользователей
  • Запрос результатов от данного пользователя

Сначала я подумал, что буду использовать файл для каждого пользователя, но боюсь, он не будет масштабироваться, поскольку потенциально может быть больше пользователей, чем максимально допустимое количество файлов.

Есть предложения?

Редактировать : каждый результат будет маленьким, обычно менее 50 КБ, если это может помочь.

Редактировать 2 : каждый результат помещается в одну строку ASCII (без \n в данных), в противном случае данные должны рассматриваться как строка без определенной структуры.

Ответы [ 4 ]

3 голосов
/ 21 января 2011

Пара ключей-значений, например, redis, поможет вам. Он может использовать used из node.js, и вы можете запрашивать пользователей с идентификатором пользователя, если вы используете userid в качестве ключа.

Но что более важно .. Вам нужна производительность или вам нужно масштабировать? :)

- Сай

1 голос
/ 23 января 2011

Я удивлен, что никто не отзывался о добавлении только dbms, как Couchdb.

Поскольку запись идет только в конец файла базы данных, он не только очень быстрый, но и очень надежный. , Запрашивать его тоже не проблема, так как у вас есть представления (которые вы пишете в js). Поговорить с Couchdb также довольно просто на любом языке, как вы делаете это с помощью REST / http.

В какой-то простой среде записи, которую я сделал, мне удалось использовать 100% из 10 ядер, вставив их с нескольких серверов, что я считаю довольно мощным

Я бы не использовал Токийский кабинет, так как его разработка официально прекратилась в пользу Киотского кабинета

Это мои 2цента

0 голосов
/ 28 мая 2013

Посмотрите на Elasticsearch . HTTP / JSON API, полностью поддерживаемый Lucene. Я храню в нем сотни ТиБ данных. Это даже постоянство по умолчанию для logstash , обычного инструмента, используемого именно для того, что вы хотите делать.

0 голосов
/ 25 января 2011

Не уверен, почему это должен быть NoSQL ... Рассмотрите возможность использования SQLite вместо файлов.Это очень быстро, очень долговечно, легко запрашивать (SQL).Он хорошо подходит для узла, так как узел однопоточный, а SQLite - это внутренняя база данных.

Вот API для доступа к SQLite из узла: http://code.google.com/p/node-sqlite/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...