2012-01-24 18 views
2

我試圖建立一個與保持每15秒變化的動態10K空間項涉及實時Web服務改變值的方法。 想象移動車輛我只需要處理最新的值。所以我不想保留數據庫中的舊值。舉行經常在內存中

我想用獅身人面像或Lucene的作爲在值的全文搜索服務器,但我不知道該怎麼15秒「持有」這些不斷變化的價值。

問題: 我應該值存儲在MongoDB中,MySQL和XML,平面文件,或者是有直接並將其作爲內存中的對象,仍然能夠操縱它們並更新其值的方法嗎?

謝謝。

+1

「直接並將其作爲內存中的對象」,如果你希望你的實體有「對象屬性」,不看Neo4j的。 – aitchnyu

+0

您是否必須進行空間查詢? – Jokin

+0

是的,這正是我現在正在尋找的,試圖將Sphinx或Solr與Redis結合在一起。有任何想法嗎? –

回答

5

我建議你看看Redis的:

的Redis是一個開源的,先進的key-value存儲。它往往是 被稱作數據結構,因爲服務器密鑰可以包含字符串, 散列,列表,集合和排序集合。

您可以在 運行的原子操作這些類型,如附加到一個字符串;遞增 散列中的值;推到一個清單;計算集交集,聯合和 差異;或者在排序的 集合中獲得排名最高的成員。

爲了實現其出色的性能,Redis與 一起使用的內存數據集。根據你的使用情況,您可以堅持它 無論是傾銷數據集到磁盤每過一段時間,或者通過 附加每個命令日誌。

http://redis.io/topics/introduction

0

您可以使用Solr的近實時功能與空間組合查詢,如果你並不需要堅持,你可以在內存中的索引使用的信息。根據預期的每秒查詢次數和最大響應時間,您應該相應地確定硬件的尺寸。

無論如何,如果您需要隨空間數據一起進行全文查詢,solr可能會有所幫助,如果不是這樣,mongodb支持開箱即用的空間查詢,並且可以是更直接的系統。

+0

那麼,我需要Redis中的Expire功能來爲內存中的鍵設置超時。目前MongoDB沒有這個功能,它仍在開發中,但是在MongoDB中通過使用capped集合來解決這個問題,所以目前我正在爲使用MongoDB的服務構建一個原型。 –