2009-08-15 22 views
6

我正在繼續鑽研Erlang。我正在考慮使用Erlang開始我的下一個Web項目,在這個階段,我唯一會從Ruby on Rails錯過的東西就是ActiveRecord。Erlang的ActiveRecord

Erlang有很好的替代技術嗎?

更新: 我來解決最近的是ErlyDB,ErlyWeb的一個組成部分。

ErlyDB是Erlang的數據庫抽象層 生成器。 ErlyDB將 數據庫元數據和用戶提供的 元數據組合在一起,生成的功能可讓您以直觀的方式執行公用數據訪問操作。它 還提供了一個單一的API工作 與不同的數據庫引擎 (雖然目前,只有MySQL支持 ),讓你編寫便攜式 數據訪問代碼。

+0

不是一個紅寶石用戶,你能描述你想要的ActiveRecord中的功能嗎?它是從SQL模式生成代碼的東西嗎? – Christian 2009-08-17 11:38:16

回答

4

嗯,ActiveRecord的主要優點(在我看來)是:

  1. 您可以在關係數據庫中持久化對象幾乎透明。
  2. 您可以通過對象的任何屬性來搜索數據庫。
  3. 您可以在持續對象時驗證對象。
  4. 您可以在刪除,更新或插入對象時進行回調。

隨着Mnesia的:

  1. 你可以堅持任何Erlang的數據完全透明。
  2. 使用模式匹配,您可以通過數據的任何屬性或其組合來搜索數據庫。
  3. QLC爲模式匹配不夠的情況提供了一個很好的查詢界面。

然而,對於驗證和回調,沒有解決方案...

所以,你在是缺乏Mnesia的是ActiveRecord的有什麼?

+2

我想這個問題的一部分是我沒有準備好放棄我的RDBMS。我知道這些工具,我知道如何優化和擴展。也許這只是對未知的恐懼。 – 2009-08-15 07:35:42

+2

然後冒險。如果你以不同的方式去了解所有問題,那將會對你有所幫助。當你知道多種方法時,打個好電話會容易得多。有時候一個更大的工具箱可以派上用場。 – 2009-08-18 03:04:11

+1

我想知道是否Erlang現在還不適合Web應用程序。 – 2009-08-19 05:03:35

4

我不認爲在寫這篇文章的時候真的有。這可能是因爲在erlang中編寫的系統種類以及編寫這些系統的人員並不真正需要關係數據庫。我看到了使用mnesia,CouchDB,東京內閣和其他這樣的替代數據庫技術的更多代碼。

這並不是說有人可能不想創建類似活動記錄的東西。這只是尚未真正需要。也許你會成爲第一個? :-)

1

一些谷歌搜索揭示了CouchDB的庫/客戶/包裝說明 「的ActiveRecord喜歡像CouchFoo庫」,並建議避開:

http://upstream-berlin.com/2009/03/31/the-case-of-activerecord-vs-couchdb/

http://debasishg.blogspot.com/2009/04/framework-inertia-couchdb-and-case-of.html#

爲您的評論「不還適合網絡應用程序「,我認爲這些作品在那裏:mochiweb,沙發,雅司,氮氣,erlyweb。當然,有一些強大的工具,非常不同的範例,從rails,django和PHP。

+0

這真的很有意思,反映了我最近經歷的想法。我想要ActiveRecord,因爲我非常關注軟件的思考和推理。作爲MySQL的替代品,我在CouchDB上看得更加認真。 – 2009-08-24 01:22:11

1

你可能有興趣在芝加哥老闆的「BossRecords」:

http://www.chicagoboss.org/api-record.html

他們很明確地仿照活動記錄模式,並且使用了大量的編譯器魔法使語法乾乾淨淨。 BossRecords支持save/validate以及has_many/belongs_to關聯。您的數據模型中的屬性通過生成的函數(例如「Employee:first_name()」)提供。