内存数据库之Apache Ingite

  categories:资料  author:

内存数据库(in-memory database,IMDB)是指那些完全用主存作为数据存储的数据库管理系统,由于节省下来磁盘的I/O开销,与基于磁盘的传统数据库管理系统而言效率要高很多。

内存数据库非常适合在

小规模数据应用

快速原型系统实现

软件测试

等场景中应用。还清晰记得记得当时我们在一个项目中即想利用数据库的查询优化、但是数据量又小到足以被内存容纳的情况下,满街找DB2中类似的开关……

现在有不少比较成熟基于Java的内存数据库,使用起来跟连接一个jar没什么区别。下面介绍我使用过的一些开源免费的产品。

HSQLDB

HSQLDB是一个开源免费的纯Java数据库,与ANSI-92 SQL兼容得不错,速度非常快,而且同时支持嵌入式和C/S模式。1.8.0.10整个jar包仅仅700K,使用起来跟普通jar包没有不同。如果没有弄错的话,HSQLDB还被OpenOffice采用。期待1.9.0早日来到。

H2

个人觉得H2是HSQLDB的一个重写。非常快(感觉比HSQLDB更快)、开源免费、提供JDBC和ODBC接口,同时支持嵌入式、C/S模式以及阵列模式,仅仅占用1M左右的内存。此外,H2还很贴心地提供了一个很小的基于Applet的SQL工具。在我的使用过程中,感觉H2与HSQLDB一样对SQL 92支持得很不错。

Apache Derby

源自IBM的数据库,与HSQLDB和H2想比,主要感觉速度慢,而且对SQL 92的兼容性不佳,个别被MySQL支持的语句都无法顺利在Derby上执行。还有些bug,虽然在升级包中修复了。虽然如此,Derby被捐献到Apache基金后,相信会有更大的作为吧。

随着时间的推移,相信内存数据库会更成熟、有更广阔的应用空间。

最近一段时间研究了内存数据库,总结了一下,分享给大家。我们先从应用场景说起。

一. 内存数据库的应用场景

  • 数据缓存:将经常使用的数据存放在内存中,全局共享,减少和数据库之间的交互频率,提升数据访问速度,主要用于应用程序全局共享缓存。
  • 内存计算:支持通过标准SQL或者LINQ的方式实现对内存数据的聚合、计算和查询,充分发挥、利用应用服务器的资源。

二. 业界有哪几类主流的内存数据库

1. 关系型内存数据库

  • 传统关系型数据库场景下,应用层的数据缓存
  • 将传统的关系型数据库表搬到内存中,内存数据和数据库数据之间进行结构映射
  • 支持通过SQL语句的方式实现对内存数据的访问,更加贴合业务实现
  • 将经常使用的数据存放在内存中,减少和数据库之间的交互频率,提升数据访问速度
  • 数据实时/定时同步
  • 有限的事务保证

2. 键值对内存数据库

  • 键值对存储结构
  • 按Key进行数据读取
  • Value支持各种数据类型
  • 类似Redis
阅读全文



快乐成长 每天进步一点点      京ICP备18032580号-1