速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

分析型嵌入式键值数据库 hamsterdb

  • 2014-08-15
  • 本文字数:1236 字

    阅读完需:约 4 分钟

近日, Christoph Rupp 在 highscalability.com 上发表了一篇文章,介绍由他创建的分析型嵌入式键值数据库 hamsterdb 。它用 C/C++ 编写,是一个速度非常快的轻量级 NoSQL 数据库引擎,支持事务、数据库游标、内存数据库和远程网络访问,类似谷歌的 leveldb 和甲骨文的 BerkeleyDB。

据作者介绍,hamsterdb 并不是细分市场上的一个新晋竞争者。事实上,它已经出现超过 9 年了。在这段时间里,它发展非常快,其重点已经从单纯的键值存储转向了分析型数据库,提供类似列式存储数据库的功能。

hamsterdb 是单线程、非分布式的,用户通常直接将它链接到他们自己的应用程序中。它提供了独特的事务实现以及其它独特的功能,非常适合于分析型工作负载。它可以在本地 C/C++ 中使用,也有面向 Erlang、Python、Java、 .NET,甚至是 Ada 的绑定。它被用在嵌入式设备和本地应用程序中,也可以为云实例提供缓存和索引服务,已经有数以百万计的部署。

hamsterdb 有一个独特的功能,它能识别模式信息。大多数键值存储并不关心键的类型,而它支持两种类型的键:二进制键和数值键。hamsterdb 数据库是 BTree 索引,既可以存储在文件中,也可以存储在内存中。而 BTree 的实现是它成为分析型数据库的关键。其实现方式非常紧凑,减少了 I/O,而且可以更好的利用 CPU 缓存。

另外,hamsterdb 有与 SQL 命令 COUNT、COUNT DISTINCT、SUM 和 AVERAGE 等价的 API,并支持可变长度的键,允许键重复,以及支持 read-committed 隔离级别的 ACID 事务。

按照 Rupp 的说法,hamsterdb 最强力的特性是可测试性。数据库的根本——甚至比性能都重要——就是不应该丢失数据。在 9 年的开发过程中,他不断地重写部分代码或者尝试新的想法,但高测试覆盖率给了他自信,认为这些更改不会破坏任何东西。他有大约 1800 个单元测试和 35000 个验收测试,以及一组模拟崩溃的测试,用于测试 hamsterdb 的可恢复性。这些测试都是高度自动化的。

Rupp 还介绍了 hamsterdb 的商业版本 hamsterdb pro。该版本提供了针对键、记录、日志的重量级压缩,AES 加密,及针对叶节点查找的 SIMD 优化。还有更多的压缩算法正在进行或规划中。

在文章的最后,Rupp 用谷歌的基准测试将 hamster 2.1.8 与 leveldb 1.15 作了性能对比。他得出了下面的结论:

对于随机读,hamsterdb 性能要好于 leveldb。对于随机写的情况,只要数据量不是太大,hamsterdb 就更快。而从 1 千万键及以上开始,hamsterdb 就会遭受 BTree 数据库的传统问题:大量的非序列性 I/O 和高磁盘寻道延迟。

作者认为,这可以很好地说明 hamsterdb 的分析能力。尤其是,sum 和 count 运算都可以很好地扩展。序列性插入和扫描也是其亮点,不管数据量多大,它都可以非常快。

有兴趣的读者可以下载查看全部的测试结果,以及从GitHub 上下载 hamsterdb 的源代码


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-15 03:192258
用户头像

发布了 256 篇内容, 共 86.3 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

深入剖析 MySQL 自增锁

leonsh

MySQL 数据库

网络攻防学习笔记 Day31

穿过生命散发芬芳

5月日更 网络攻防

IoT系列,树莓派监控开关状态

IT蜗壳-Tango

IT蜗壳 IT蜗壳教学 5月日更

第五课作业

杰语

持续测试 | DevOps 时代的高效测试之钥

CODING DevOps

DevOps 持续测试 迭代式测试

思想与落地

型火🔥

架构 分布式 微服务 哲学

量化马丁策略系统搭建,网格策略交易系统

腾讯云大神亲码“redis深度笔记”,字字珠玑,全是精华

Java 程序员 架构 面试

人生算法:愿景,设计人生导航系统

石云升

读书笔记 愿景 5月日更

Logstash-数据流引擎

进击的梦清

大数据 Linux 运维 后端 Logstash

通证经济— 激励机制、社会生产、后资本主义

CECBC

阿里云携手 VMware 共建云原生 IoT 生态,聚开源社区合力打造领域标准

阿里巴巴云原生

阿里云 容器 开发者 云原生 k8s

唵嘛呢叭咪吽|靠谱点评

无量靠谱

暑期 2021 | Serverless Devs 最全项目申请攻略来啦!

阿里巴巴云原生

开源 Serverless 开发者 云原生 活动

“四大模型”革新NLP技术应用,揭秘百度文心ERNIE最新开源预训练模型

百度大脑

开源 nlp

不愧是Alibaba技术官,Kafka的精髓全写这本“限量笔记”里,服了

Java 大数据 架构 面试

文本分析基本流程

Qien Z.

文本分析 5月日更

不含敌意的坚决|靠谱点评

无量靠谱

简单又灵活的权限设计?

蛋先生DX

数据库设计 权限系统 权限 权限架构 rbac

Serverless Devs 的官网是如何通过 Serverless Devs 部署的

阿里巴巴云原生

Serverless 开发者 运维 云原生 存储

从外包到拿下阿里offer,这2年5个月13天到底发生了什么?

Java 程序员 架构 面试

99% 的同学写不出好代码,都是因为这个问题!

程序员鱼皮

Java c++ Python 自学编程 经验分享

大数据采集和常见问题

数据社

大数据 数据采集 5月日更

iOS基础原理题目汇总

程序员 面试 iOS 知识体系

刚刚接触视频剪辑,怎么快速剪视频?

奈奈的杂社

公安重点人员情报研判分析系统,可视化大屏系统

dubbo-go v3 版本 go module 踩坑记

阿里巴巴云原生

容器 开发者 云原生 中间件 dubbogo

5分钟速读之Rust权威指南(十三)

wzx

rust

One-on-One Meeting

escray

学习 5月日更 朱赟的技术管理课

促成“零碳”社会的全面实现,华为云让技术更有温度

xiaotan

华为云

「信创」风口,国产数据库的新机遇

BinTools图尔兹

数据库 数据安全 dba 数据库管理 tdsql

分析型嵌入式键值数据库hamsterdb_数据库_马德奎_InfoQ精选文章