我正在嘗試設計創建一個將從傳感器(與水污染有關的活動)收集數據的基於雲的系統(IaaS),並且在某些事件將決定處理數據特定的傳感器。數據特徵爲: 1.對於每個傳感器數據每隔幾天發送一次(最多每月6次) 2.每個傳感器讀數包含大約5000個事件,封裝在50-100條發送到服務器(這樣的「會話」大約需要20分鐘,每5秒發送一次消息) 3.我構建系統以處理每秒30,000條消息的速率。 4.數據的處理不應該是實時的,一旦「會話」完成處理,我就有大約10分鐘的時間。 5. 90%的會話不感興趣,一旦完成就可以扔掉。另外10%的事件或事件封裝在根據他們的消息中,我需要決定是否需要處理整個會話數據並向傳感器發送警報,表明存在污染。我不確定哪個NoSQL適合我的場景
我創建了一個每秒生成5000條消息的工具,我試圖找出哪個數據庫對我的情況最爲理想。 這是我想嘗試數據庫:
卡桑德拉 - 我會保存在鑰匙的存儲器中收集每個會話的。這些密鑰用於存儲在cassandra中的消息。一旦我檢測到包含錯誤讀數的消息,我將需要將所有其他消息放在「會話」中並處理它們(這意味着需要cassandra 50-100個請求)。我關心的是寫性能(因爲我有很多讀寫操作)+我沒有一個好的策略來刪除90%不需要的會話。
Couchbase - 我將根據sensorID爲每個「會話」保存文檔,並將每條消息附加到文檔。一旦我檢測到包含錯誤讀數的消息,我只需要發送一個文檔請求。我的關注點在於閱讀表現。
Redis - 像cassandra一樣使用它。我認爲表現將是最好的,但我將需要處理的數據自己的分片和複製,以不達到內存限制
我很想聽到哪個選項是最合適的
謝謝
Couchbase具有很好的讀取性能(我認爲它優於Cassandra),請參閱http://blog.couchbase.com/dissecting-nosql-benchmark – user1697575