内存数据库:大数据时代数据管理新宠

在 2012中国系统架构师大会上,笔者曾做过一份有关大数据的调查,其中一项“在众多的技术趋势中,您所关注的数据管理的新技术是什么?”的调查结果中, “内存数据库”成为仅次于“分布式存储与计算”的最受关注的新技术。内存数据库之所以受到越来越多的关注,与其性能上的飞跃和性价比的不断提升有着密不可分的关系。

内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。

内存数据库与传统数据库的异同

内存数据库的目标是通过使用内存实现数据存储来提高吞吐量和降低延迟。这与使用磁盘存储的传统数据库管理系统不同,由于内部优化算法更简单,而且执行的CPU指令较少,所以内存内数据的速度比基于磁盘的数据库快。访问内存数据可以提高响应速度,对于一些响应时间要求较高的应用程序,如交易、电信和国防系统,一般都会使用内存数据库。由于内存数据库的这种特性,这些数据库使用内存要多于磁盘数据库产品。具体差别如下:

1. 传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。

2. 对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。

3. 内存数据库所处理的数据通常是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。

在实际应用中这两种数据库常常结合使用,而不是以内存数据库替代传统数据库。

·SQLite

SQLite是一款轻型的数据库,它占用资源非常的低,同时能够跟很多程序语言相结合,但是支持的SQL语句不会逊色于其他开源数据库。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java 等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

·Redis

Redis是一款开源的、高性能的键-值存储 (key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。

原文地址:http://itoedr.blog.163.com/blog/static/1202842972013620101220713/

文件数据库之sqlite 与内存数据库 redis相关推荐

  1. Qt Sqlite内存数据库和文件数据库交互

    基础概念: 1.内存数据库标识":memory:": 2.[]中内容表示可选: 3.采用QSqlDatabase实现Sqlite的内存数据库和文件数据库交互. 一.将文件数据库加载 ...

  2. 轻便的客户端本地文件数据库 SQLite

    想在客户端程序中暂存一些数据(数据库较大,类别较多),不想用文件,因其不便于检索,操作也麻烦.于是去找一种轻便的文件数据库,看了一下,先看中了几种,1,Berkeley DB(开源,一些条件下收费,且 ...

  3. 使用SQLite Expert Professional将ACCESS数据库文件导入到SQLITE

    使用SQLite Expert Professional将ACCESS数据库文件导入到SQLITE 软件安装 数据库导入 软件安装 SQLite Expert Professional 是一款可视化 ...

  4. Golang之文件数据库--Bolt库的使用

    做后端开发的数据库那是见得多了,像什么Mysql.SQL Server.Oracle.SQLite.MongoDB.Redis等都是一些比较主流的数据库(这里边有关系型和非关系型的数据库,这里不讨论这 ...

  5. 【iOS数据持久化】数据库(SQLite.swift)和FMDB

    数据持久化之SQLite数据库(SQLite.swift使用) 一.     简介 SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了.它的处理速 ...

  6. IOS开发数据库篇—SQLite模糊查询

    IOS开发数据库篇-SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 ...

  7. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

    今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...

  8. Python数据库使用-SQLite

    https://www.liaoxuefeng.com/wiki/897692888725344/926177394024864 SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLit ...

  9. python操作sqlite3 导入csv文件_[转载]SQLite 3导入导出成txt或csv操作

    平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到. 进入管理: sqlite3.exe d:\\test.db //假设数据是 d:\\test.db > ...

最新文章

  1. .9文件,展示后显示黑条问题的解决
  2. Python 技术篇 - 通过pyminifier库实现源码压缩、混淆、加密保护实例演示,pyminifier的使用方法
  3. 中国光纤管理解决方案市场发展分析及十四五规划咨询建议报告2022年版
  4. mysql5.5连接器_MySQL :: MySQL 5.1参考手册 :: 26. 连接器
  5. 给书配代码-电力经济调度(4):有功与辅助服务联合经济调度
  6. 11g rac生产环境异机恢复报错RMAN-6013
  7. 事件监听机制——鼠标事件MouseEvent
  8. django登录连接html,Django——登录功能(连接mysql)
  9. 从WordCount看Spark大数据处理的核心机制(2)
  10. 如何在Spyder中使用远程服务器的python来调试代码
  11. 通过微信小程序看趋势
  12. gpt2 代码自动补全_如果您认为GPT-3使编码器过时,则您可能不编写代码
  13. c语言逻辑推理题大全,C语言逻辑推理例题(附答案)
  14. 2017年6月计算机排名,桌面CPU性能排行 CPU天梯图2017年6月最新版
  15. 微软Surface Pro 3:优秀由内而外
  16. wireshark抓取未加密聊天数据
  17. 何夕 - 六道众生·何夕科幻自选集(2014年1月31日)
  18. Scala特质trait
  19. 微信小程序控制台 报错 对应的服务器证书无效 控制台输入 showRequestInfo() 可以获取更详细信息 原因是ssl证书过期 重新申请即可
  20. 最新的全球78707个主要城市数据库,包含经纬度坐标值国家省份

热门文章

  1. BaoStock怎样下载股票数据?
  2. 自学Java真能找到好工作吗
  3. Sql Server 2008的客户端连接工具SQL Server Management Studio连接Sql Server 2012出现的索引超出了数组界限的错误
  4. argcgis线裁剪线、多图层线合并为一个图层
  5. 600w播放,80w涨粉,B站UP主恰饭B站粉丝竟刷屏感谢甲方!
  6. 金庸武功之“蛤蟆功”--memcached主从复制
  7. SPRINGBOOT中如何运用JPA,简单例子
  8. 【Flutter 实战】自定义动画-涟漪和雷达扫描
  9. 以太坊之后,为何V神不想再次成为掌舵人
  10. CloudSim创建十个虚机