而持久型内存位于DRAM与SSD之间,以load/store指令的方式访问并支持数据的持久化,也填补了DRAM与SSD在时延上存在的鸿沟 。相比DRAM,持久型内存在性能上处于劣势,但容量和价格均占据优势;相比NANDSSD,持久型内存在性能上处于优势,但容量和价值处于劣势 。
3.内存数据库的发展历程
内存数据库的发展主要经历了雏形期、理论成熟期、市场成长期及高速发展期四个阶段 。
4.内存数据库的优势与挑战
内存数据库在提供高性能读写能力的同时,也存在由于器件导致的数据易失问题,需要在应用中引起注意 。
1).优势:高性能读写
由于省去了磁盘I/O的开销,在数据访问的时延上内存型数据库可以达到传统关系型数据库无法达到的微秒级别,单机内存数据库的QPS也可以达到10万以上,配合上用户态协议栈、内存大页等技术之后,更是可以轻松达到几十万QPS的量级,这是传统的关系型数据库很难做到的 。
2).挑战:内存数据易失
内存数据库当前主要使用DRAM作为存储介质,DRAM属于掉电易失性介质,为了保证数据的可靠性,内存数据库需要考虑持久化方案 。现阶段主流的键值对内存数据库对于持久化的支持较为薄弱,持久化性能也不如传统数据库 。
内存型数据库中克服掉电易失性来保障数据可靠性的方法主要是以下两种:
- 一是每次操作都进行数据持久化,这种方式势必会大幅降低内存数据库的性能;
- 二是按照一定的策略进行操作的持久化,这样可以达到一定程度的优化和缓解,但极端情况下数据丢失的情况仍不可避免 。
5.内存数据库的分类
主流的内存数据库可分为键值对内存数据库、关系型内存数据库以及其他数据库,用户可根据自身的业务需求选择适合自己的内存数据库类型 。
1).键值对内存数据库
键值对(KV, Key-Value)内存数据库指的是一种以键值对为主要存储结构的内存数据库 。键值对内存数据库通常按键进行数据存取操作,值通常支持各种数据类型,使用键值存储的数据模型相对简单,更适合要求性能高、计算简单的一些场景 。键值对内存数据库的典型代表为 Redis、Memcached 和 Aerospike 。
2).关系型内存数据库
关系型内存数据库是一种基于数据关系模型的内存数据库 。关系型内存数据库将传统的关系型数据库表搬到内存中,支持通过 SQL语句的方式实现对内存数据的访问,在实现复杂分析功能的同时,提升数据访问速度 。关系型内存数据库的典型代表软件为 Oracle TimesTen、SAP HANA、MemSQL 和 SQLite 。
3).其他类型的内存数据库
除键值对内存数据库、关系型内存数据库之外,其他比较小众的内存数据库称为其他内存数据库,比如图内存数据库 RedisGraph 等 。
6.内存数据库产品现状
DB-Engines Ranking 是公认较权威的数据库排行,我们选取了其中最为活跃的 10 款典型内存数据库进行对比 。开源产品中,Redis 和 Memcached 是最受欢迎的两款键值对内存数据库;而 SQLite 是最受欢迎的关系型内存数据库 。表中大部分的关系型内存数据库为商用数据库,其中热度最高的是 SAP HANA 。
早在 1995 年就发布第一版的Oracle TimesTen 仍然在网上活跃;2014 年新发布 Apache Ignite 兼容键值和关系型数据结构,热度正稳步攀升 。事务支持方面,大部分的关系型内存数据库称可以支持 ACID,但都需要在性能上作出妥协 。
推荐阅读
- 国内手机登录facebook技巧 微信如何登入facebook账号
- 手机变慢 手机特别的慢是什么原因?
- 手机投票制作软件 网上投票活动怎么做?
- 手机投票制作软件 投票怎么制作?
- 境外服务器代理平台推荐 国外代理服务器ip软件
- 恢复手机误删照片 照片删除并清空怎么恢复?
- 可以制作投票的软件 如何自己做投票软件?
- 360申诉手机号被标记 360申诉手持身份证
- 短信通知软件推荐 短信通知服务器
- 网络代理工具app推荐 代理服务软件是什么