【51CTO.com快译】总的来说,如果你需要一个数据库,可以使用某一款大牌的数据库:MySQL/MariaDB、PostgreSQL、SQLite、MongoDB,然后开始工作。但有时候一应俱全的方法并不适合所有场景。主流数据库有时无法支持你的使用场景,你需要寻找更专门化的数据库。本文介绍了9款非主流数据库,从内存中分析、键值存储到时间序列系统,不一而足。
DuckDB
“SQL OLAP系统”这个短语通常让人联想到处理数据的整体式系统或庞大的数据仓库集群。DuckDB之于分析数据库,尤如SQLlite之于MySQL和PostgreSQL。它不是为在与成熟的OLAP解决方案一样庞大的规模下运行而设计的,而是为本地数据集提供快速的内存中分析处理。
DuckDB的许多功能与大型OLAP产品中的功能相对应,尽管规模较小。数据存储为列而不是行,查询处理进行矢量处理,以便最大程度地利用CPU缓存。虽然在直接连接至Tableau之类的报告解决方案方面办法不多,但是手动并入这种解决方案应该不难。除了面向C++的绑定外,DuckDB还直接连接到两个最常用的分析编程环境:Python和R。
EdgeDB
“边缘”是图数据库中使用的术语,指高度连接的数据集中两个实体或节点(比如客户与订单或订单与产品)之间的连接或关系。EdgeDB使用PostgreSQL核心及其提供的所有属性(比如ACID事务和高可靠性)来构建开发者所谓的“对象关系数据库”,拥有强字段类型和类似SQL的查询语言。
因此,EdgeDB结合了类似NoSQL的易用性和即时性、图形数据库的关系建模功能以及SQL的保证和一致性。尽管EdgeDB不是正式的文档数据库,你也可以用它以这种方式存储数据。你还可以使用GraphQL查询语言轻松地从EdgeDB检索数据,就像使用Neo4j之类的原生图形数据库那样。
FoundationDB
苹果牵头的开源项目FoundationDB是一种“多模”数据库,内部将数据存储为键值对(实际上是NoSQL模型),但可以组织成关系表、图形、文档及其他许多数据结构。ACID事务保证了数据完整性,横向扩展和复制功能均可直接使用。不过FoundationDB的设计有一些严格的限制:键、值和事务都有严格的大小限制,事务还有严格的时间限制。
HarperDB
HarperDB的目标是提供单一数据库,以处理企业中的结构化数据和非结构化数据——介于FoundationDB之类的多模数据库和数据仓库或OLAP解决方案之间。所摄取的数据已经过重复数据删除,通过你选择的界面:SQL、NoSQL、Excel等可供查询使用。Tableau或Power BI等BI解决方案可以直接与HarperDB集成,无需提取或处理数据。企业版和社区版均有提供。
KeyDB
尽管Redis很流行很强大,但内存中键值存储因线程性能和易用性不尽如人意而受到批评。KeyDB与Redis在协议上兼容,因此可以临时替代Redis。但KeyDB在底层作了一些出色的改进,主要是面向网络I/O操作的多线程和查询解析。Redis的下一版本Redis 6计划也包括线程I/O,但KeyDB现在就可以使用。
M3DB
M3DB是优步内部工程团队开发的产品,这个分布式时间序列数据库用于优步的度量指标平台(实际上作为Prometheus的数据存储)。M3DB借鉴了Apache Cassandra和Facebook项目“Gorilla”的想法,支持任意的时间精度、无序插入以及可配置的复制和读取一致性。然而,开发者特别指出M3DB可能不适合所有时间序列数据库使用场合。比如说,M3DB无法在给定的时间窗口(默认值为2小时)外无序插入数据,它主要针对存储和检索64位浮点数而不是其他类型的数据进行了优化。
RediSQL
名称暗示着融合了Redis内存中键值存储和SQL查询功能,而这正是RediSQL的本质——具体来说,嵌入SQLite数据库的Redis模块。数据透明地存储在Redis中,因此Redis处理持久性和内存中处理。每个数据库都与Redis键相关联,因此你可以在一个Redis实例上有多个SQL数据库。针对这些数据库的查询是标准SQL,通过标准的Redis API来传递。你还可以在RediSQL中创建和预编译语句(实际上是存储过程),以加快查询执行。商业版和开源版均有提供。
RQLite
SQLite称得上是个奇迹:这是一款运行飞快、超级可靠的嵌入式开源数据库。只要你在单用户应用程序中需要数据库,SQLite都是很好的默认选择,但SQLite实例仅限于一个节点。
RQLite基于SQLite创建分布式数据库系统。设置多个节点很容易,数据使用Raft共识算法可在这些节点之间自动复制。RQLite还提供节点之间的加密和发现服务,该服务使自动添加节点变得很容易。但RQLite也有几个缺点:写速度不如SQLite,只有确定性的SQL函数(即保证在每个节点上生成同样结果的函数)可以安全使用。
UmbraDB
如今大多数高端数据库都有某种内存中功能,即使它涉及表固定之类的系统(比如SQL Server)。UmbraDB这种分析数据库可以作为PostgreSQL的临时替代来运行,旨在尽可能使用内存中处理。如果不行,它使用一种新颖的可变大小页面机制从存储系统对数据分页处理。长时间运行的查询针对使用LLVM执行进行了优化。
原文标题:9 offbeat databases worth a look,作者:Serdar Yegulalp