内存数据库有几个人用过?

09-04-29 spikeme
听人说起内存数据库,一直不懂这个概念。查查资料:

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

还是只理解基本概念。但是我想问的是:

1.什么时候我们的系统需要内存数据库支持。

2.如果我们项目需要内存数据库支持,我们需要自己设计内存数据库吗?还是有第三方开发的内存数据库,有哪些可用的内存数据库产品可用,最好是开源的。

3.开发内存数据库难度大吗,如何开发,需要什么技术。大体步骤是什么?

4.既然是内存数据库。那么数据都放在内存。。要是断电数据不丢了吗。如何保证数据不意外丢失。

5.既然是数据库,那么如果如果无限存储的话,那对内存也就需要无限支持。是不是用内存数据库的系统一般数据量都有限呢。

谢谢

[该贴被spikeme于2009-04-29 23:49修改过]

    

banq
2009-04-30 09:38
内存数据库很多,但是还是存在一个盒子的限制,一个内存数据库也是一个设备,一个设备就有单点风险,那么你用两个内存数据库?实际就是分布式缓存,两者区别是缓存中的内存,内存数据库放的还是数据;而分布式缓存放的是对象,对象不只是数据,是聚合体,是一个对象群,并时刻能在多台服务器内存中维持自身的统一性,就像你们兄弟俩一起闯江湖,不论到哪块服务器内存中,你们兄弟俩都会彼此照顾。数据就不会彼此照顾,都是死的东西。

usejava
2009-04-30 11:44
内存数据库一般运行在和应用同样的进程空间,用来保存应用运行的数据。

内存数据库有现成产品,好像有一个叫hssqldb,java写的。

内存数据库不是用来永久保存数据的,只用来临时保存运行所需的数据。相对于数组等传统方式,好处是可以利用SQL的特性,简化程序设计,并且可以相对容易的和访问普通数据库的模块重用代码。

spikeme
2009-04-30 12:51
按 userjava的说法,内存数据库,跟缓存唯一区别就是可以利用SQL特性,简化程序设计对吗? 可以理解为可以特殊的缓存,对吧。

spikeme
2009-04-30 12:54
我主要还想知道,什么时候需要考虑用内存数据库。

猜你喜欢
6Go 1 2 3 4 ... 6 下一页