Rockset评论:用于操作数据的实时SQL

有或曾经有两种SQL数据库-事务(OLTP)和分析(OLAP)。 经过一些技术进步后,您可以结合使用OLTP和OLAP功能并具有混合(HTAP)。 如果您拥有一个OLAP数据库,可以大规模扩展对历史数据的复杂查询,那么您将拥有一个数据仓库。

编辑选择奖徽标梅花 信息世界

如果您进行交易,添加搜索,进行无模式提取以及对实时数据进行分析,那么您就可以进行运营分析。 目前只有一个用于运营分析的数据库,即Rockset。

[SQL数据库正在获得NoSQL功能。 发现旧数据库可以做的10个新技巧 | 不要错过MySQL和MariaDB中的7个强大功能 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

将Rockset与数据仓库相混淆很容易,但是它们的用途有些不同。 您希望数据仓库分析从记录数据库中提取的PB级历史数据,并在几分钟内运行查询。 您希望Rockset分析从GB到TB的最新,实时和流式数据,并让查询以毫秒为单位运行。

Rockset可用作操作仪表板,嵌入式分析,IoT应用程序,个性化和360度客户分析的数据层。

Rockset运营分析01 落石

Rockset是一个运营分析数据库。 它在事务数据库和数据仓库之间占据一席之地。

在毫秒内对数百TB的数据运行复杂的查询听起来很神奇,但事实并非如此。 正如我们将看到的,只要您的查询利用其索引,Rockset的体系结构就可以做到这一点。

关系文件模型

Rockset不使用具有固定模式的传统表格关系数据库模型。 相反,它将数据存储在关系文档模型中,该模型与存储在文档数据库(例如DynamoDB和MongoDB)以及其他NoSQL和文件数据存储中的数据更好地匹配。 本质上,Rockset通过索引和存储半结构化数据格式(例如JSON,Parquet,XML,CSV和TSV)来处理它们,从而可以支持使用SQL进行关系查询,如下图所示。 Rockset有必要对SQL方言实现扩展,以嵌套数组并处理JSON路径。

Rockset文档包含字段。 文档集称为集合,大致相当于关系表。 一组集合称为工作空间。

Rockset文档提取02 落石

JSON文档提取到Rockset集合。 文档中的所有信息都将被传输,包括嵌套数组。 没有执行任何架构,因此不会丢失任何数据。

强大的动态打字

您可能知道,数据类型可以是强也可以是弱,静态或动态可以是数据类型,具体取决于编程语言或数据库。 Rockset具有强大的动态键入功能 ,但有所不同:字段的类型在运行时由每一列而不是整个列确定。 这与大多数SQL数据库不同,在大多数SQL数据库中,同一列中的值始终具有相同的类型,并且类型是在创建表时确定的。

例如,邮政编码字段可能是集合中某些文档中的字符串(应如此),而另一些字段中则是整数,某些文档中缺少整数,有时甚至是浮点数-Rockset提取过程不会尝试使它们一致。 缺少的值视为空值。 鉴于Rockset可以连续导入流,这可能是正确的选择。

聚合索引

在事务型SQL数据库中,索引调优对于DBA和开发人员来说是一场持续的战斗。 如果存在索引争用,则整个数据库的爬网速度可能会变慢,而在依赖索引的查询运行时,如果对索引字段进行写操作,则很容易发生这种情况。

如果消除了事务并使大多数写入异步且无阻塞,则约束消失了,您可以索引任何所需的字段而不会降低性能。 索引仍然有存储开销,但是Rockset不会为此付费:您只需为活动数据存储付费。 Rockset确实允许使用提交标记来阻止查询,直到对索引进行写操作为止。 应该保留给特殊情况。

Rockset不会使您仔细调整索引,而是自动构建使用三种数据结构的聚合索引 :倒排列表索引,列式索引和文档索引。 所有列均已建立索引。 聚合索引在物理上表示为键值存储。 Rockset使用LSM树而非B树作为索引,以减少索引写入的开销。

Rockset通过使用键之间的增量编码和Zstandard压缩以及每个文件的字典编码,使聚合索引具有很高的空间利用率。 此外,它使用Bloom过滤器快速找到密钥-10位Bloom可使Rockset的I / O减少99%。

时间序列数据优化

常规数据库希望永久保留所有数据,如果连续流时间序列数据,这将是一个问题,因为数据库将无限制地增长。 定期运行SQL作业以修剪数据库通常会带来高昂的开销(我以前经常在周末的凌晨运行作业),并且会破坏数据库索引统计信息(这可能需要重建索引,从而可能导致停机)以及耗尽数据库缓存。

Rockset会进行滚动窗口压缩,这意味着您可以将任何集合标记为定时保留(生存时间),并可以选择指定事件时间字段。 如果没有指定的时间戳字段,Rockset将使用文档创建时间。 此外,Rockset会自动以降序维护事件时间的索引。 Rockset的基于时间的压缩比SQL删除操作的开销要低得多。

分布式查询处理和ALT

传统SQL数据库设计为在单个服务器上运行。 Rockset是专为云设计的,这体现在其离散的,容器化的微服务架构以及按需可扩展的资源使用中。 它使用聚合叶尾(ALT)架构,与Facebook和Google用于新闻源,搜索,广告,垃圾邮件检测和图形索引的使用相同。

Rockset将耐用性与性能区分开来。 它在RocksDB-Cloud的帮助下使用分层存储,这是针对SSD优化的高性能嵌入式存储引擎。 RocksDB-Cloud实例自动将热数据放入SSD中,将冷数据放入云存储中。 云存储包含整个数据库,本地存储仅包含工作集中的文件。

Rockset分布式查询处理03 落石

Rockset分布式查询处理。 SQL协调器执行查询计划和任务调度,叶节点执行工作,聚合器组合结果。

岩石高空建筑04 落石

Rockset ALT体系结构图。

数据安全

Rockset当前在AWS上运行,并使用AWS最佳安全性实践,尽管它将来可能会在其他公共云上运行。 从客户到Rockset以及从Rockset到客户的飞行数据通过SSL / TLS证书加密,该证书由AWS Certificate Manager创建和管理。 AWS应用程序负载平衡器会终止SSL连接。 所有静态数据均已加密,并且加密密钥由AWS KMS管理。 Rockset支持基于角色的访问控制,以实现细粒度的权限。

数据源和SQL客户端

Rockset可以从Amazon S3,Kinesis,DynamoDB和Redshift,Google Cloud Storage,Apache Kafka及其自己的Write API提取数据。 它在SQL级别与Jupyter笔记本,Redash,Apache Superset,JetBrains DataGrip,Tableau,RStudio和Grafana集成。 它具有REST API,Python,Java,Node.js,Go和R的API集成。

您可以在摄取期间映射字段,例如以掩盖个人身份信息和受保护的健康信息,标记文本字段以进行搜索以及预先计算昂贵SQL表达式的结果,例如应用正则表达式解析电子邮件地址或URL。

Rockset系统图05 lg 落石

带有集成的Rockset系统图。

测试摇滚

我在Rockset的两个实例上进行了测试:一个为期30天的免费试用的私有实例,以及一个为演示目的由Rockset维护的共享实例。 我使用私有实例浏览了Rockset快速入门教程,并使用了演示实例在一个大型收藏集(一个月的Twitter帖子)上测试了Rockset。

企业可能会使用私有实例导入其自己的数据并设置仪表板的概念证明,而Rockset愿意帮助您进行设置。

我尝试过的最有趣的查询显示在下面的屏幕截图中。 请注意,提及股票代号的推文(2.2万条)比集合中的总推文(6000万条)少得多。 Rockset中查询的速度取决于查询的选择性,而不是查询的集合的总大小。

> select count(*) from "twitter-firehose" as t;
59851099

> select count(*) from “twitter-firehose” as t where t.entities.symbols[1] is not null;
21877
Rockset Twitter股票查询06 IDG

Rockset查询一个月的Twitter Firehose推文; 查询和数据集由Rockset提供。 请注意,在查询的第3行中使用了unnest在第5行中使用了event_time range子句tickers集合提供了鸣叫中提到的股票tickers的描述。

正如我之前所说,Rockset可用作操作仪表板,嵌入式分析,IoT应用程序,个性化和360度客户分析的数据层。 目前,它确实没有直接竞争。 当我问该公司关于将销售损失给Snowflake时 ,他们说他们的经验是客户除了数据仓库外还需要Rockset,并且这些产品倾向于共存而不是竞争。

我不得不佩服在所有字段上创建聚合索引的策略。 面对我在SQL数据库方面的所有经验,它确实奏效,但这是很有意义的,并且显然可以加快查询速度。 Rockset无需为索引存储收费。

我只能使用以下查询使一次查询超时:

SELECT  * from commons."twitter-firehose"
ORDER by "twitter-firehose".favorite_count desc
LIMIT 10

实际上,没有任何方法可以使Rockset的聚合索引或我能想到的任何索引方案都能快速运行查询:它需要完整扫描和全局排序。 假设该集合有6000万条记录,那么要花掉大量RAM才能在合理的时间内完成查询。 取出ORDER BY子句可以使查询运行大约300毫秒,这是完全合理的。

考虑到30天的免费试用期以及数据导入的简便性,如果您知道Rocketset知道如何提取的任何数据存储区中都有大量数据,则值得试用Rockset。

-

费用:免费计划,限制2 GB的活动数据(不包括索引)。 基本服务,每月每活动GB 6 USD,多租户,周一至周五的9到5票务支持。 专业版,每个活动GB每月9美元,专用可扩展计算,RBAC,周一至周五9到5的支持以及4个小时的SEV1响应。 企业,要求定价,两因素身份验证,AWS专用链接,24/7一小时SEV1响应。

平台:托管在AWS云上

翻译自: https://www.infoworld.com/article/3446026/rockset-review-real-time-sql-for-operational-data.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值