簡體   English   中英

用於實時數據的系統架構

[英]system architecture for real-time data

我工作的公司正在運行一個C#項目,該項目從大約100個網站抓取數據,將其保存到數據庫並對該數據運行一些程序和計算。

這100個網站中的每一個都有大約10,000個事件,每個事件都保存到數據庫中。

之后,生成的數據正在生成並聚合到一個大的xml文件中,因此保存的這10,000個事件中的每一個現在都顯示為DB中的XML文件。

這個設計看起來像這樣:

1) crawling 100 websites to collects the data and save it the DB.
2) collect the data that was saved to the DB and generate XML files for each event
3) XML files are saved to the DB

這篇文章的主要問題是選擇保存的XML文件。

每個XML大約是1MB,考慮到大約有10,000個事件,我不確定SQL Server 2008 R2是否是正確的選擇。

我嘗試使用Redis,並且保存工作得非常好(並且速度很快!),但是獲取這些XML的查詢工作非常慢(甚至在本地,因此網絡流量不會成為問題)。

我想知道你的想法是什么? 請考慮它是一個實時系統,因此緩存不是一個選項。

任何想法都會受到歡迎。

謝謝。

您可以嘗試基於雲的系統(Azure blob或Amazon S3),而不是使用數據庫,它似乎是一個完美的解決方案。 看到這篇文章: azure blob存儲效率 ,相同的情況,除了你有XML文件而不是圖像。 您可以使用DB來存儲元數據,即XML的源和事件類型,雲中的路徑,而不是數據本身。

您也可以壓縮文件。 我不知道確切的方法,但它肯定可以在客戶端處理。 默認情況下,靜態數據通常以壓縮格式發送到客戶端。

您的問題缺少一些細節,例如您的數據需要在數據庫中保留多長時間等等......

如果您已經擁有原始數據,我將避免在數據庫中存儲XML。 為什么沒有一個應用程序將查詢數據庫並按需生成XML報告? 這將為您節省大量空間。

每天10GB的數據是SQL Server 2008 R2可以通過正確的硬件和良好的結構優化來處理的。 您需要調查標准版是否足夠,或者您必須使用企業或數據中心許可。

無論如何答案是肯定的 - SQL Server能夠處理這些數據,但我也會檢查其他解決方案,看看是否可以以任何方式降低成本。

你的基本拱門似乎沒有錯,它是你認識到redis的方式,基本上如果你設計你的key => value,那么redis的檢索就不會那么慢。

例如,我必須在redis中存儲1 mil對象,並且說我存儲了我的對象的id,這個鍵只是一個guid,保存會很快,但是當涉及到檢索時,如果我知道鑰匙它會很快,我知道“鑰匙”,但是如果我不知道它或者我試圖檢索我的數據不是基於鑰匙而是基於我的一些價值對象,然后當然它會很慢。 關鍵是 - 當涉及到檢索時,你應該只針對“密鑰”而不是其他任何東西,所以設計你的密鑰就像預先計算的值一樣; 因此,當我需要從redis / memcahce獲取一些數據時,我可以創建KEY ,只需執行一次命中即可獲取數據。

如果您能提供更多詳細信息,我們將能夠為您提供更好的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM