2017年1月20日,騰訊發佈消息稱將推出Q-Glass,除了通常VR眼鏡的標配功能外,Q-Glass還能實現眨眼搶紅包。聽起來是否是很酷炫?上市時間可要在10年後。不過,2016年末支付寶首推AR實景紅包,QQ也緊隨其後,一場AR實景紅包大戰悄然打響。
做爲最近兩年比較熱門的技術,VR技術悄然成爲移動技術以後有一大競相追逐的技術,目前市面上比較成熟和出名的VR開發商,諸如:Google VR,Oculus,HTC Vivi。而已Google VR最爲成功並商業化。關於這個能夠參考我以前的介紹Google VR實踐git
不過今天我要說的是VR在咱們生活中的應用,而且是你們已經用過的,相信你們在2017年年末的時候,必定玩過支付寶/qq(AR虛擬現實)藏紅包、找紅包吧,想象一下,你能夠把你的紅包藏在世界各地的任意角落,讓全世界的人經過掃描來找紅包,是否是以爲很酷,那麼要實現這種功能,怎麼作呢?github
相信你們都玩過AR紅包,這裏就不介紹如何玩了。算法
其實AR紅包綜合了GIS(LBS)、圖像識別與秒殺技術等技術:數據庫
當就這兩個功能來講,主要涉及到如下技術:數組
不過,這幾個功能在PostgreSQL數據庫中均可以高效的實現,是否是很棒?那麼接下來咱們來看看PostgreSQL如何處理這兩項需求的吧,順便看看性能如何?服務器
在AR紅包的業務中,地理位置信息的處理主要包括如下兩個方面:併發
PostGIS在軍工、科研、民用場景都很是的流行,包括咱們常見的精細地表raster探測,天文研究、地圖、路徑規劃等應用中均可以看到PostGIS的影子,本文只用到了PostGIS的一小部分功能:GIS數據類型、GIST索引、近鄰查詢。post
來看一張PostGIS在實際應用的圖解:
性能
詳細的用法和測試方法參考測試
更多文章和詳細的PostGIS功能能夠參考
《如何創建GIS測試環境 - 將openstreetmap的樣本數據導入PostgreSQL PostGIS庫》
在PostgreSQL的的生態圈中,有不少這樣的插件來知足圖片搜索的需求,同時也支持圖像類似度值的計算
1,使用Haar wavelet算法的imgsmlr插件
https://github.com/postgrespro/imgsmlr
2,使用圖片RGB點陣組成的數組來計算類似度的插件-smlar
《從類似度算法談起 - Effective similarity search in PostgreSQL》
參考
《從類似度算法談起 - Effective similarity search in PostgreSQL》
《PostgreSQL 在視頻、圖片去重,圖像搜索業務中的應用》
https://github.com/postgrespro/imgsmlr
3,使用圖片RGB點陣組成的數組轉成tsvector來計算類似度的插件-RUM
RUM計算類似度時帶上了位置信息,精確度更高。好比(0,1,2,3,4,5與0,0,2,3,4,5與5,1,4,2,3,0與2,3,4,5,0,1)。其中0,1,2,3,4,5是原始點陣的值,那麼0,0,2,3,4,5多是有必定偏差的值(由於依舊是線性相關的),而2,3,4,5,0,1出現了角度誤差(能夠經過技術手段好比rum,把數據拉成環狀修正),多是圖片拍攝角度形成的。可是5,1,4,2,3,0可能就不是那個圖像了。
參考:
《從難纏的模糊查詢聊開 - PostgreSQL獨門絕招之一 GIN , GiST , SP-GiST , RUM 索引原理與技術背景》
咱們在AR藏紅包的業務中,只須要用到計算近似值的功能便可,以上兩個插件均可以很好的知足。好比使用RGB點陣時,在應用程序端生成RGB點陣,發送給數據庫,與存儲在數據庫中的點陣進行類似度計算便可。
藏紅包時的圖像數字化流程以下:
找紅包,匹配圖像時的流程以下:
注意,若是從服務端提取點陣,在客戶端比對,這種作法雖然節省了服務端開銷,可是這種作法可能存在漏洞,客戶端能夠被HACK,直接匹配上。
目前業務層面只支持近距離找紅包,因此一般來講,搶一個紅包的人羣不會太多。而且咱們確定會對操做數量限制的作淘汰操做。那麼若是有上億人同時秒殺一個紅包怎麼作呢?PostgreSQL一樣有獨門祕技來支持秒殺。
參考:
《聊一聊雙十一背後的技術 - 不同的秒殺技術, 裸秒》
《PostgreSQL 使用advisory lock或skip locked消除行鎖衝突, 提升幾十倍併發更新效率》
隨着AR的技術愈來愈流行,地理位置、圖像、視頻、聲音等特殊數據類型的處理會愈來愈常見,數據庫應該與時俱進,不能再僅僅存儲和處理文本、數字這麼簡單的功能,其綜合技術的發展將突飛猛進。
而另外一方面,PostgreSQL的高擴展能力,爲AR提供了堅實的技術基礎,不只能存,更能高效處理。
轉載自: http://blog.csdn.net/xiangzhihong8/article/details/61437562?ref=myrecommend