由於厭煩了手寫sql,在幾個小專案中嘗試著使用了db4o.dal層寫起來是爽了,但是,還是有很多其它東西會絆你的腳。
沒有主鍵的概念(因為物件的記憶體位址,或者引用就能標誌乙個物件了).因而外界想指向乙個具體的物件就比較困難(比如本頁的url裡的1079505).
啟用/儲存層次的問題.獲取乙個物件,它的字段引用了其它物件,那麼到底啟用多少層次合適?儲存時也是如此.層次深了傷效能,層次淺了用著不方便(動不動就是null reference).
物件引用問題.rdbms裡我們能很輕易地明白乙個引用指向的是物件的淺拷貝(因為只引用了乙個主鍵).而一旦與記憶體中的物件勾搭起來,那深拷貝和淺拷貝就不容易區分了,很難說清我刪除了乙個物件會不會讓某個其它物件的某個字段變成null(同樣,修改物件也不容易看清其影響範圍).
物件生存期問題.這是個看起來很奇怪甚至愚蠢的問題:沒有被其它物件引用的物件是否應該存在於資料庫中?換句話說,odbms要不要擁有gc功能?如果有gc功能的話,能夠避免誤刪除被其它物件引用的物件,而且能夠清除不再需要的資料.但是相應地,它讓開發必須考慮更多的問題,保證每個物件的靜態可達性.
資料庫版本進化難以跟蹤.由於資料庫的結構與物件的結構基本一致,對物件模型的任何修改都會導致資料庫結構的變化,而這個過程中原有資料如何處理必須加以特殊處理(db4o裡提供了字段改名之類的api,但是至少我很討厭每修改一次物件就要寫幾行這樣的**).換句話說,我覺得資料庫和物件之間耦合嚴重了,不利於修改.
沒有類似sql的成熟且流行的查詢語言(或者你必須學習一種新語言)進行資料管理.很多時候,直接運算元據庫也是必須的,這時你會非常想念sql.
總體而言,對於熟悉關聯式資料庫及基於關聯式資料庫進行軟體開發的人而言,物件資料庫並不僅僅意味著換個儲存方式.要真正高效地使用它,可能需要很長時間的摸索和適應.對我而言,db4o是看起來很美,用起來很玄 :)
雲計算,看上去很美
個人的理解是雲計算執行的應該是計算密集型的任務 不過我有乙個疑問,就是雲計算是執行在分布式的計算機系統上,那麼組成這個分布式系統的計算機由誰掌控?這些計算機之間的網路連線又由誰提供?資料安全性如何得到保證?對於事關國家機要的計算任務應該在 控制的超級計算機上完成的,而不可能在乙個由公共網連線起來的私...
設計,看上去很美 wayfarer
設計沒有標準,模式充滿變化,我們對設計與模式的 就是希望能從沒有標準的設計中體驗設計的樂趣,從充滿變化的模式中尋求問題的解決之道。我這裡所謂 設計沒有標準 其實並非沒有標準,現實是設計的標準實在太多了。我們都希望找到最好的設計方案,然而什麼是最好,每個人都有自己的 哈姆雷特 滿足客戶需求的設計就是最...
html5看上去很美!
why?寫下這篇博文的目的是給那些在跨平台方面 本文主要圍繞移動平台展開討論 對html5保有過多期望的公司或者創業團隊的一些個人建議,當然是個人建議,就不可能都正確,希望大家能夠剔除糟粕,看到裡面有對自己有用的地方,我的目地也就達到了。overview 談到html5,我就不得不說到faceboo...