AI实践哪家强?来 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:192530
用户头像

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

关注

评论

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

广告倒排服务极致优化

百度Geek说

架构 数据结构 后端 12 月 PK 榜

两步开启研发团队专属ChatOps|极狐GitLab ChatOps 的设计与实践

极狐GitLab

团队管理 DevOps ChatOps 极狐GitLab ChatGPT

ClickHouse 挺快,esProc SPL 更快

王磊

超大规模大数据集群管理平台的架构优化及实践

移动云大数据

基于云原生的集群自愈系统 Flink Cluster Inspector

阿里云大数据AI技术

机器学习 flink 运维 云原生 12 月 PK 榜

“零容忍”监管,金融机构如何应对数据泄露风险?

极盾科技

数据安全

Kubernetes 跨集群流量调度实战

Flomesh

服务治理 Kubernetes 集群 流量管理

演讲实录|姚延栋:终止“试点炼狱”,智能汽车时代数字化转型与实践

YMatrix 超融合数据库

车联网 海量数据 超融合数据库 智能网联 YMatrix

Tapdata 携手阿里云,实现数据平滑上云以及毫秒级在线查询和检索能力

云布道师

阿里云

前端常见内存泄漏及解决方法

达摩

Web 内存泄露

预训练时代的自然语言处理 魔搭社区NLP模型全解析

阿里技术

自然语言处理 NLP 大模型

浅析静态应用安全测试

华为云开发者联盟

测试 开发 华为云 12 月 PK 榜

从数据治理到数据应用,制造业企业如何突破数字化转型困境丨行业方案

袋鼠云数栈

数字化转型

下一代架构?从组装式企业到组装式应用

华为云开发者联盟

云计算 后端 数字化 华为云 12 月 PK 榜

喜讯+1!袋鼠云数栈技术团队获“2022年度优秀开源技术团队”

袋鼠云数栈

开源

瓴羊Quick BI数据填报组件,实现智能化管理和高效挖掘利用

夏日星河

火山引擎DataTester:无需研发人力,即刻开启企业A/B实验

字节跳动数据平台

A/B测试

2023年ha软件采购就选Skybility HA!6大优势看这里!

行云管家

高可用 ha 双机热备

如何在滑至页面底端添加提示?

Towify

微信小程序 无代码

2022 年度“用 TDengine,写 TDengine”征文!

爱倒腾的程序员

数据库 tdengine 时序数据库

如何用 30s 讲清楚什么是跳表

飞天小牛肉

redis 面试 社招 校招 秋招

2023年中国企业数字化技术应用十大趋势

易观分析

企业 数字化

【服务故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?

码界西柚

Docker Linux 12 月 PK 榜 容器内存问题

低碳正在成为春城的新名片

极客天地

Flutter for Web 首次首屏优化——JS 分片优化

阿里巴巴终端技术

flutter 前端 Web 客户端

省会城市昆明分布式光伏项目落地 引领低碳化转型实践

极客天地

【合作案例】科协基地预约小程序 | 闵行区科普资源地图

天天预约

IAA品类洞察:扫描品类加快变现,如何抓住增长机遇?

易观分析

广告业 IAA

如何使用 Towify 在小程序中实现勾选用户协议后登录?

Towify

微信小程序 无代码

保护客户代码和应用安全,CodeArts有7招

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜 华为CodeArts

人工智能顶会AAAI 2023放榜!网易伏羲7篇论文入选

网易伏羲

人工智能

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