写点什么

分析型嵌入式键值数据库 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:192743
用户头像

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

关注

评论

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

自动化测试 | 如何在API开发中践行“设计优先”方法?SwaggerHub助您一臂之力

龙智—DevSecOps解决方案

API SmartBear

重塑数据活力 | 焱融科技与DaoCloud 道客完成云原生兼容性认证

焱融科技

#云原生 #高性能 #分布式文件存储 #文件存储 #分布式存储

涨薪60%,从小厂逆袭,坐上美团技术专家(面经+心得)

程序知音

Java 后端 java面试 java架构 Java进阶

八股MQ003——聊聊Consumer

Codyida

后端

NFTScan 推出「nftonchain」Telegram channel,实时推送链上 NFT 热点数据

NFT Research

NFT 智能推送 #Web3

使用TPC-H 进行GreatSQL并行查询测试

GreatSQL

MySQL 并行查询 greatsql greatsql社区

演讲回顾 | 释放Atlassian工具的力量

龙智—DevSecOps解决方案

Atlassian Jira Atlassian 云版

简洁好用的思维导图软件:simplemind 中文版

真大的脸盆

Mac 思维导图 Mac 软件 思维导图软件

推动变革,打造全新的全面预算管理解决方案

智达方通

智能多维数据库 多维数据库 业财融合 全面预算管理

大咖观点| AIGC与因果推断的双向赋能

九章云极DataCanvas

华秋干货铺 | PCB板为什么要做树脂塞孔?

华秋电子

AIGC产业研究报告 2023——图像生成篇

易观分析

产业 智能

使用篇丨链路追踪(Tracing)很简单:链路拓扑

阿里巴巴云原生

阿里云 云原生 链路追踪 Tracing

Python文件和操作系统基础

timerring

Python

一文带你了解EPM系统的发展史

智达方通

EPM 业财融合 智达方通 企业绩效管理 海波龙

膜拜,国内算法大佬亲撰:数据结构与算法全解笔记

程序知音

Java 算法 数据结构与算法 后端技术

AIGC遇上低代码的碰撞与融合

力软低代码开发平台

MySQL 8.0中InnoDB buffer pool size进度更透明

GreatSQL

MySQL InnoDB greatsql社区

五月到了,再来看看ChatGPT给我们带来了什么吧!

加入高科技仿生人

AI AIGC ChatGPT

版本控制 | 如何使用虚幻引擎的多用户编辑(MUE)功能

龙智—DevSecOps解决方案

版本控制 虚幻引擎 虚拟制作 虚幻多用户编辑

中国信通院召开政企信息技术应用创新(信创)促进中心启动会

信通院IOMM数字化转型团队

信创 信创产业 信创生态

iOS MachineLearning 系列(10)—— 自然语言分析之文本拆解

珲少

标签系列:标签的价值、生产与评价

小鲸数据

标签 CDP 用户画像 标签体系 精准营销

升级企业数智化底座 用友iuap拉满长期主义

用友BIP

153个!PCB板上的字母符号都代表啥?一图带你搞懂!

华秋PCB

物理 电路 元器件 PCB PCB设计

Netty服务端开发及性能优化 | 京东云技术团队

京东科技开发者

Netty 高性能 netty内存管理 企业号 5 月 PK 榜

巴别时代基于 Apache Paimon 的 Streaming Lakehouse 的探索与实践

Apache Flink

大数据 flink 实时计算

得物直播低延迟探索 | 得物技术

得物技术

直播技术 直播推流 直播优化

京东物流常态化压测实践 | 京东云技术团队

京东科技开发者

测试 压测 常态化压测 企业号 5 月 PK 榜

分布式编译系统的搭建

GreatSQL

MySQL greatsql社区 分布式编译

Python函数基础回顾

timerring

Python

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