@zogrog

Можете посоветовать распределенное сетевое хранилище?

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

begin; select for update; update; commit;

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

В настоящий момент используется получение хеша ключа, вычисление по хешу mecached сервера и postgresql сервера.
Соответственно SQL и memcached/redis не предлагать, интересуют другие решения.
  • Вопрос задан
  • 396 просмотров
Пригласить эксперта
Ответы на вопрос 4
index0h
@index0h
PHP, Golang. https://github.com/index0h
etcd

Чем вас memcached/redis не устраивает?
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Riak ? Правда там по моему без блокировок и транзакций, но всегда можно дописать функционал.
Ответ написан
Комментировать
@lega
Mongodb шардинг, там атомарная транзакционность (+она производительней обычных транзакций), только "умершие локи" нужно будет вручную снимать (либо по таймауту).
Ответ написан
Комментировать
@realfreeman
Как вариант можно обратить внимание на Oracle NoSql Database. Если нет предубеждений - есть community версия, но там есть durability, consistensy, version - придется через них как то выкручиваться, блокировок на уровне записи нет, можете только потребовать применение изменений значения на всех нодах, но это видимо не то, что вам нужно. Ну и плюс к этому максимальные consistency и durability (ALL) - это гарантированные ошибки если хотя одна нода упала или недоступна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы