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