AI前线导读:一年一度由世界知名科技媒体InfoWorld评选的Bossie Awards于9月26日公布,本次Bossie Awards评选出了最佳数据库与数据分析平台奖、最佳软件开发工具奖、最佳机器学习项目奖等多个奖项。在最佳开源数据库与数据分析平台奖中,Spark和Beam再次入选,连续两年入选的Kafka这次意外滑铁卢,取而代之的是新兴项目Pulsar;开源数据库入选的还有PingCAP的TiDB。
Bossie Awards是知名英文科技媒体InfoWorld针对开源软件颁发的年度奖项,根据这些软件对开源界的贡献,以及在业界的影响力评判获奖对象,由InfoWorld编辑独立评选,目前已经持续超过十年,是IT届最具影响力和含金量奖项之一。一起来看看接下来你需要了解和学习的新晋数据库和数据分析工具有哪些。
现如今,没有什么东西能够比数据更大的了!我们有比以前多得多的数据,我们有更多方式来存储和分析数据:SQL数据库、NoSQL数据库、分布式OLTP数据库、分布式OLAP平台、分布式混合OLTP/OLAP平台。2018年数据库和数据分析平台方面的Bossie大奖获得者也包括了流式处理方面的创新者。
尽管新的产品层出不穷,Apache Spark在数据分析领域仍然占据着举足轻重的地位。如果你需要从事分布式计算、数据科学或者机器学习相关的工作,就使用Apache Spark吧。Apache Spark 2.3在二月份发布,它依然着重于开发、集成并加强它的Structured Streaming API。另外,新版本中添加了Kubernetes调度程序,因此在容器平台上直接运行Spark变得非常简单。总体来说,现在的Spark版本经过调整和改进,似乎焕然一新。
Apache Pulsar最初由雅虎开发,后来进入Apache孵化器,最近正式毕业,成为Apache顶级项目。Pulsar旨在取代Apache Kafka多年的主宰地位。Pulsar在很多情况下提供了比Kafka更快的吞吐量和更低的延迟,并为开发人员提供了一组兼容的API,让他们可以很轻松地从Kafka切换到Pulsar。
Pulsar的最大优点在于它提供了比Apache Kafka更简单明了、更健壮的一系列操作功能,特别在解决可观察性、地域复制和多租户方面的问题。在运行大型Kafka集群方面感觉有困难的企业可以考虑转向使用Pulsar。
多年来,批处理和流式处理之间的差异正在慢慢缩小。批次数据变得越来越小,变成了微批次数据,随着批次的大小接近于一,也就变成了流式数据。有很多不同的处理架构也正在尝试将这种转变映射成为一种编程范式。
Apache Beam就是谷歌提出的解决方案。Beam结合了一个编程模型和多个语言特定的SDK,可用于定义数据处理管道。在定义好管道之后,这些管道就可以在不同的处理框架上运行,比如Hadoop、Spark和Flink。当为开发数据密集型应用程序而选择数据处理管道时(现如今还有什么应用程序不是数据密集的呢?),Beam应该在你的考虑范围之内。
尽管大家都认为Apache Solr是基于Lucene索引技术而构建的搜索引擎,但它实际上是面向文本的文档数据库,而且是一个非常优秀的文档数据库。不管你是要“大海捞针”,还是要运行空间信息查询,Solr都可以帮上忙。
Solr 7系列目前已经发布了,新版本在运行更多分析查询的情况下仍然能保证闪电般的速度。你可以加入很多文档,不到一秒钟就能返回结果。它还改进了对日志和事件数据的支持。灾备(CDCR)现在也是双向的。Solr全新的自动扩展功能简化了集群负载增长时的扩展操作。
JupyterLab是新一代的Jupyter,一个基于Web的notebook服务器,颇受全世界数据科学家的喜爱。经过三年开发,JupyterLab完全改变了人们对notebook的理解,支持对单元格进行拖放重新排布、标签式的notebook、实时预览Markdown编辑,以及改良的扩展系统,与GitHub等服务的集成变得非常简单。预计在2018年底,JupyterLab将发布1.0稳定版。
KNIME分析平台是用来创建数据科学应用程序和服务的开源软件。它提供了可拖放的图形界面,用来创建可视化工作流,还支持R和Python脚本、机器学习,支持和Apache Spark连接器。KNIME目前有大概2000个模块可用作工作流的节点。
KNIME还提供了商业版,商业版旨在提升生产效率和支持协作。不过,开源版KNIME分析平台并不存在人为限制,可以处理包含数亿行数据的项目。
CockroachDB是基于事务性和一致性键值存储而构建的分布式SQL数据库。它的设计目标是能够在磁盘、机器、机架甚至是数据中心的故障中存活下来,最小化延迟中断,不需要人工干预。CockroachDB v1.13曾经获得过五星的高分,虽然仍然缺少很多功能,不过现在情况有所改变。
四月份发布的CockroachDB v2.0版本有了明显的性能改进,通过添加对JSON(和其他类型)的支持扩展了与PostgreSQL的兼容性,还提供了生产环境的跨区域集群管理功能。CockroachDB v2.1的路线图中包含了基于成本的查询优化器(用于查询性能的改进)、相关子查询(ORM)、更好地支持模式变更以及企业版产品的加密。
Vitess是通过分片实现MySQL水平扩展的数据库集群系统,主要使用Go语言开发。Vitess将MySQL的很多重要功能与NoSQL数据库的扩展性结合在一起。它的内置分片功能可以让用户在不需要给应用程序添加分片逻辑的情况下对数据库进行扩展。Vitess从2011年开始就是YouTube数据库基础设施的核心组件,它已经发展到成千上万个MySQL节点。
Vitess并没有使用标准的MySQL连接,因为这会消耗很多RAM,也会限制每个节点的连接数量。它使用了更有效的基于gRPC的协议。另外,Vitess会自动重写会损害数据库性能的查询,通过缓存机制来调解查询,防止相同的查询同时进入数据库。
TiDB是一款兼容MySQL、支持混合事务和分析处理(HTAP)的分布式数据库。它基于事务性键值存储而构建,提供全面的水平扩展性(通过增加节点)以及持续可用性。大多数早期的TiDB用户都在中国,因为TiDB的开发者在北京。TiDB的源代码主要用Go语言编写。
TiDB的底层是RocksDB,RocksDB是Facebook的日志结构键值数据库引擎,用C++编写,因此能获得最好的性能。RocksDB上面是Raft共识层、事务层,然后是支持MySQL协议的SQL层。
YugaByte DB结合了分布式ACID事务、多区域部署、对Cassandra和Redis API的支持,对PostgreSQL的支持即将推出。相对Cassandra而言,YugaByte是强一致性,而Cassandra时最终一致性。YugaByte的基准测试也比开源的Cassandra要好,但比商用的Cassandra要差一些,而DataStax Enterprise 6具备可调一致性。YugaByte相当于快速、具有更强一致性的分布式Redis和Cassandra。它可以对单个数据库进行标准化处理,比如将Cassandra数据库和Redis缓存结合在一起。
Neo4j图形数据库在处理相关性网络的任务时,执行速度比SQL和NoSQL数据库更快,但图模型和Cypher查询语言需要进行专门的学习。最近,俄罗斯Twitter流氓分析、ICIJ的Panama Papers分析以及Paradise Papers的分析指出,Neo4j是非常有价值的。
经过18年的开发,Neo4j已经成为了一个成熟的图数据库平台,可以在Windows、MacOS、Linux、Docker容器、VM和集群中运行。即使是Neo4j的开源版本也可以处理很大的图,而在企业版中对图的大小没有限制。(开源版本的Neo4j只能在一台服务器上运行。)
InfluxDB是没有外部依赖的开源时间序列数据库,旨在处理高负载的写入和查询,在记录指标、事件以及进行分析时非常有用。它可以运行在MacOS、Docker、Ubuntu/Debian、Red Hat/CentOS和Windows平台上。它提供了一个内置的HTTP API和SQL风格的查询语言,并旨在提供实时的查询响应(100毫秒之内)。
查看英文原文:The best open source software for data storage and analytics
领取专属 10元无门槛券
私享最新 技术干货