2011-04-05 69 views
0

我們的數據庫包含4,000,000條記錄(sql server),它的物理大小爲550 MB。 數據庫中的實體以圖形樣式相互關聯。當我加載一個實體從數據庫5級深度有一個問題(所有記錄被加載)。Db4O激活深度,Faq,Web應用程序的最佳實踐

  • 有沒有像實體框架的任何機構(包括( 「MyProperty.ItsProperty」))

什麼是使用db4o數據庫使用最好的類型?

  • Guid,Gen​​eric Collections有什麼問題嗎?

  • WebApplication與db4o有什麼最佳實踐嗎?會話容器+ EmbeddedDb4ODb或Client/ServerDb4O?

THX的幫助..

THX的很好的解釋。但我想給我確切的問題,作爲一個樣本: 我有三個實體:(NN關係,B是一個交集實體概念:。圖表)


class A 
{ 
public B[] BList; 
public int Number; 
public R R; 
} 
class B 
{ 
public A A; 
public C C; 
public D D; 
public int Number; 
} 
class C 
{ 
    public B[] BList; 
    public E E; 
    public F F; 
    public int Number; 
}

我要查詢dbContext.A.Include(」 BList.C.BList.A 「)包括(」 BList.CEG「),其中(....)

 
I want to get   :A.BList.C.BList.A.R 
But I dont want to get :A.R 
I want to get   :A.BList.C.E.G 
But I dont want to get :A.BList.C.F 
I want to get   :A.BList.C.E.G 
But I dont want get  :A.BList.D 

注:此要求可查詢更改爲另一個查詢

額外問題有沒有可能加載 A.BList [@Number < 120] .C.BList.A [@編號> 100]超語法:)

+0

新增了對答案的更新。 – Gamlor 2011-04-07 16:10:44

回答

4

激活:正如您所說,db4o使用它的activation-mechanism來控制加載哪些對象。爲了防止加載多個對象,有不同的策略。

然而所有這些東西是複雜的對象圖相當痛苦。擺脫這種痛苦的唯一策略是transparent activation。創建一個像TransparentlyActivated的屬性。使用此屬性標記您的存儲類。然後使用db4otool來增強您的課程。將db4otool命令添加到Visual Studio中的生成後事件中:Like 'PathTo\Db4oTool.exe -ta -debug -by-attribute:YourNamespace.TransparentlyActivated $(TargetPath)

Guid,通用集合: 否(版本7.12或8.0)。但是,如果你存儲自己的結構:那些db4o處理得很差

WebApplication:我推薦一個嵌入式容器,然後是session-container for each request

更新擴展問題部分

您的案件。對於這樣複雜的激活模式,我會使用透明激活。 我假設你在真實場景中使用屬性而不是公共字段,否則透明持久性不起作用。

透明激活基本上是在一個方法/屬性被稱爲第一個時刻加載一個對象。所以當你訪問屬性A.R時,它自己裝載它,但不是被引用的對象。我只是經過幾個你的訪問模式來說明我的意思:

獲得當您訪問A.BList「A.BList.C.BList.A.R」

  • A被加載。 BList數組填充了未激活對象
  • 您繼續導航至BList.C。此時,BList對象被加載
  • 然後您訪問C.BList。 db4o加載C對象
  • 依此類推等等。

因此,當你「A.BList.C.BList.AR」,然後「AR」沒有加載

一個卸載的目的是通過「empty'殼對象表示,其所有值設置爲空或默認值。數組總是被完全加載,但是首先填充了未激活的對象。

請注意,沒有真正的查詢語法來做某種精細的加載請求。你加載你的開始對象,然後在你需要的時候拉入東西。

我還需要提到的是,這種訪問將在db4o網絡上表現糟糕。

又一個提示。如果你想在圖形結構上做精細的工作,你還應該看看圖形數據庫,比如Neo4JSones Graph DB

+0

更詳細的描述是什麼?透明激活?或其他的東西? – Gamlor 2011-04-06 22:38:40

+0

我更新了問題.. – 2011-04-06 23:04:45

+0

我已添加關於激活問題的詳細說明(附帶樣本)。其他解釋很好,thx。另外你對激活的解釋是很好的。但我認爲我的情況比。謝謝 – 2011-04-06 23:07:31

相關問題