2012-02-16 73 views
4

我目前正在開發一個託管在谷歌應用程序引擎的應用程序。但是,gae有許多缺點:它很昂貴,而且很難調試,因爲我們無法附加到實際的實例。分佈式存儲與交易

我正在考慮將gae更改爲開源替代方案。不幸的是,現有的NOSQL解決方案都不支持我支持類似於gae交易的交易(gae支持實體組內的交易)。

您對解決這個問題有什麼看法?我目前正在考慮像Apache Cassandra這樣的商店+一些鎖定服務(hazelcast)進行交易。有沒有人有這方面的經驗?您可以推薦什麼

回答

2

計劃未來支持卡桑德拉的實體組織,請參閱CASSANDRA-1684

如果您的數據無法輕易建模而無需事務處理,那麼是否值得使用非跨語言數據庫?你需要可擴展性嗎?

標準的方式做這樣的事情卡桑德拉在這個presentation描述,開始幻燈片24.交易基本上你寫類似WAL log進入1行的東西,然後對多行的實際寫入,然後刪除WAL日誌行。失敗時,只需閱讀並執行WAL日誌中的操作即可。由於所有cassandra寫入都有用戶提供的時間戳,因此所有寫入都可以是冪等的,只需使用WAL日誌條目存儲寫入的時間戳即可。

該策略爲您提供ACID中的Atomic和Durable,但是您沒有獲得一致性和隔離性。如果你的工作規模要求cassandra,那麼你可能需要放棄完整的ACID交易。

+0

非常感謝。這正是我需要的。 – 2012-02-26 06:58:23

1

您可能需要嘗試AppScaleTyphoonAE,以便在您自己的硬件上託管爲App Engine構建的應用程序。

如果您是在Python下開發的,您可以使用Werkzeug debugger非常有趣的調試選項。

+0

我認爲這個問題更多地涉及'支持事務的NoSQL解決方案,而不是GAE的開源替代方案。而且據我所知,您建議的兩種替代方案仍處於測試階段,尚未準備就緒,並且缺少一些App Engine API。 – 2012-02-20 09:22:33