2013-09-30 29 views
1

這適用於重新考慮數據庫。將嵌入數組或散列字段作爲數組的模式更好嗎?保持我的意圖簡單..我試圖跟蹤每日統計。但是我正在決定什麼架構結構更好。讓我解釋...將模式存儲爲數組或散列字段的優點是什麼?

純陣列模式:

schema = [ 
    { 
    title: 'foobar', 
    dates: [ 
     { 
     date: 20130926, 
     views_count: 10, 
     click_count: 10 
     }, 
     { 
     date: 20130927, 
     views_count: 20, 
     click_count: 20 
     }, 
     { 
     date: 20130928, 
     views_count: 30, 
     click_count: 30 
     } 
    ] 
    } 
] 

哈希場陣列模式:

schema = [ 
    { 
    title: 'foobar', 
    dates: [ 
     '20130926' => { 
     views_count: 10, 
     click_count: 10 
     }, 
     '20130927' => { 
     views_count: 20, 
     click_count: 20 
     }, 
     '20130928' => { 
     views_count: 30, 
     click_count: 30 
     } 
    ] 
    } 
] 

一,我能想到的是..它更容易防止與日期的口是心非後者。還有其他優點嗎?或者,開發人員喜歡有沒有共同慣例?

+0

如果您選擇了一個數據庫並詢問此問題,則可能需要回答。但是,通過標記很多,很難說優點是什麼,因爲每個平臺都不同,並且可能以各種方式處理您的架構。例如,MongoDB的答案與CouchDB的答案完全不同。我標記爲「太寬泛」。 – WiredPrairie

+0

@WiredPrairie我已經刪除了mongo數據庫。這個問題僅適用於重新考慮數據庫。請重新打開該問題。謝謝 – levelone

+0

感謝您進行更改。 – WiredPrairie

回答

2

恕我直言,你的應用程序勝過任何DBMS。不要專注於數據庫存儲選擇,而應關注您的應用程序需求,編程和性能。堅持你的程序數據,然後迭代地對基本情況進行基準測試和優化,只在需要時才更改模式。您的應用程序將回答您的存儲問題。例如,在一般:

(1)如果您需要主要下令訪問日期,然後使用數組 (2)如果你需要多日快速隨機訪問,然後使用哈希

兩種編程語言和DBMS語義有關係。即使數據庫已經訂購了哈希,你的語言也可能會失去這種效果,例如,Ruby 1.9中的Hashes和更新的版本是有序的,但之前沒有訂購。

當然你的模式選擇非常重要。但恕我直言,文檔(非列狀對象數據NoSQL)DBMS的主要優勢是能夠在編程語言中匹配自然數據結構。所以我輕輕地鼓勵你回到你的應用程序/程序作爲問題和答案的焦點。

相關問題