内存数据库?

46 views
Skip to first unread message

Chirs

unread,
Aug 4, 2006, 12:57:52 AM8/4/06
to 高性能网络编程邮件列表
为减轻应用服务器与数据库服务器直接频繁交互,需要在应用服务器在启动时从数据库服务器中把数据服务器的部分数据(频繁登陆用户数据)备份一部分到应用服务器的内存中,请问有没有现成的内存数据库??或者自己设计那设计思路是什么?

内存数据库的要求:数据只保存在内存中,不存储到本地。

sunway

unread,
Aug 4, 2006, 1:01:01 AM8/4/06
to 高性能网络编程邮件列表
其实这是Cache Server,
而且一般的数据库都有Cache的。对于登陆用户这些数据量比较小的应用
好象没有必要做CacheServer

Chirs

unread,
Aug 4, 2006, 1:13:06 AM8/4/06
to 高性能网络编程邮件列表
应用模型:
应用服务器不和数据库直接连接,而是通过数据库服务器访问的,
应用服务器和数据库服务器是使用信令完成,具体数据库的操作由数据库服务器完成。
|----------| |-------|
| 应用服务器 |-> | 数据服务器 |
----->数据库(SQL等)
| | | |
----------- -------

李明洋

unread,
Aug 4, 2006, 1:19:35 AM8/4/06
to dev4s...@googlegroups.com
都什么情况,才有必要建缓冲?什么情况下,数据库本身带的缓存不够用?

2006/8/4, Chirs <hezhi...@126.com>:

Chirs

unread,
Aug 4, 2006, 1:23:35 AM8/4/06
to 高性能网络编程邮件列表
我现在大约需要管理10000个前端设备(视频监控中的编码器)和10000个用户同时登陆服务器,所以数据量会很大。

sunway

unread,
Aug 4, 2006, 2:02:09 AM8/4/06
to 高性能网络编程邮件列表
我做过Cache
Server类的应用,其实就是网络游戏中的DBProxy,在DB和前台的逻辑服务器间工作。
CacheServer的功能如下:
1,前台的逻辑服务器通过TCP发送请求到DBProxy,DBProxy检查内存,如果内存有就读数据返回给前台的逻辑服务器,如果内存没有就从DB读数据。
2,前台的逻辑服务器定时保存数据到DBProxy。
3,DBProxy定时保存数据到DB。
这个DBProxy就是内存数据库。编码的主要难度是如何提高数据吞吐量和做多线程的优化。

zhaoh

unread,
Aug 4, 2006, 3:27:32 AM8/4/06
to dev4s...@googlegroups.com
有现成的实时内存数据库的,都是为了解决高响应速度问题的,典型的有McObject公司的eXtremeDB,有多个平台的版本,还有Oracle TimesTen,这是Oracle收购了的,与Oracle数据库结合起来能解决高响应速度大数据量的数据库应用要求。

sunbi...@gmail.com

unread,
Aug 4, 2006, 10:00:37 AM8/4/06
to 高性能网络编程邮件列表
如果不想自己写cache的话,可以考虑用用这个
http://www.danga.com/memcached/

tianj...@gmail.com

unread,
Aug 4, 2006, 10:52:28 PM8/4/06
to 高性能网络编程邮件列表
我以前见过华为有自己的内存数据库产品,直接把程序所需要的表放到内存里,可以与应用程序进行sql交互,而不是简单的Cache
,后台数据库仅作存储作用,内存数据库定时把内容写往后台数据库作备份。

曹小健

unread,
Aug 4, 2006, 11:17:57 PM8/4/06
to dev4s...@googlegroups.com
定时?如果机器掉电咋办?

如果实在找不到合适的mdb,可以这样做:

把机器内存映射为一块磁盘,数据文件放到这块磁盘上面就行了,这速度应该不慢吧。


----- Original Message -----
From: <tianj...@gmail.com>
To: "高性能网络编程邮件列表" <dev4s...@googlegroups.com>
Sent: Saturday, August 05, 2006 10:52 AM
Subject: Re: 内存数据库?


> 我以前见过华为有自己的内存数据库产品,直接把程序所需要的表放到内存里,可以
与应用程序进行sql交互,而不是简单的Cache
> ,后台数据库仅作存储作用,内存数据库定时把内容写往后台数据库作备份。
>
> >
>

tianj...@gmail.com

unread,
Aug 5, 2006, 5:11:32 AM8/5/06
to 高性能网络编程邮件列表
掉电就挂了啊 呵呵呵
不过现在重要的服务器都是双路供电的,7*24小时的应用还有大型的ups保障,掉电的情况很少出现,而且他定时会把数据刷回后台数据库,所以影响也不大。
把机器内存映射为一块磁盘,数据文件放到这块磁盘上面就行了,这个办法我也想过只是没有实施过
嘿嘿 你要搞得到机器试麻烦把结果告诉我

kuoxin

unread,
Aug 6, 2006, 3:06:06 AM8/6/06
to 高性能网络编程邮件列表
使用Berkeley DB, 将它映像到内存,非常快

Chirs

unread,
Aug 6, 2006, 10:03:32 PM8/6/06
to 高性能网络编程邮件列表

使用Berkeley
DB的数据不需要把当前数据写到磁盘吗?如果本地磁盘还需要写一份就没必要了,真正需要的内存数据库就是只有服务器运行时存在就可以了。另外该产品是否开源?

kuoxin wrote:
> 使用Berkeley DB, 将它映像到内存,非常快

曹小健

unread,
Aug 6, 2006, 10:32:30 PM8/6/06
to dev4s...@googlegroups.com
apache 下面的一个子项目吧。

----- Original Message -----
From: "Chirs" <hezhi...@126.com>
To: "高性能网络编程邮件列表" <dev4s...@googlegroups.com>
Sent: Monday, August 07, 2006 10:03 AM
Subject: Re: 内存数据库?


>
> 使用Berkeley
> DB的数据不需要把当前数据写到磁盘吗?如果本地磁盘还需要写一份就没必要了,真

bowlong

unread,
Aug 6, 2006, 11:04:52 PM8/6/06
to 高性能网络编程邮件列表
Oracle Times Ten
是一个很好的选择。我认为这个是首选,在好一点的服务器上。可以达到300,000条/秒的读写次数。而且数据可以自动和后天的Oracle
10G等数据库同步。

Java 的内存数据库也有不少。性能都很强。
50,000条记录/秒 写都不成问题。

que...@gmail.com

unread,
Aug 6, 2006, 11:28:29 PM8/6/06
to dev4s...@googlegroups.com
每秒50,000的插入记录怎么测试?
假如写个程序专门插入记录,从多个不同的机器运行,在Oracle或者SQL server日志中
能分析出来每秒的插入内容吗?SQL Server怎么分析呢?
谢谢!

kuoxin

unread,
Aug 6, 2006, 11:39:55 PM8/6/06
to 高性能网络编程邮件列表
可以使用in-memory模式。
是开源的,嵌入式系统首选,cisco路由器就是使用它,效率非常的高。
http://www.sleepycat.com/
Reply all
Reply to author
Forward
0 new messages