LINUX.ORG.RU

посоветуйте пожалуйста сетевое хранилище

 


1

1

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

begin; select for update; update; commit;

Должна быть возможность добавлять сервера и перераспределять на них данные как с целью ускорения операций так и с целью повышения надежности.

★★★★

Ответ на: комментарий от reprimand

сейчас используется postgresql для выборок по заранее известным ключам и транзакциям, интересны не SQL решения

quest ★★★★
() автор топика

Блокировки в распределенных системах обычно плохая идея, так как можно взять блокировку, упасть, и блокировку будет некому снять. Поэтому обычно предлагается CAS, compare and swap:

do {
  (token, value) <- getValue key
  // ololo trololo
  updated <- setValue key value2 token
} until(updated)

Если между чтением и записью другой поток поменял значение (обычно это случается редко), вы просто повторяете операцию. Как Riak, так и Cassandra в последних версиях поддерживают CAS.

afiskon
()
Ответ на: комментарий от afiskon

можно взять блокировку, упасть, и блокировку будет некому снять

обрыв соединения должен снимать блокировку (как в postgres), но на крайняк пойдет и cas как в memcached. спасибо!

quest ★★★★
() автор топика
Последнее исправление: quest (всего исправлений: 1)
Ответ на: комментарий от afiskon

можно более конкретный пример для Riak? читаю но про CAS не нашел что-то пока

quest ★★★★
() автор топика
Ответ на: redis от anonymous

redis и memcached не предлагать

quest ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.