Cassandra / HBase или просто MySQL: потенциальные проблемы в следующем - PullRequest
4 голосов
/ 26 марта 2010

Скажите, что у меня есть "пользователь". Это ключ. И мне нужно вести учет пользователей. Я планирую получить запись с ключом «user» и значением от «0» до «9999+ ;-)» (столько, сколько у меня будет).

В какие проблемы я буду въезжать, если для этого буду использовать Cassandra, HBase или MySQL? Скажем, у меня есть тысяча новых обновлений для этого «пользовательского» ключа, где мне нужно увеличить значение. Я в беде? Заблокирован для записи? Есть ли другой способ сделать это?

Почему это сделано - будет много «пользовательских» ключей. Разные другие случаи. Но идея та же самая. Зачем держать это так - потому что у меня будет больше чтений, поэтому я всегда могу очень быстро получить «подсчитанное значение».

Ответы [ 4 ]

4 голосов
/ 28 марта 2010

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

В качестве альтернативы у cassandra есть contrib / mutex для добавления поддержки блокировки через ZooKeeper.

1 голос
/ 18 сентября 2010

MongoDB и HBase имеют эту встроенную функцию (как и большинство других баз данных, которые гарантируют согласованность).

Один довольно простой трюк с Cassandra состоит в том, чтобы иметь определенную строку для usercount, а затем вставлять уникальное имя столбца (например, случайный UUID) с пустым значением в него каждый раз, когда добавляется пользователь. С регулярными интервалами подсчитайте количество столбцов и поместите их в общий счетчик - удалив только что подсчитанные столбцы.

Таким образом, в любое время общее количество пользователей будет равно [общее число] + [количество столбцов в строке количества пользователей]. Вы можете получить их, по сути, с двумя операциями чтения, и если у вас включен кеш строк, это будет быстро.

1 голос
/ 28 марта 2010

MongoDB имеет обновление на месте и специальный оператор inc для счетчиков. http://blog.mongodb.org/post/171353301/using-mongodb-for-real-time-analytics

0 голосов
/ 29 июня 2010

HBase имеет метод incrementColumnValue для быстрой атомарной операции чтения / записи.

...