内存数据库[1]
- 8. 比较 传统数据库 (三)
内存数据库 传统数据库
架构 内存为中心 磁盘为中心
实施方式 可以嵌入应用 单独的服务器
IO操作 无 有
响应速度 微秒到毫秒 毫秒级
数据容量 较少 超大数据量
数据特性 短暂 持久
05/20/12 8
- 9. 内存数据库产品(一)
• 应用级共享内存技术
专用程序开发、不支持关系性 SQL 、不支持事务等。
• 专业级内存数据库
应用模式简单、不提供 ESQL 、 C/S 架构支持较差等。
• 通用级的内存数据库
应用广泛、成熟,提供 ESOL 开发效率高等。
05/20/12 9
- 10. 内存数据库产品 (二)
商业:(通用级内存数据库)
• Oracle Timesten
• Altibase
• eXtremeDB (实时与嵌入式数据库)
开源:(实时与嵌入式数据库)
• FastDB
开源:(分布缓存系统 , 基于 memcache 和 BerkeleyDB 开发, Key/Value 操作)
• MemcacheDB
• Dbcached
• Tbstore (非开源)
其他:
• 内存表
传统数据库提供的内存表 , 如: sqlite 、 mysql 临时表和内存表
05/20/12 10
- 11. Oracle Timesten (一)
Oracle TimesTen 实时数据管理软件由三个基于内
存中数据库、数据复制和高速缓存技术的产品组成。
1、内存优化的关系数据库;
2、支持服务器间的实时数据复制,以获得高可
用性和负载共享;
3、应用程序层中的 Oracle 数据创建实时、 可
更新的高速缓存。
05/20/12 11
- 14. Altibase (一)
Altibase 是一个在事务优先的环境中提供高性能和
高可用性的软件解决方案。
Altibase 支持客户端 / 服务器架构或嵌入式架构。
Altibase 产品已经走向混合型数据库。
05/20/12 14
- 18. eXtremeDB (一)
• 实时与嵌入式数据库
• 系统开销少
• 速度达到微秒级
• 完全驻留在主内存中,不使用文件系统(包括内存盘)
• 数据管理量在 32BIT 下能达到 20G
• 提供 C/C++ 的 Library 方便程序开发
• SQL ( eXtremeSQL )支持
• 日志( eXtremeLog )支持
• 高可用性( eXtremeHA )支持
05/20/12 18
- 21. eXtremeDB (四)
eXtremeDB Kernel Model 数据直接访问:
eXtremeDB 日志管理:
05/20/12 21
- 23. FastDB
• 数据库文件被影射到虚拟内存空间 , 假定整个数据库存在于 RAM
中
• 不支持 C/S 架构
• 提供 C++ 接口操作数据
• 支持一种语法和 SQL 非常类似的查询语言
• 支持事务
• 在线备份以及系统崩溃后的自动恢复
05/20/12 23
- 24. MemcacheDB
• 前端 memcached 分布式缓存服务器
• 后端 Berkeley DB 的持久化存储,异步主辅复制机制
• 超高性能读写速度
• 不支持内存对象的遍历操作,不支持复杂的查询操作,以 key-value 模
式访问数据
• 具备了事务恢复能力、持久化能力和分布式复制能力
• 相关技术介绍: memcache_engine
05/20/12 24
- 27. DBcached
• DBcached 基于 Memcached 和 NMDB 的分布式 key-value 数据库内
存缓存系统
• QDBM 或 Berkeley DB 作为后端数据库
• DBcached= Memcached + 持久化存储管理器 + NMDB 客户端接口。
• 以 key-value 模式访问数据
• 相关技术介绍
Memcached 是一款高性能的,分布式的内存对象缓存系统。
NMDB 是一款多协议网络数据库 (dbm 类 ) 管理器,它由内存缓存
和磁盘存储两部分构成,使用 QDBM 或 Berkeley DB 作为后端数据
库。
QDBM 是管理数据库的例程库,读写速度比 Berkeley DB 要快。
05/20/12 27
- 29. MemcacheDB 和 DBcached 区别
• Memcache 服务器池故障转移导致的数据丢失, DBcached 则会请求后端
的 NMDB 取回数据。
• MemcacheDB 只使用了 Memcached 的协议和网络层,抛弃了
Memcached 的内存管理部分,而使用 Berkeley DB 数据库自身的缓存
来实现,是围绕 Berkeley DB 进行开发的。
• DBcached 的设计方向是发挥 Memcached 的内存缓存性能优势,使之
成为一个具有“故障转移”、“数据持久化存储”、“多服务器同时读
写”的高并发内存缓存系统,它是围绕 Memcached 进行开发的。
05/20/12 29
- 30. Tbstore
• 高性能、分布式的 cache 系统
• 基于 Berkeley DB
• 缺点是新增服务器大部分 Cache 内容失效
• 非开源,缺乏参考资料
05/20/12 30
- 32. 附录 (1)--Memcached 概述
Memcached 是一个高性能的分布式的内存对象缓存系统,通过在内
存里维护一个统一的巨大的 hash 表,它能够用来存储各种格式的数据,
包括图像、视频、文件以及数据库检索的结果等。
工作机制:
通过在内存中开辟一块区域来维持一个大的 hash 表来加快页面访
问速度,和数据库是独立的。但是目前主要用来缓存数据库的数据。允
许多个 server 通过网络形成一个大的 hash ,用户不必关心数据存放在哪
,只调用相关接口就可。存放在内存的数据通过 LRU 算法进行淘汰出内
存。同时可以通过删除和设置失效时间来淘汰存放在内存的数据。
05/20/12 32
- 33. 附录 (2)--Berkeley DB 概述
Berkeley DB 是由 sleepycat software 开发的轻量级嵌入式数据库,它不仅适用于嵌入式系统
,而且可以直接连接到应用程序内部,和应用程序运行在同一地址空间。传统的数据库一般作为
独立服务器工作,而 Berkeley DB 是软件开发库,开发者将它嵌入到应用程序中,应用程序本身
就是一个服务器,而只是利用嵌入式数据库开发来实现定制的数据库逻辑,避免了与应用服务器
进程间通信的开销,因此 Berkeley DB 具有较高的运行效率,适用于资源受限的嵌入式系统。
一般而言, Berkeley DB 数据库系统可以大致分为五个子系统。
1 、 存取管理子系统( Access Methods )
该子系统为创建和访问数据库文件提供基本的支持。在没有事务管理的情况下,该子系统中
的模块可单独使用,为应用程序提供快速高效的数据存取服务。
2 、 内存池管理子系统( Memory Pool )
该子系统就是 Berkeley DB 所使用的通用共享内存缓冲区,该子系统可以被应用程序单独使
用。
3 、 事务子系统( Transaction )
该子系统为 Berkekey DB 提供事务管理功能,保证操作的原则性、一致性和孤立性。事务子
系统适用于对需要事务保证的数据进行修改的场合。
4 、 锁子系统( Locking )
该子系统提供进程之间以及进程内部的并发管理机制,为系统提供多用户读取和单用户修改
同一对象的共享控制。该子系统可以被应用程序单独使用。
5 、 日志子系统( Logging )
该子系统采用的是先写日志的策略,支持事务子系统进行数据恢复,保证数据一致性。
05/20/12 33