我還是NoSQL數據庫的新手,多年來一直在使用RDBMS(Oracle,MySQL)。現在,我們正在考慮將我們的一個數據庫遷移到內存中的NoSQL DB,並且我們堅持採用最佳設計方法。NoSQL(Redis)設計建議
我們正在考慮Redis,但是否會與另一個Key-value商店(如RocksBD或LMDB)一起使用,或者最好單獨使用它們將基於我從您那裏得到的建議。 (您可以通過完全不同的方法來解決我們的問題。
遷移到內存中的NoSQL表包含人口統計信息(例如名字,姓氏,地址,出生日期,出生國家等等約40個不同的人口統計字段)和生物特徵數據,如照片,簽名和全部10個指紋。
查詢將人口統計如檢索其中姓名=「瓊斯」和姓氏=「安德烈」和出生日期> 1984年9月13日
我們可以很容易地保存在redis的鍵值存儲一切(包括照片運行,簽名,指紋和所有人口統計數據),但我們擔心它需要大量的RAM,特別是因爲DB最終會增長到大約2億條記錄。因此,我們考慮存儲一些在redis中頻繁搜索的人口統計數據(例如,名字,姓氏,生日等),然後將其餘數據存儲在鍵值存儲中,如LMDB或RocksDB(因爲這當然需要遠內存少於redis)。在這個實現中,當有人想要檢索firstname = jones和lastname = mark時,它會搜索redis,獲取檢索到的記錄的id,然後從鍵值存儲區(lmdb或rocksDB)中取回這些記錄。 我們主要關心的是閱讀性能,對於編寫很少擔心。 我們希望閱讀速度非常快。
這是一個很好的設計方法,或有人建議更好的設計方法,將導致更好的性能。請記住,目標是最大限度地減少內存需求並獲得非常好的讀取性能。
順便說一句,這是一種很好的方法來存儲這種性質的生物識別技術嗎?
- 怎麼都是這樣challanges解決
還要注意的是,雖然我們對查詢的人口,做檢索的一個子集,我們主要檢索整個數據集的。 (即每個匹配的個體我們檢索其他人口統計和生物特徵)
請閱讀[在什麼情況下我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](/ meta.stackoverflow.com/q/326569) - 總結是,這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將這添加到您的問題。 – halfer
不知道條件如name ='jhon'&& last ='doe'將在key-value存儲中實現,redis是否支持這一點? – ren
是的。 redis支持這種搜索 – SWILL