博客

在龙芯上探索数据库虚拟化

数据库虚拟化

云计算是未来,而虚拟化技术则是云计算的基石。在过去10年中,我们见证了虚拟化技术的蓬勃发展。目前,虚拟化技术从最早的硬件虚拟化进入了到新的阶段——软件虚拟化,其中比较流行的容器技术实际就是操作系统的虚拟化。

最近,我们荣幸得到龙芯的邀请,在龙芯SB平台上做了兼容性测试。在此,首先感谢龙芯的朋友们的邀请。 阅读更多

AntsDB 18.05.27发布,带有新开源许可

AntsDB 18.05.27是一个维护版本,在性能和稳定性方面有许多改进。 这个版本不仅运行得更快更好,还带来了重要的许可证更改。 AntsDB的源代码现在以LGPL开源许可证发布。 它比先前采用的AGPL限制性更小。 LGPL允许AntsDB的用户使用预构建的二进制文件创建私有衍生作品。 衍生作品不需要公开。 希望新的开源许可吸引更多项目在AntsDB和Hadoop之上构建。

马上就去下载吧。

AntsDB 18.05.02发布了新的网络传输层

AntsDB 18.05.02 附带了一个全新的 MySQL 协议实现。 在我们的基准测试中,它比先前版本的 AntsDB 快 200%。 此版本其他主要改进如下:

  • 使用直接内存而不是对Java对象进行缓冲。 它不仅更快,而且还节省了垃圾收集所占用的大量系统资源;
  • 在异步网络 I/O 处理中删除了不必要的线程切换,从而提高了响应时间并节省了系统资源;
  • 针对大型结果集的优化。 如果客户端无法更快地消耗结果,则新机制将暂停网络通信。

现在即可到下载页面下载体验新版本。

AntsDB 通过 Power8 兼容性测试,性能超越 MySQL 106倍

广泛的兼容性,是AntsDB的设计目标之一,因此在设置做出就做了跨平台的兼容性设计。有幸得到IBM Open Power 邀请参与Power CPU的兼容工作。最终测试结果现实,AntsDB 在 Power8 平台上领先同类数据库超过 1-2 个数量级。数据载入能力是对照数据库的 10600%, 只读是对照数据库的191%,90%读是对照数据库的 819%, 50%读是对照数据库的 6276%。

阅读更多

AntsDB 18.04.04 版本新增复制功能

数据库复制被许多机构广泛使用。 它有助于将实时数据馈送到另一个地方,以实现安全性,集成或分析目的。 我们很高兴地宣布,从 18.04.04 发布开始,AntsDB 支持实时数据复制。

通过复制支持,AntsDB 中发生的更改可以实时复制到另一个从属 AntsDB/MySQL 数据库。 复制支持 DDL 和 DML,因此目标数据库永远不会与活动数据库不同步。 配置说明详见说明书。

请到下载页面下载新版本

YCSB基准测试,AntsDB超过主流关系数据库超过100%

介绍

YCSB代表雅虎云服务基准。 它是今天事实上的数据库基准。 它支持各种具有可插拔体系结构的数据库类型,可以轻松扩展以测量新的数据库技术。

基准方法

该基准使用了3000万条记录数据量。 每条记录的大小为1 KiB。 我们使用了YCSB提供的4个基准工作负载。

加载基准 – 将3000万记录加载到空数据库中,以衡量数据导入性能。
只读基准 – 以衡量数据库的分析性能
读取繁重(90%读取10%写入) – 用于衡量用户交互式应用程序的性能。
写入较重(50%读取50%写入) – 用于测量批处理应用程序的性能。

基准设置

该基准测试是在Amazon AWS EC2 i3.4xlarge实例上执行的。 以下是系统配置的摘要。

CPU Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz, 8 cores, 16 threads
Memory 122 GiB
Storage 1.7T * 2 NVMe SSD
Operating System CentOS 7.4.1708
Comparing Database MySQL 5.5.56, PostgreSQL 9.2.23, Database O 12.2.0.1.0, AntsDB 18.05.02
Java 1.8.0_161-b14

数据库配置

AntsDB humpback.space.file.size=256
humpback.tablet.file.size=1073741824
MySQL innodb_file_per_table=true
innodb_file_format=Barracuda
innodb_buffer_pool_size=50G
innodb_flush_log_at_trx_commit=0
max_connections=200
PostgreSQL shared_buffers = 30GB
bgwriter_delay = 10ms
synchronous_commit = off
effective_cache_size = 60GB
Database O MEMORY_TARGET=50g

