我已經有了MongoDB,CouchDB,Redis,東京內閣和其他NoSQL數據庫的經驗。最近我偶然發現了Riak,這對我來說很有意思。爲了開始使用它,我決定在NoSQL世界中編寫一個小的推特克隆,即「hello world」。爲了獲得完整的克隆,有必要按時間順序排列推文。在閱讀Riak文檔後,我發現Map-Reduce是這份工作的正確工具。在我的開發環境中,它工作得很好,但生產性能如何,有數百個並行查詢?有沒有其他的,也許更快的方法來排序數據,或者有可能以有序的形式存儲數據(如Cassandra)?如何在Riak中對數據進行排序/訂購?
更新: 我想我已經找到了另一個解決這個問題 - 一個簡單的鏈表。因此,一種可能的實現方式可能是,每個用戶都可以獲得他/她自己的「時間軸桶」,其中存儲了數據本身的鏈接(微博分別存儲在「微博」桶中)。如你所知,這個時間軸桶必須包含一個名爲「first」的鍵,它鏈接到最新的時間軸對象,並且是列表的起點。要在時間軸中插入新的推文,只需在時間軸欄中插入一個新項目,將此新項目的「下一個」鏈接設置爲「第一個」項目,然後將新項目設置爲「第一個」。
簡而言之:插入一個項目,你會在一個鏈表做...
與嘰嘰喳喳,個人時間軸只抱顯示給用戶20個鳴叫。要收到最後20條推文,只需要2條查詢。爲了加快速度,第一個查詢使用Riak的鏈接行走功能獲取最新的20個對象,標記爲「next」。最後,第二個和最後一個查詢使用第一個查詢計算的鍵來接收推文本身(使用map/reduce)。
要刪除用戶的鳴叫你剛剛取消關注,我會用了Riak 1.0的二級索引的能力來接收相關的時間表對象/鳴叫。
由於Riak 1.4排序和分頁可用於輔助索引:http://basho.com/basho-announces-availability-of-riak-1-4/ – nacmartin