我们中的许多人充斥着数据,以至于传统数据库和传统BI系统无法跟上,至少不能实时进行。 有一些变通办法,例如对数据进行采样或处理日久的报告,但是每个变通办法都是一个折衷方案。
OmniSci (以前称为MapD) 可以通过使用GPU来加速其数据库,渲染引擎和可视化系统来实时处理大量数据。 OmniSci已在产生大量数据的许多行业中找到了应用,包括电信,汽车远程信息处理,油气勘探,国防和情报。
凭借映射和BI功能以及不到几秒的响应时间(即使具有数千万行的响应时间),您希望OmniSci与Tableau和Esri直接竞争。 但是实际上,OmniSci在如何使用它来同时加速Tableau和Esri方面具有很大意义。
据该公司称,OmniSci将与机器学习功能集成在一起,并在明年变得对数据科学家更加有趣。 这具有技术意义,因为该产品已经依赖CUDA和Nvidia GPU,并且由于Nvidia已经开发了必要的GPU加速的机器学习和深度学习库。 但是,从用户的角度来看,我尚不清楚该如何工作。
OmniSci作为GPU加速的数据库分析平台的替代产品包括Brytlyt , SQream DB , BlazingSQL和Kinetica 。
OmniSci功能和体系结构
如下图所示,OmniSci具有多个组件。 三个主要组件是核心数据库引擎,呈现引擎和数据可视化界面。
OmniSci Core是开源GPU加速的SQL关系数据库服务器引擎,具有强大的GIS(地理空间)支持和某些数据科学功能。 支持的SQL方言称为OmniSQL,并且在大多数情况下看起来类似于MySQL和PostgreSQL。 例如,OmniSQL使用LIMIT子句(MySQL和PostgreSQL)截断SELECT查询结果集,而不是使用TOP(SQL Server)或ROWNUM(Oracle)子句。 地理空间支持使用开放地理空间联盟(OGC)类型。
OmniSci Core的主要区别在于,即使在具有数十亿行的表上,它也可以以毫秒为单位返回结果。 当然,要获得这样的性能,您需要大量的RAM,尤其是大量的GPU VRAM。 具体来说,2 GB的GPU RAM可处理3000万行,并随GPU RAM线性扩展。
OmniSci Render是GPU加速的图形服务器,该服务器获取针对OmniSci Core的SQL查询的输出,并使用它们生成诸如点图,正弦图和散点图之类的图表。 Render使用Vega Visualization Grammar规范定义输出,并将其创建为PNG图像。 然后,将PNG图像通过电线发送到Immerse,这比在客户端上渲染数百万个点要快得多,效率也更高。
OmniSci Immerse是基于Web的数据可视化界面。 其用于定义图表的用户界面与Qlik和Tableau等BI工具非常相似。 浸入式图表组合成仪表板,用户可以对仪表板上的图表进行交叉过滤,例如通过选择饼图上的项目或放大点图。 在讨论某些OmniSci演示时,我将提供一些示例。
此图显示了OmniSci平台的高级体系结构。 核心数据库SQL引擎是开源的。
OmniSci SKU
OmniSci提供企业版,云版和开源版。 可以配置企业版以实现高可用性。 开源版本只是OmniSci Core数据库。
您可以在本地或云中运行免费的开源OmniSci Core SQL数据库。 如果要获得良好的性能,请与Nvidia GPU一起运行。 对于要分析的每1500万行数据,请使用1 GB的GPU内存。
如果您想获得OmniSci的全部好处,包括GPU增强的渲染引擎和Immerse Web UI,请考虑使用Enterprise版本或OmniSci Cloud。 如果要在本地运行,则需要企业版。 在三大公共云之一中运行的OmniSci Enterprise或OmniSci Cloud,都将为您提供基于浏览器和基于云的系统。
OmniSci提供企业版,云版和开源版。 可以配置企业版以实现高可用性。 开源版本只是OmniSci Core数据库。
OmniSci Cloud和演示
我注册了OmniSci Cloud的14天免费试用版,该计划可以访问2 GB的GPU内存。 云试用版已预先安装了三个仪表板:NYC Tree Census 2015,NYC Taxi Rides和Flights Demo。 我探索了这些以及几个共享的独立演示 ,它们具有更多的行并在更大的实例上运行。
所有这些演示都在扁平化的数据集上运行。 虽然OmniSci支持JOIN和VIEW,但使用它们确实会增加一些开销。
纽约市树木普查示范仪表板反映了2015年纽约市的树木总数,共有683,788行。 在浏览这个相对较小的数据集时,我经历了一致的亚秒级响应。
NYC树木普查仪表板附带一张显示树木位置和类型的地图,树木健康状况的甜甜圈图,树木种类计数的条形图以及树木直径的直方图。
假设一个工作人员想进一步评估纽约长老会医院附近状况不佳的树木。 在上面的屏幕截图中,我放大了该区域,对其进行交叉过滤以选择健康状况不佳的树木,然后套用感兴趣的区域。
想象一下,一家电视制片人正在曼哈顿曼哈顿上东区寻找一条两旁布满Callery梨树的街道,以拍摄室外场景。 在上面的屏幕截图中,我对Callery梨树进行了交叉过滤,并在东侧进行了放大。 东79 号街ST大道和第二大道之间1看起来很有希望。
NYC Taxi Rides仪表板显示了2015年12月的1300万次骑行。在进行探索时,我收到了来自该仪表板的亚秒级响应。
放大长老会医院的区域,发现沿着出租车直达主要入口以及沿约克大道的出租车很重。 大多数出租车都起源于曼哈顿,距离不到五英里。
共享的出租车小费演示程序除了将行驶表与建筑物数据集连接之外,还使用了7年的NYC Taxi Rides数据,并将离下车和领取地点最近的建筑物存储在表中。 该数据集具有12 亿条记录,这对于OmniSci而言也非常重要。 有时候,我放大和平移地图时,背景花了几秒钟来填充,而应用影响数亿行的交叉过滤也会导致刷新几秒钟。
出租车演示中的一些快速观察:自从在出租车中引入信用卡读取器以来,平均小费百分比一直在上升; 尖峰时段在高峰时段和深夜时段最高; 在大都会艺术博物馆取车的小费平均约为6%。
预安装的仪表板中有一小部分(从2008年起有700万条记录)“美国航班”数据集,但完整的数据集(1.76亿条飞行记录)可在共享演示中获得 。 当我浏览完整的数据集时,图表大部分在两到三秒钟内更新。
美国航班演示包含1987年至2017年之间的1.76亿个航班记录。请注意,2001年9月11日之后的航班数量出现了大幅下降。 此博客文章中对Flights数据集有更多见解 。
设计OmniSci图表
如您在下面的屏幕快照中所见,OmniSci支持16种图表类型 。 每种图表都有自己的设计器; 下面的一个用于点图。 此示例来自“纽约市树木普查”仪表板。
任何熟悉在Tableau或其他BI系统中设计图表的人都会发现,在OmniSci中设计图表很容易学习。
OmniSci接口和API
OmniSci数据库支持ODBC和JDBC(包括RJDBC)连接器。 它还支持通过Immerse命令行进行SQL查询。 当您以图形方式使用Immerse时,它会在后台生成SQL查询。 通过在浏览器中打开JavaScript控制台并键入SQLLogging(true)
加<enter>,可以查看发生的SQL查询。
有两个API可从Python连接到OmniSci。 Pymapd实现了与Python DB API 2.0兼容的接口,并以基于Apache Arrow的GDF(GPU数据框)格式返回结果,以实现高效的数据交换。 JayDeBeApi提供了从Python到JDBC连接器的接口; 查询结果可用于实例化Pandas DataFrame,从中可以分析和绘制数据。
如果您有数十亿行的表格需要进行交互浏览而不进行下采样,那么OmniSci的GPU加速分析平台正是您所需要的。 能够深入研究该大小的数据集,并在响应时间少于三秒的情况下绘制结果,这对于数据分析师来说是一种解放。
同样,如果数据不断流到数据库中,OmniSci可以让您刷新数据集,从而在尝试实时分析流与分析日间快照之间达成良好的折衷。 您可以手动(使用Immerse刷新图标, 而不是浏览器刷新键)从Immerse仪表板刷新,也可以定期自动刷新。
虽然OmniSci并不是唯一一个 GPU加速的数据库和分析平台,但它无疑是一个很好的平台。 它是否适合您的数字财产取决于您还使用什么,拥有多少数据以及是否需要实时浏览数据。