2012-12-01 88 views
0

我有一個SQL Server數據庫,其中包含一個應用程序(來自超過100個設備)的使用情況數據,超過1年的數據收集(30GB數據庫)。統計應用程序:MongoDB與SQL Server

將數據插入數據庫不是問題,速度足夠快(目前),並且是客戶端完成的唯一操作。

有一個主表和一些子表,但假設我可以把所有東西放在一個表中。

我需要做統計分析,所以主要是count(*)按日期和一列或多列過濾。性能越來越慢(盡我所能使用索引)。

將移動到MongoDB提高速度?我還沒有開始研究它,但我的業務99%是(是的,我知道是不是SQL):

select count(*) from table 
where date between date1 and date2 and field1 = 10 and field2 = "test" 
+2

你考慮的SQLServer分析服務?這聽起來像你需要一個相當簡單的立方體... – a1ex07

+0

我懷疑MongoDB會幫助你。數據分析不如SQL數據庫更好。事實上,在某些使用情況下,它可能會更糟糕。你需要的是像Hadoop這樣的數據分析框架。 – Philipp

+1

您是否調查過調整SQL Server數據庫而不是切換產品?你還必須調整MongoDB! – usr

回答

0

如果不使用查詢中的任何連接,則SQL的性能服務器不會受到影響。如果你使用mongodb來達到同樣的目的,那麼查詢時間也會與sql相關,或者更糟。

3

您的需求可以很容易地由sql server處理。 通過使用適當的索引和其他優化技術。這些查詢可以通過SQL SERVER高效執行。對於您的用例,(日期,字段1,字段2)上的單個索引

CREATE CLUSTERED INDEX IDX_TABLE_ID ON TABLE(id) 
GO 
CREATE INDEX IDX_TABLE_2 ON TABLE(date,field1,field2) 
GO 

對於快速查詢執行可能就足夠了。

只是一個註釋: 對於檔案分析SQL服務器提供數據倉庫工具(SQL SERVER ANALYSIS SERVICE)。 SQL SEREVER CUBE可以非常簡單地聚合和分析巨大的歸檔數據。

其他SQL Server信息:http://ms-sql-queries.blogspot.in/

+0

謝謝但索引不是一個解決方案,這只是一個例子,我不得不做太多的索引,這會減慢數據插入並佔用太多空間。 我會尋找SSAS。 –