内存数据库是相对于磁盘数据库来说的。我们都知道我们经常使用的关系型数据库,比如MySQL,它的数据文件最终是存储到磁盘上的。而内存数据库则是将所有的数据存储在内存中,磁盘和内存在访问速率上不是一个量级的,完全没有可比性。
随着内存容量不断加大、价格不断下降,互联网的流量越来越大的情况下,内存数据库逐步被广泛应用起来。
应用场景
缓存数据:将高频访问的数据通过一定的机制加载到内存中,减少应用与数据库的连接,极大的提高了应用的性能;
内存计算:如果你的数据在内存中,那么你可以充分利用CPU的资源去做数据的计算、聚合、查询,而不用担心数据库是否能承受你的SQL查询。
主流的内存数据库
关系型内存数据库:H2、Apache Ignite、SQLite
关系型 Mongodb、Hana、H2;
MongoDB 是一个基于分布式文件存储的数据库,介于关系型和非关系型之间,数据以文档的形式存在,文档以BSON格式存放。
Hana是德国SAP公司的产品,非开源、价格比较昂贵并且对服务器硬件配置要求比较高,国内用的比较少。
H2开源产品,优点小而快、查询语法简单,嵌入式和单独部署皆可。
KV型 Redis、Memcache、 Ignite、Guavacache;
1,SQLITE是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。
2,ORACLE内存数据库系列BERKELEY DB和TIMES TEN,前者只支持嵌入式内存数据,后者是独立的内存优化数据库。
3,EXTREMEDB内存式实时数据库是为实时系统及嵌入式系统而特别设计的数据库。
4,H2 DATABASE 是THOMAS MUELLER提供的一个开源的,纯JAVA实现的关系数据库。
内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。
在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能。
作用类似于缓存,并不注重数据完整性和数据一致性。
基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。
比较FastDB、Memcached和Redis主流内存数据库的功能特性。