我正在構建一個存儲每個用戶大量數據的應用程序(可能以千兆字節爲單位)。索引多個密鑰用於不同密鑰組合中的隨機查詢
像一個請求日誌,所以讓我們說,你有對每條記錄以下字段:
customer_id
date
hostname
environment
pid
ip
user_agent
account_id
user_id
module
action
id
response code
response time (range)
可能更多一些。
好的是,使用將主要是隻寫,但是當有讀取 我希望能夠近乎實時地快速回答。
另一個關於使用模式的預測是,大多數時候人們會查看最近的數據,並且很少查詢過去,聚集等,所以我的猜測是工作集將會小得多 整個數據庫,即大多數用戶的近期數據和目前正在進行分析的一些用戶的歷史記錄範圍。 對於後面的情況,我想它的第一個查詢是慢的,直到它將範圍存入內存。
但問題是,林不太清楚如何有效地索引數據。
索引的開頭很清楚,它的customer_id和日期。但其餘的可以是任何組合使用的 ,我無法預測最常見的,至少沒有任何確定性。
我們目前正在用mongo進行原型設計。有沒有辦法在mongo(存儲/ CPU /成本)有效地做到這一點?
唯一想到的就是嘗試預測一些頻繁的查詢並對它們進行索引,並大量分片數據 並確保每個客戶的數據均勻分佈在分片上以允許快速表掃描查詢的其餘 的'客戶,日期'索引。
P.S.我也接受有關數據庫備選方案的建議。
幾GB **每個用戶**。我們不知道他會有多少用戶。也許成千上萬。這已經很多了。 – 2012-02-09 04:37:24
沒錯,但你仍然可以在字段上有一個索引,因爲只有大約一打。有了這麼多的數據,無論如何你很快就會在某個時刻分解。 (添加到我的答案) – Derick 2012-02-09 09:22:31