fastdb是什么数据库?新手入门看这篇就够了!

吉云

最近手头有个小项目,对数据读写速度有点要求,之前用的数据库感觉有点慢,就想着找个快点的替代品。搜来搜去,发现一个叫fastdb的东西,说是内存数据库,速度快得很。

听着挺厉害,就想着拿来试试。找资料看一下,这玩意儿是俄罗斯那边搞出来的,开源免费。它的思路挺直接的,就是把数据全塞内存里操作,那速度能不快嘛下载下来捣鼓一下,发现它主要是用C++写的,所以接口也是C++的,对我这种写C++的来说还算友

上手体验

fastdb是什么数据库?新手入门看这篇就够了!

装好之后开始试用。发现一个特点,它跟咱们平时用的MySQL那些不太一样,不支持啥客户端连服务器的模式。意思是,所有要用这个fastdb的程序,都得跑在同一台电脑上才行。这点一开始有点不习惯,不过我那个小项目本来也就打算单机跑,所以问题不大。

然后就是定义数据表。它这个定义方式有点意思,不是用SQL语句创表,而是直接用C++的类定义。你定义一个类,里面的成员变量就是表的字段。它还支持一些面向对象的特性,比如类继承,字段可以是数组,甚至可以是对象的引用,搞起来挺灵活的。

实践中的发现

实际跑起来,速度确实没得说。因为数据都在内存里,增删改查操作都非常快,比操作硬盘的数据库快好几个量级。我看网上有人测试过,性能比BerkeleyDB和SQLite都要

不过用着用着,也发现一些不太方便的地方:

    fastdb是什么数据库?新手入门看这篇就够了!

  • 数据类型限制: 它好像为简化内部处理和查询,不支持无符号整数类型(比如unsigned int)。所有整数都得用有符号的,有时候得自己转换一下,稍微有点麻烦。
  • 单一主机限制: 前面也说,所有程序必须跑在一台机器上。这对需要分布式部署或者多机协作的应用来说,直接就没法用。
  • 接口单一: 主要是C++接口,我看资料说不支持Java API。要是项目主力语言不是C++,那用起来就费劲。

总结一下

fastdb这个东西特点很鲜明。优点就是快,非常快,而且C++接口用起来也还算方便,尤其适合那些对实时性要求高、数据量能在单机内存承受范围内、并且主要开发语言是C++的场景。

fastdb是什么数据库?新手入门看这篇就够了!

但缺点也很明显,就是应用场景太窄。不能跨机器,接口支持少,在国内用的人好像不多,相关的中文讨论和资料也比较少。你要是正好符合它的要求,那用起来可能很爽。但凡你的需求稍微复杂点,比如要多机协作,或者想用Java、Python这些语言,那它就不合适。

这回折腾fastdb也算开开眼界,解还有这么一种内存数据库的实现方式。虽然我的项目因为一些其他原因没用上它,但整个实践过程还是挺有意思的,也算是一种技术积累。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]