Любые клиентские библиотеки, которые реализуют MVCC через Amazon SimpleDB? - PullRequest
2 голосов
/ 16 марта 2010

Теперь, когда Amazon SimpleDB реализует согласованные операции чтения и условного обновления / удаления, можно реализовывать междоменные транзакции с использованием MVCC.

Существуют ли какие-либо клиентские библиотеки, которые его предоставляют?

Ответы [ 2 ]

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

В настоящее время их нет, и есть вероятность, что это невозможно.

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

Последние обновления согласованности позволяют легко осуществлять транзакции на уровне элемента. Однако для нескольких элементов в одном (или другом) домене нет прямой реализации. Также нет опций уровня изоляции.

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

Кроме того, похоже, что для ВСЕГО доступа к данным потребуются согласованные операции чтения. Это, вероятно, сведет на нет все преимущества доступности при использовании в конечном итоге непротиворечивой системы, поскольку непротиворечивые операции чтения завершаются неудачно, когда даже один узел реплики не может быть достигнут.

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

0 голосов
/ 21 марта 2010

Я много думал об этом, работая над моей Simple Savant C # библиотекой для SimpleDB , и я пришел к выводу, что попытка наложить истинную транзакционность в распределенной системе, такой как SimpleDB, является плохая идея по целому ряду причин.

Лучшая вещь, которую я придумал (которая обеспечивает ценность без чрезмерных обещаний и чрезмерного усложнения системы), это то, что я называю «надежные записи». Это гарантировало бы, что в конечном итоге все операции (помещает и удаляет) в междоменном обновлении завершаются. Единственный способ постоянного сбоя части записи - это если одно из ваших обновлений нарушит ограничения SimpleDB.

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

...