加载测试

使用16个线程将数据导入数据库。 计量单位是记录/秒。

AntsDB 蚂蚁数据库 YCSB 数据加载测试

AntsDB 蚂蚁数据库 YCSB 数据加载测试

只读测试

使用不同数量的线程进行测试。所有经过测试的数据库都获得了24个线程的最高吞吐量,如下图所示。计量单位是交易/秒。

AntsDB 蚂蚁数据库 YCSB 数据只读测试

AntsDB 蚂蚁数据库 YCSB 数据只读测试

重读取查询测试

使用不同数量的线程进行测试。所有经过测试的数据库都获得了24个线程的最高吞吐量,如下图所示。计量单位是交易/秒。

AntsDB 蚂蚁数据库 YCSB 重读取查询测试

AntsDB 蚂蚁数据库 YCSB 重读取查询测试

写重测试

使用不同数量的线程进行测试。所有经过测试的数据库都获得了24个线程的最高吞吐量,如下图所示。计量单位是交易/秒。

AntsDB 蚂蚁数据库 YCSB 重写入测试

AntsDB 蚂蚁数据库 YCSB 重写入测试

结论

AntsDB在所有测试类别中明显优于其他流行数据库。在内部,AntsDB 采用了与传统数据库引擎截然不同的设计。使用 CPU 级原子操作实现锁定。使用 Log Structured Merge Tree 组织文件。使用无锁跳过列表实现索引。所有磁盘 I/O 都使用内存映射文件完成。这些技术的结合,体现了系统的显著优势。
由于资源限制,数据库服务器和测试软件都在相同的硬件上运行,因此基准程序消耗了部分系统资源。基准测试不太完美,因为实际上应用程序和数据库很可能是在不同的机器上运行。如果使用专用数据库服务器,会有更高的性能表现。

AntsDB 17.12.04发布

AntsDB 17.12.04发布,新版本改进了兼容性,具有更好的稳定性,增加了对大型机构至关重要的新功能。

多实例支持。现在,可以在单个HBase集群中安装多个AntsDB实例。它是通过将系统元数据命名空间ANTSDB映射到’humpback.hbase-conf’指定的命名空间来实现的。有关详细信息,请参阅:
https://github.com/waterguo/antsdb/wiki/Configuration

本机身份验证支持除了 Kerberos 基本身份验证之外,AntsDB现在还允许用户管理 AntsDB 中的用户名和密码。有关详细信息,请参阅:
https://github.com/waterguo/antsdb/wiki/Security

备份还原。 AntsDB 现在支持 MySQL 的官方备份实用程序 – mysqldump – 来创建数据库转储文件。有关详细信息,请参阅:
https://github.com/waterguo/antsdb/wiki/Backup-and-Restore

Semi HA。在意外事故,包括软件故障和硬件故障时,可设置新的 AntsDB 安装,以便在最糟糕的情况发生时,在几分钟内恢复中断的工作负载。有关详细信息,请参阅:
https://github.com/waterguo/antsdb/wiki/High-Availability

新版本可从下载页面下载

AntsDB 架构

传统数据库软件(RDBMS),尽管在功能和性能方面存在细微差别,单基本遵循非常相似的架构。如果你打开来看,你会看到b-tree,redo/undo日志,线程池,事务管理器,元数据管理器,锁定管理器等。这就像汽车一样,机器组件总是相同的,不同的无非是形状、大小和性能特征,以及不同品牌型号汽车之间的区别。

新派数据库 NoSQL / NewSQL,与旧式 RDBMS 非常不同。但他们也有着非常相似的架构。几乎所有这些数据库都是使用预写日志,日志结构合并树,集群管理等等。

而 AntsDB 则采用了与大多数主流关系数据库不同的方法,我们旨在创建一个既是OLTP又是OLAP的一体化数据库。 AntsDB 是 OLTP,因为它提供的功能对于构建前端应用程序(如ACID,亚毫秒延迟,丰富的事务管理,SQL合规性和强大的锁定管理)至关重要。它也是一个 OLAP,因为 AntsDB 底层的存储功能是一个数据仓库。 AntsDB 也像中间件一样。它是一个具有大型本地缓存的无状态事务处理器。

因此,它导致了下图所示的架构。

 

AntsDB 蚂蚁数据库 架构图

AntsDB 架构图

AntsDB 有3层构建。最外层是 MySQL 兼容层。有两个组件:网络协议和SQL解析器。

