2009-02-05 47 views
0

小心一些代碼,我寫慢慢變成自身的一個數據庫系統,具有增量索引,自由「文件」(又名CouchDB的一種),它可以有任意屬性... annyyywaay ......我決定繼續發展它,主要是爲了教育目的,也是爲了真正的嚴格定製它,只是爲了我的需求,並保持它的精益,因爲我沒有試圖使它對任何人都有用,除了我自己的需求(多麼慷慨:))...Mnesia的交易

反正,我想知道是否有人有oppinions /上的Mnesia是如何實現交易「引擎蓋下」的詳細信息。

烏爾夫W.,我一直欣賞你的帖子在網絡上,所以也許你對此一些更深層次的信息?

回答

-1

所以我一直在想一切... 交易鎖可能是通過在代表行的每個元組中有一個「Lock」元素來破解的......該元素會包含持有鎖執行當前事務(並由事務管理器產生)的進程的Pid(或者出於效率原因,Pid將被存儲在其他位置,重點是每行有Pid)。如果另一個事務想要從鎖定的行寫入/讀取,事務管理器將不會執行它,並將其留在隊列中以供稍後嘗試(下次尾部遞歸時)。我將不得不更多地考慮檢查點的工作方式......但總的來說,我開始理解事情的結構,至少在概念上......它會變得醜陋;)),而且可能比Mnesia拉動的要慢幾個數量級斷,但至少我會學到很多...

有關分佈式事務的...林猜測該交易的樂趣是通過將其轉換成二進制,然後再對重建它在導線到另一個節點發送另一端...現在,這個問題。因爲fun是一個閉包,所以說,在fun中使用一個變量來綁定fun,並且有一個10個元素的列表,然後閉包被作爲一個要在另一個節點上執行的事務傳入(透明地由事務管理器) - 我假設閉包語義來表明,包含10個元素的列表將被髮送以及閉包「關閉」的詞彙環境的一部分......我在這裏丟失了什麼?只是想着一個人如何會實現的分佈式事務...

感謝

-1

隨着Mnesia的是開源的,你可以看看代碼本身。與CouchDB類似。

1

Mnesia的使用兩階段提交協議來管理分佈式事務。