2012-02-16 2 views
4

В настоящее время я разрабатываю приложение, размещенное в Google приложении. Однако у gae есть много недостатков: это дорого и очень сложно отлаживать, поскольку мы не можем привязываться к реальным экземплярам.Распределенный магазин с транзакциями

Я рассматриваю возможность изменения gae на альтернативу с открытым исходным кодом. К сожалению, ни одно из существующих решений NOSQL, которые удовлетворяют мне, поддерживают транзакции, подобные транзакциям gae (gae поддерживают транзакции внутри групп сущностей).

Что вы думаете о решении этой проблемы? В настоящее время я рассматриваю такой магазин, как Apache Cassandra + служба блокировки (hazelcast) для транзакций. У кого-нибудь есть опыт в этой области? Что вы можете порекомендовать

ответ

2

Планируется поддержка групп сущностей в кассандре в будущем, см. CASSANDRA-1684.

Если ваши данные не могут быть легко смоделированы без транзакций, стоит ли использовать не трансациональную базу данных? Вам нужна масштабируемость?

Стандартный способ совершения транзакций, как и в случае cassandra, описан в этом presentation, начиная с слайда 24. В основном вы пишете что-то похожее на запись WAL log в 1 строку, затем выполняете фактические записи в нескольких строках, а затем удаляете WAL строка журнала. При сбое просто прочитайте и выполните действия в журнале WAL. Поскольку все записи cassandra имеют установленную пользователем метку времени, все записи могут быть сделаны идемпотентными, просто сохраните метку времени вашей записи с записью журнала WAL.

Эта стратегия дает вам Atomic и Durable в ACID, но вы не получаете Consistency and Isolation. Если вы работаете в масштабе, который требует чего-то вроде cassandra, вам, вероятно, придется отказаться от полной транзакции ACID.

+0

Большое спасибо. Это именно то, что мне нужно. –

1

Возможно, вы захотите попробовать AppScale или TyphoonAE для размещения приложений, созданных для App Engine на вашем собственном оборудовании.

Если вы разрабатываете под Python, у вас есть очень интересные варианты отладки с помощью Werkzeug debugger.

+0

Я думаю, что вопрос относится скорее к «решениям NoSQL, которые поддерживают транзакции», а не к альтернативе GAE с открытым исходным кодом. И из того, что я знаю, обе альтернативы, которые вы предлагаете, по-прежнему находятся в стадии бета-тестирования, а не в готовом виде, и отсутствуют несколько API-интерфейсов App Engine. –

Смежные вопросы