php riak,PHP-Riak:快速获取多个项目
假設我在PHP中有此數組.
$ids = [
246,
8362,
5241,
2586,
6548,
9372,
28504,
14,
5729
];
這些數組元素對應于存儲桶“ articles”中的項目,有時此數組的深度可能約為1000個元素.
目前,我正在遍歷所有這些數據,并將數據一一提取.
$articles = [];
foreach($ids as $id)
{
$articles[] = Riak::get("articles.$id");
}
這比id列表變得很長時我要花費的時間更多.
有沒有更快的方法可以從Riak桶中拉出物品清單?我環顧了一下,map-reduce很有用,但顯然會導致比我使用順序GET請求節省的開銷更多的開銷.
解決方法:
遺憾的是,要從Riak有效地獲取大量記錄非常困難,因為這些記錄分散在整個群集中,必須單獨進行檢索.一些客戶端庫最近獲得了對客戶端多獲取的支持,該支持允許使用多個連接并行獲取對象,但是我認為這還沒有到達PHP客戶端.
使用mapreduce進行此操作將減少對數據庫的調用次數,但不會導致仲裁讀取,因為它僅查詢覆蓋的一組分區.但是,Mapreduce是查詢數據的一種相當廣泛的方法,并且無法像直接鍵訪問那樣進行擴展或執行.
如果這是您需要執行的常見操作,則可能表明您的數據模型過于規范化,并且可能需要取消規范化以使其更好地支持您的應用程序及其訪問模式.
確切地說,如何最好地做到這一點需要有關您的數據以及訪問和查詢模式的知識.一種方法可能是使用已知的和可預測的密鑰基于例如固定范圍的商品ID.這將使文章的檢索效率更高,因為需要讀取的對象數量大大減少,但是在更新和插入時可能會增加您的復雜性.
另一種選擇是通過復制數據去規范化.如果您例如僅需要文章中的一些信息,您就可以將這些數據存儲在單獨的對象中,這些對象專門用于有效地服務于這些查詢.
在Riak中,通常比試圖從數據庫中準確獲取所需的記錄更好地檢索比您需要更多的對象,并在應用程序級別進行篩選.
標簽:riak,php
來源: https://codeday.me/bug/20191122/2056951.html
總結
以上是生活随笔為你收集整理的php riak,PHP-Riak:快速获取多个项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA微信公众号开发之自动回复消息与图
- 下一篇: SAP笔记-物料移动类型和后勤自动科目设