- 浏览: 655819 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
4.1.2 哪些场合适合使用其他的关系型数据库管理系统( RDBMS )
· 客户端/ 服务器程序
如果你有许多的客户端程序要通过网络访问一个共享的数据库, 你应当考虑用一个客户端/ 服务器数据库来替代SQLite. SQLite 可以通过网络文件系统工作, 但是因为和大多数网络文件系统都存在延时, 因此执行效率不会很高. 此外大多数网络文件系统在实现文件逻辑锁的方面都存在着bug( 包括Unix 和windows). 如果文件锁没有正常的工作, 就可能出现在同一时间两个或更多的客户端程序更改同一个数据库的同一部分, 从而导致数据库出错. 因为这些问题是文件系统执行的时候本质上存在的bug, 因此SQLite 没有办法避免它们.
好的经验告诉我们, 应该避免在许多计算机需要通过一个网络文件系统同时访问同一个数据库的情况下使用SQLite.
· 高流量网站
SQLite 通常情况下用作一个网站的后台数据库可以很好的工作. 但是如果你的网站的访问量大到你开始考虑采取分布式的数据库部署, 那么你应当毫不犹豫的考虑用一个企业级的客户端/ 服务器数据库来替代SQLite.
· 超大的数据集
当你在SQLite 中开始一个事务处理的时候( 事务处理会在任何写操作发生之前产生, 而不是必须要显示的调用BEGIN...COMMIT), 数据库引擎将不得不分配一小块脏页( 文件缓冲页面) 来帮助它自己管理回滚操作. 每1MB 的数据库文件SQLite 需要256 字节. 对于小型的数据库这些空间不算什么, 但是当数据库增长到数十亿字节的时候, 缓冲页面的尺寸就会相当的大了. 如果你需要存储或修改几十GB 的数据, 你应该考虑用其他的数据库引擎.
· 高并发访问
SQLite 对于整个数据库文件进行读取/ 写入锁定. 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作. 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分. 对于大多数情况这不算是什么问题. 在这些情况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒. 但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的解决方案了.
方面 |
具体要求 |
必要条件 |
详细描述 |
License |
是否收费 |
|
免费使用 |
是否开源 |
|
开源 |
|
是否有技术支持 |
|
主要是社区支持,如果需要专业支持需要购买 |
|
商业目的的分发版本是否仍要收费 |
是 |
免费 |
|
其他 |
|
|
|
性能 |
数据容量支持 100000 条以上记录 |
是 |
支持 |
并发查询处理能力 |
|
SQLite 在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。 |
|
查询速度 |
是 |
|
|
修改速度 |
是 |
|
|
平台支持 |
32/64 位 |
|
全部支持 |
Linux/window/UNIX/mobile |
|
支持 Linux/Mac OS/Windows |
|
运行方式支持 |
支持嵌入式 |
|
支持 |
支持独立运行 |
|
不支持 |
|
连接方式支持 |
支持 ODBC |
|
默认不支持,必须通过第三方的 ODBC 驱动 |
支持 JDBC |
|
默认不支持,必须通过第三方的 JDBC 驱动 |
|
支持内存访问 |
|
通过 c 接口(专用 API ) |
|
支持网络访问 |
|
不支持 |
|
SQL 支持 |
支持 SQL |
是 |
支持 |
支持 Index , Trigger , Constrains , Views |
|
支持,有资料说其不支持外键约束。 |
|
管理界面 |
支持管理界面 |
|
支持 CLI |
管理界面友好程度 |
|
较差 |
4.2 Altibase
Altibase™ 内存数据库管理系统( DBMS ),内存数据管理系统的最新技术,是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。 Altibase 提供极限性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。 Altibase 能够最大限度的发挥数据库服务系统的潜力,使用 Altibase 能大大增强您公司的数据服务器的处理能力。
Altibase™ 内存 DBMS 为需要容错服务的系统提供实时数据库复制的功能。采用 Altibase 数据库复制的系统可以实现高性能、高可用性、数据库一致性、负载平衡和系统可伸缩性。如果您希望您的业务能够实现最大的成功,请在您的事务优先的系统中使用我们的 Altibase 数据库复制解决方案。
资料比较少,且需要商业 License ,没有详细去研究
4.3 Oracle 内存数据库系列 Berkeley DB 和 TimesTen
Oracle 是最重要的商业数据库产品提供商,它也有内存数据库的产品系列:主要就是 Oracle Berkeley DB 和 Times Ten. 前者是只支持嵌入式内存数据,后者是独立的内存优化数据库。
4.3.1 Oracle Berkeley DB
Oracle Berkeley DB 是 Oracle 收购了开源数据库厂商后推出的产品,其前身是 Berkeley DB 。它有开源版本,但且对于开源软件免费。商业版本是要付费。
Oracle Berkeley DB 系列的可嵌入开源数据库为开发人员提供了无需管理的快速、可靠的本地持久性。 Oracle Berkeley DB 系列通常部署为 “ 前沿 ” 数据库,为不需要 SQL 的应用程序用例提供很高的性能、可靠性、可伸缩性以及可用性。
Oracle Berkeley DB 产品系列
— Berkeley DB — 事务处理式存储引擎,用于基本键/ 值数据结构中的非类型化数据 — 新增!版本 4.7 现已推出
— 针对 Java 环境优化的纯 Java 版 Berkeley DB — 新增!版本 3.3
— Berkeley DB XML — 原生 XML 数据库,可基于 XQuery 访问容器中存储的文档,并根据其内容进行索引 — 新增!版本 2.4 现已推出
4.3.2 Oracle TimesTen
Oracle 内存数据库 TimesTen 是一个针对内存进行了优化的关系数据库,它为应用程序提供了当今实时企业和行业(如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。 Oracle 内存数据库 TimesTen 作为独立或嵌入式数据库部署在应用层中,利用标准的 SQL 接口对完全位于物理内存中的数据库进行操作。它也可以用作 Oracle 数据库的内存中数据库缓存,以改进用户应用程序的响应时间和吞吐量。
4.4 eXtremeDB
eXtremeDB 内存式实时数据库是为实时系统及嵌入式系统而特别设计的数据库。与同类产品不同, eXtremeDB 不是通过 对企业数据库面向实时嵌入式应用进行剪裁而来;而是总结了 30 年来 McObject 公司在编译器、实时编程、数据管理、内核级驱 动软件等领域的经验,面向实时嵌入式应用从头开发的最新实时数据管理技术。
eXtremeDB 满足了您对实时数据库的一切期待:高级数据定义语言、并行访问、基于交易及灵活的索引 … … 等等。不仅如此,出乎您的意外, eXtremeDB 在紧凑的引擎中还提供诸如事件触发、目标历史等等功能。
e Xtreme DB 嵌入式数据库满足更多的实时开发的要求。
· 最快的内存数据库。
· 多种索引支持
· 高可用性 - 组合选项
· 非常灵活的数据存储: 内存式,磁盘式或混合式
· 多种应用接口: 两种 SQL , 两种更快的原始接口
· 几乎牢不可破 -
又一个商业内存数据库产品,这个特点是实时数据库,号称最快。
发表评论
-
ORA-14551: 无法在查询中执行 DML 操作
2013-11-30 13:45 1351最近在调试一个带DML操作的函数时,一直不成功,在PL/SQ ... -
Oracle Recursive Calls 说明
2013-04-09 23:11 1483一. Recursive Calls 说明 在执行计划 ... -
consistent gets db block gets
2013-04-09 19:58 1427consistent gets :consistent_ge ... -
SQL Server数据导入到Oracle中的方法
2012-07-17 17:09 1587在我们使用SQL Server数据库的过程中,有时需要将SQL ... -
更改ORACLE归档路径及归档模式
2012-07-16 18:23 1858在ORACLE10g和11g版本,ORAC ... -
hibernate Restrictions用法 MatchMode.ANYWHERE
2012-07-14 15:50 3941方法 说明 Res ... -
URLClassLoader
2012-05-27 19:45 993This example shows how a serv ... -
MyClassLoader 自定义类加载器
2012-05-27 19:38 1504package demo; import java. ... -
disable/enable validate/novalidate 的区别
2012-01-08 11:41 1224启用约束: enable( validate) :启用约束,创 ... -
linux用dd测试磁盘速度
2012-01-07 21:58 1004首先要了解两个特殊的设备: /dev/null:回收站、 ... -
在数据分布严重不均的列上使用绑定变量容易错过更好的执行计划
2012-01-07 20:49 1009在数据分布严重不均的列上使用绑定变量容易错过更好的执行计划,原 ... -
Oracle hash join
2012-01-07 17:00 945hash join是oracle里面一个非常强悍的功能 ... -
恢复被rm意外删除数据文件
2012-01-05 12:30 1241一.模拟数据文件删除 [oracle ... -
oracle 块延迟清除(delayed block cleanout)
2012-01-04 22:47 1353为了保证事务的回退和满足多用户的 CR , orac ... -
Oracle数据库SCN号详解
2012-01-04 19:25 1534Oracle数据库SCN号详解: 系统检查点scn(v$da ... -
oracle常见问题与解答
2012-01-03 20:22 16631.对于sql,有几种方法查看执行计划,每种方法有什么区别,对 ... -
Deal with big-endian and little-endian order
2011-12-25 19:17 1113Java virtual machine always use ... -
Oracle虚拟私有数据库(VPD)概述及简单举例
2011-12-23 12:35 1540Oracle虚拟私有数据库(VPD)概述及简单举例 1、Ora ... -
alter table move跟shrink space的区别
2011-12-17 15:02 1269都知道alter table move 或shrink spa ... -
How to dump Oracle Data Block?
2011-12-16 15:22 992Often while doing instance tuni ...
相关推荐
内存数据库简介 内存数据库是一种将整个数据库存储在计算机的主存中,以提高数据库的性能和响应速度的技术。传统的数据库管理系统将所有数据存储在磁盘上,称为磁盘数据库(DRDB:Disk-Resident Database)。磁盘...
下面,我们将深入探讨几种常用的内存数据库,包括它们的特点、应用场景以及为何它们能够在现代数据处理环境中占据一席之地。 ### 1. **Redis** Redis(Remote Dictionary Server)是最受欢迎的内存数据库之一,它...
内存数据库是一种将数据存储在内存中的数据库系统,其主要特点是高速读写性能,适用于需要快速响应和处理大量数据的应用场景。在JAVA开发中,有很多开源的内存数据库可以选择,本篇文章将对比分析这些数据库的特点、...
实现词法分析和语法分析的内存小容量数据库,主要用于学习编译原理
常用内存数据库介绍.pdf
内存数据库是现代信息技术领域中的一个重要概念,特别是在实时交易系统中,它扮演着催化剂的角色,显著提高了数据处理的速度和效率。本文将深入探讨内存数据库的基本原理、优势、应用场景以及与实时交易系统的结合。...
哈希表是内存数据库中常用的一种数据结构,它在Linux环境下扮演着关键角色。 哈希表,又称散列表,是通过哈希函数将数据映射到一个固定大小的数组中。这个函数能够将任意长度的输入(如字符串)转化为固定长度的...
描述提到的“排序的列表的基类一种实时内存数据库组织与管理方法”,意味着文件内容可能涉及一种特定的数据结构——排序列表,这是内存数据库中常用的数据组织方式,用于快速查找、插入和删除数据。排序列表通常基于...
1. 数据映射:内存数据库会将常用数据表全部映射到主机共享内存中,同时为关键字段建立内存索引,以加速查询。 2. API接口:应用程序通过调用特定的内存数据库API,直接访问内存中的数据,而不是直接操作物理数据库...
- `ALTER SYSTEM`:调整数据库系统的参数,例如修改内存分配、日志文件位置等。 - `STARTUP/SHUTDOWN`:启动或关闭数据库实例。 2. **用户管理**: - `CREATE USER`:创建新的数据库用户。 - `GRANT/REVOKE`:...
《简易内存数据库(一)总述》这篇文章主要探讨了内存数据库的基本概念、设计原则和应用场景。内存数据库是一种将数据存储在计算机内存中的数据库系统,它相比传统的磁盘存储数据库具有更快的数据读写速度,尤其适合...
在VC++中,你可以通过传递`:memory:`作为数据库路径来创建内存数据库。CSqlite类可能提供一个`OpenInMemoryDatabase()`方法,调用此方法将创建一个只存在于内存中的数据库实例。 3. **临时数据库**: 临时数据库...
Hash索引是数据库系统中一种常用的索引技术,尤其适合于内存数据库。它利用哈希函数将数据的键(key)转化为内存地址,使得数据的查找、插入和删除操作能在常数时间内完成,极大地提高了数据访问效率。Hash索引的...
作为一个内存数据库,它的主要特点是数据存取速度快,支持多种数据结构,且提供了丰富的持久化策略。在Java开发中,Redis的使用非常常见,能够显著提升应用程序的响应速度和整体性能。 1. 数据结构: Redis支持...
IT资料 常用软件 内存数据库 jar包
3. **数据切分**:面对海量数据,内存数据库通常采用数据切分技术,通过Hash算法将数据分散到多个节点,均衡负载,提高并发处理能力。这有助于处理高并发查询请求,确保系统的稳定性。 4. **存储策略**:内存数据库...
【高性能模糊检索的内存数据库EMS】是一个专注于提供高效模糊查询能力的内存数据库系统。它针对大规模数据集,尤其是在需要快速响应复杂查询需求的场景下,展现出优越的性能。内存数据库因其将数据存储在内存中,...
内存数据库是现代计算机科学中的一个重要领域,特别是在高性能计算和实时数据处理方面有着广泛的应用。同济大学软件学院的这门课程旨在让学生深入理解内存数据库的工作原理,并通过实践提高其编程和设计能力。以下是...