AntsDB 的网络协议实际上市再实现了完整的 MySQL 5.5协议。它是在流行的 Netty 项目的帮助下使用异步 I/O 编写的。异步 I/O 使 AntsDB 具有使用非常小的线程池支持大量活跃用户的优势。然而,传统 DBMS 使用同步 I/O。它必须为每个用户创建独占线程。要知道,线程是一种昂贵的系统资源,扩展性很差。

SQL 是一种高级语言。我们需要将复杂的逻辑分解为更小更简单的部分,例如函数,运算符,连接等。解析器就负责这个任务。在解析结束时,它会生成许多在虚拟数据库机器中运行的“指令”。解析器的结果缓存在内存中的小池中。如果前端应用程序发送重复的 SQL 语句,则可以简单地跳过昂贵的解析阶段。今天的大多数应用程序使用预先准备的声明。

我们希望 AntsDB 不仅可以与 MySQL 兼容,将来还可以与其他类型的数据库兼容。因此,它伴随着数据库虚拟化的想法。 VDM – 虚拟数据库机,在AntsDB 中实现了这个想法。 VDM 是一个运行时环境,具有数百个小型逻辑单元,如函数,连接,运算符等。除了小型构建块之外,VDM 中还有3个重要组件为它们提供服务。

事务管理器确保多个数据操控充当单个工作单元。它在内部使用64位数字来跟踪系统中的每个事务。交易完成后。它将另一个64位数作为更新版本分配给更新。该版本随后用于事务隔离和 MVCC(多版本并发控制)。

Metadata Manager 管理用户对象的生命周期,即表,列,约束等。它将人类可识别的名称映射到内存位置,文件位置和在硬件级别高效工作的唯一标识符。
SQL 查询是一种高级抽象语言。通常,数据库软件需要将查询分解为许多连接,表查找和表扫描。不幸的是,有很多不同的方法可以做到这一点。有些方法可能比其他方法更有效率。这时候就查询计划程序就要起作用了。它会智能地评估所有可能性并选择耗费最低的执行方式。

在最底层的是 AntsDB KV – 键值存储。我们有顶层负​​责 MySQL 兼容性,中间层管理 SQL 语言的复杂性。 AntsDB KV的工作是处理性能和并发性。
在 AntsDB KV 的核心,是 LSMT 商店。 LSMT – 日志结构化合并树 – 是一种组织数据库文件的方法。众所周知,在 I/O 效率方面,它比大多数主流数据库中使用的基于页面的存储要好得多。 LSMT 中的数据更紧凑。它利用高吞吐量顺序 I/O,而页面存储取决于慢速随机 I/O。在 LSMT 内部,AntsDB 使用 Skip List 数据结构而不是大多数主流数据库中使用的B树。Skip List利用CPU级别的原子操作来管理数据争用,并在高电流情况下执行得非常好,而B树使用昂贵的互斥锁。

作为一个数据库,AntsDB 必须做好最坏的准备:停电、硬件故障。我们使用提前写入日志,也就是重做日志。当今数据库程序中广泛使用这种技术进行故障恢复。一旦事务提交,更新就被写入 WAL。系统崩溃后,AntsDB 使用 WAL 中的数据在下次启动时重建 LSMT。

KV 中的最后一个组件是复制器。它的职责是在提交更新后以亚秒级方式将数据发送到 HBase。

以上总结了AntsDB架构的一个高度概括。稍后我们将更详细地介绍一些组件。

AntsDB Beta2 发布

此版本做出了显着的性能和稳定性改进。最重要的是,缓存实现已经彻底改进。它包括一种新的弹性文件格式,可以抵御软件和硬件故障。只要机器可以重启,数据就是安全可靠的。缓存算法直接使用 lock-free skip list。我们的基准测试表明,新的缓存实现能够在商用硬件上为每秒50万次写入操作或超过100万次读取操作提供动力。

从 AntsDB 到 HBase 的数据复制算法得到了改进。它将在一次 API 调用中打包来自同一个表的多行更新或删除,从而节省了大量的网络往返。新的复制器每秒能够处理数万次操作。但真正的表现在很大程度上取决于 HBase。

在此版本中,AntsDB 开始支持全文搜索。它对 MediaWiki 等内容管理应用程序至关重要,该软件支持维基百科。AntsDB 全文搜索底层使用流行的 Lucene 库。

欢迎您试用我们的 Beta2 版本,请在此处下载


1 2