内存数据库是以内存为主要存储介质的数据库,它将数据存放在内存中直接操作。传统的磁盘数据库,需要频繁访问磁盘,但受磁头的机械移动和系统调用时间等影响,当访问的数据量很大,且操作频繁时,基于磁盘的数据库会受到很大影响。

内存的读写速度,相比较于磁盘高出几个数量级,例如:双通道DDR3—1333内存,可以达到9300 MB/s(兆字节每秒,指每秒传输的字节数量),一般磁盘约为150 MB/s(兆字节每秒)。随机访问时间更是以毫秒计,一般磁盘约10 ms(毫秒),而双通道DDR3—1333内存,可以达到0.05 ms(毫秒)。

因此,内存数据库最大的特点就是“性能好、速度快”,它能提高应用的性能,更有效地使用CPU周期和内存。

内存数据库抛弃了“磁盘数据管理”的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在“数据缓存、快速算法、并行操作”方面也进行了相应的改进,所以内存数据库的数据处理速度,要比传统数据库的数据处理速度快很多(一般都在10倍以上)。内存数据库的最大特点是,其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。由于内存在系统中是稀缺的资源,内存数据库的容量大小受物理内存的限制,因此内存数据库中所管理的数据,通常只有“热点”或者“高频数据”,而不是全部数据。同时,内存数据库也会被要求根据灵活的策略与磁盘数据库进行数据同步。

内存数据库的技术特点如下:

1、 采用复杂的数据模型表示数据结构,数据冗余小,易扩充,实现了数据共享。
2、 具有较高的数据和程度独立性,数据库的独立性有“物理独立性”和“逻辑独立性”。
3、 内存数据库为用户提供了方便的用户接口。
4、 内存数据库提供4个方面的数据控制功能,分别是“并发控制、恢复、完整性和安全性。数据库中的各个应用程序所使用的数据,由数据库统一规定,按照一定的数据模型组织和建立,由系统统一管理和集中控制。
5、 系统的灵活性非常好。

常用的内存数据库有哪些?

1、 Memcached

Memcached是一种基于Key—Value的开源缓存服务器系统,主要用做数据库的数据高速缓冲,并不能完全称为数据库。Memcached具有多种语言的客户端开发包,包括:Perl、PHP、Java、C、Python、Ruby、C#。

Memcached的API(应用程序编程接口),使用32位循环冗余校验(CRC—32)计算键值后,将文件分散在不同的机器上。当表格满了以后,接下来新增的文件会以“LRU”机制替换掉。由于Memcached通常只是当做“缓存系统”使用,所以使用Memcached的应用程序,在写回较慢的系统时(像是后端的数据库),需要额外的程序更新Memcached内的文件。

Memcached的守护进程是用C语言编写的,客户端可以用任何语言来编写,并通过Memcached协议与守护进程通信。但是Memcached并不提供冗余(例如,复制其Hashmap条目);当某个服务器S停止运行或崩溃,所有存放在S上的“键/值对”都将丢失。

2、 Redis

Redis是一个Key—Value存储系统,和Memcached类似,它支持存储的值类型相对更多,包括“String(字符串)、List(链表)、Set(集合)、ZSet(顺序集合)和Hash(哈希类型)”。

与Memcached一样,Redis为了保证效率,数据都是缓存在内存中。两者的区别是,Redis会周期性地把更新的数据写入磁盘,或者把修改操作写入追加的记录文件,并且在此基础上实现了“主从同步”。主从同步是指数据可以从“主服务器”向任意数量的“从服务器”上同步,“从服务器”可以是关联其他“从服务器”的主服务器。

Redis的出现,很大程度上弥补了Memcached这类“Key—Value”存储的不足。它在部分场合可以对关系数据库起到很好的补充作用。

3、 MongoDB

MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展性的高性能数据存储解决方案。

MongoDB是一个介于“关系型数据库”与“非关系型数据库”之间的产品,它是“非关系型数据库”当中功能最丰富、与“关系型数据库”最接近的。它支持的数据结构非常松散,是类似于json的Bson格式,因此可以存储比较复杂的数据类型。

MongoDB最大的特点是,支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似“关系数据库单表查询”的绝大部分功能,而且还支持对数据建立索引。

MongoDB也可以作为内存数据库使用,它有一个非常酷的设计,就是可以使用“内存映射文件”来处理对磁盘文件中数据的读写请求。也就是说,MongoDB并不对内存和磁盘这两者进行区别对待,只是将文件看作是一个巨大的数组,然后以字节为单位,访问其中的数据,剩下的交由操作系统去处理。正是这个设计决策,才使得MongoDB可以无需任何修改,就能够运行于内存之中。

亿速云在今年春节期间,新上线了三款“云数据库”的产品和服务,分别为:云数据库MySQL、云数据库Redis以及云数据库Memcached。其中,亿速云的云数据MySQL,是一种即开即用、稳定可靠的在线数据库服务,具有多重的安全防护措施和完善的性能监控体系,支持“纯SSD云盘全闪存、双节点数据互为备份同步、跨节点自动备份以及可弹性扩展”等强劲功能,为用户提供专业的数据库备份、恢复及优化方案。